Die Ginto-API

Letzte Aktualisierung: 
7/4/2026
API
App
Web
Bevor du startest

Die API ist geschützt und kann nur aufgerufen werden, wenn die Anfrage mithilfe eines API-Schlüssels authentifiziert wird. Dieser muss bei jeder Anfrage als Bearer-Token im Authorization-Header angegeben werden. Wende dich an support@ginto.guide, um einen API-Schlüssel für die API-Autorisierung zu erhalten.

Hinweis

Hast du bereits eine Schnittstelle zu einer unserer Partnerorganisationen, zum Beispiel zum AccommoDataHub von HotellerieSuisse? Dann kannst du einige Informationen zur Zugänglichkeit, wie etwa Ginto-Weblinks oder Piktogramme, auch von dort beziehen.

Profi-Tipp

Nutze unseren Ginto-Test-Workspace in Postman, um die verschiedenen Abfragen zu testen.

Das findest du in dieser Anleitung:

OK:GO-Nachweis für die Teilnahme bei «Swisstainable» beantragen
Häufig gestellte Fragen

Einführung

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

Erfahre mehr über GraphQL.

Autorisierung

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

Der API-Schlüssel muss bei jeder Anfrage als Bearer-Token im Authorization-Header bereitgestellt werden:

Authorization: Bearer {apiKey}

Ersetze {apiKey} durch deinen persönlichen Schlüssel, ohne die geschweiften Klammern.

Anfrage senden

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

Anfragen werden als JSON mit folgender Struktur im Anfragetext gesendet:

{
  "query": "{ allEntries(first: 10) { nodes { id name } } }",
  "variables": {}
}

Die Anfrage ist an die Endpunkt-URL https://api.ginto.guide/graphql zu senden und muss die folgenden Informationen enthalten:

  • Content-Type: application/json (Header)
  • Accept: application/graphql-response+json, application/json (Header)
  • Authorization: Bearer {apiKey} (Header mit deinem API-Key)
  • Optional: Accept-Language (Header, um die gewünschte Sprache anzugeben: de, en, fr oder it)

Bei erfolgreichen Vorgängen antwortet der Server mit einem JSON-Objekt, das das data-Objekt enthält. Tritt ein Fehler auf, kann die Antwort ein errors-Array enthalten. In diesem Fall ist das data-Objekt entweder NULL oder nur teilweise vorhanden.

Beispiel mit cURL

curl -X POST https://api.ginto.guide/graphql \
  -H "Content-Type: application/json" \
  -H "Accept: application/graphql-response+json, application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept-Language: de" \
  -d '{"query":"{ allEntries(first: 10) { nodes { id name } } }","variables":{}}'

Ersetze YOUR_API_KEY durch deinen tatsächlichen API-Schlüssel. Der Accept-Language-Header ist optional. Entferne ihn oder ändere de (Deutsch) bei Bedarf in en (Englisch), fr (Französisch) oder or it (Italienisch).

Testen mit Postman

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

Durch Klicken auf diesen Link wird die Anfragesammlung von Ginto automatisch geklont und du kannst mit der Erkundung der Ginto-API beginnen.

Um den API-Schlüssel in Postman zu setzen, öffne die Umgebung production und lege dort die Variable apiKey mit deinem tatsächlichen API-Schlüssel an. Aktiviere anschliessend die Umgebung. Nun bist du bereit, eine Anfrage zu senden.

Postman kann online genutzt und kostenlos heruntergeladen werden. Hier findest du eine detaillierte Anleitung zur Erstellung von GraphQL-Abfragen in Postman.

Sprache einstellen

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

Die Standardsprache der zurückgegebenen Daten kann durch setzen des HTTP-Headers Accept-Language ausgewählt werden. Derzeit werden die Optionen de (Deutsch), en (Englisch), fr (Französisch) und it (Italienisch) unterstützt.

Hier findest du weitere Informationen zum HTTP header Accept-Language.

Bei Texten, die in mehreren Sprachen verfügbar sind, kann auch über das Feld Argument eine bestimmte Sprache festgelegt werden.

Übersicht der Anfragen

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
Anfrage Beschreibung
allEntries Ruft eine Liste aller Einträge in Ginto ab.
entriesByFilter Ruft eine Liste aller Einträge innerhalb eines vordefinierten Publikationsfilters ab. Ein Publikationsfilter kann Einträge nach verschiedenen Kriterien filtern und muss beim Ginto-Support-Team angefordert werden.
entriesBySearch Sucht nach Einträgen in der Nähe einer Koordinate und/oder über einen Suchtext.
entry Ruft Daten für einen spezifischen Eintrag ab, der durch seine ID definiert ist.
deletedEntries Ruft eine Liste aller IDs von Einträgen ab, die gelöscht wurden.
availableCategories Ruft eine Liste aller verfügbaren Kategorien ab.
availableDefaultRatings Ruft eine Liste aller verfügbaren Standardbewertungen ab, die jeweils ein Piktogramm und eine kurze Zusammenfassung der Zugänglichkeit dieses Eintrags enthalten. Die Standardbewertungen eines Eintrags sollten für die Veröffentlichung der Barrierefreiheit auf externen Webseiten verwendet werden.
availableFilterTags Ruft eine Liste aller verfügbaren Filter-Tags ab. Ein Filter-Tag ist ein vordefiniertes Schlüsselwort, das Einträgen zugewiesen werden kann und hilft, nach spezifischen Merkmalen zu filtern.
availablePublicationFilters Ruft eine Liste aller Publikationsfilter ab, für die der Benutzer Berechtigungen besitzt. Ein Publikationsfilter muss beim Ginto-Support-Team angefordert werden.
availableRatingProfiles Ruft eine Liste aller vordefinierten Bewertungsprofile ab. Im Gegensatz zu den Standardbewertungen kann ein Bewertungsprofil (z. B. „Rollstuhl“) verwendet werden, um eine Bewertung basierend auf diesem Profil zu berechnen, während die Standardbewertungen mögliche Bewertungsergebnisse definieren (z. B. „Teilweise rollstuhlgerecht“).
availableSources Ruft eine Liste aller externen Quellen ab, die mit Einträgen in Ginto verknüpft sind.

Datenschema

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

Die meisten GraphQL-Applikationen können das Schema automatisch über Introspection abrufen und bieten folgende Funktionen:

  • Automatische Vervollständigung für Felder und Argumente
  • Inline-Dokumentation aller verfügbaren Abfragen und Felder
  • Validierung von Abfragen vor dem Absenden von Anfragen

Tools wie Postman, Bruno, Insomnia und viele GraphQL-IDEs unterstützen dies standardmässig und zeigen die Schemadokumentation direkt in ihren Tools an.

Seitenaufteilung (Paginierung)

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

Das Konzept basiert auf Connections und Edges, was in GraphQL quasi als Standard für die Paginierung gilt. Die Paginierung nutzt ein Cursor-basiertes Modell mit folgenden Argumenten:

  • first: Anzahl der zurückzugebenden Elemente (maximal: 50)
  • after: Cursor des letzten Elements der vorherigen Seite (bei der ersten Seite weglassen)

Paginierte Abfragen liefern Folgendes zurück:

  • nodes: die eigentlichen Elemente
  • pageInfo.endCursor: Cursor für das letzte Element der aktuellen Seite
  • pageInfo.hasNextPage: gibt an, ob eine weitere Seite vorhanden ist
  • totalCount: Gesamtzahl der Elemente (sofern von der Abfrage unterstützt)

Beispiel

Für die erste Seite muss kein after-Argument festgelegt werden. Die folgende Anfrage gibt die ersten 50 Einträge zusammen mit einer pageInfo zurück, die den endCursor der Seite enthält.

{
    allEntries(first: 50) {
        totalCount
        pageInfo {
            hasNextPage
            endCursor
        }
        edges {
            node {
                id
                name
            }
        }
    }
}

Um die nächsten 50 Einträge anzufordern, verwende den endCursor der vorherigen Antwort und setze ihn wie folgt für das After-Argument der nächsten Anforderung:

{
    allEntries(first: 50, after: "NTA") {
        totalCount
        pageInfo {
            hasNextPage
            endCursor
        }
        edges {
            node {
                id
                name
            }
        }
    }
}

Beispiel: Informationen zur Zugänglichkeit abrufen

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

Nutze diese Abfrage, um Informationen wie die Ginto-Weblinks und Standardbewertungen für bestimmte Lokalitäten abzurufen. Integriere sie zusammen mit anderen Daten, wie beispielsweise den Öffnungszeiten, auf deiner Webseite. Hier findest du ein Anwendungsbeispiel.

Um eine effiziente Filterung zu erreichen, kann das Ginto-Supportteam einen Veröffentlichungsfilter mit verschiedenen Filterparametern (Kategorie, Quelle, Postleitzahl, Prüfstatus, Detailstufe) für dich konfigurieren. Gibst du die filterId dieses Veröffentlichungsfilters in die Abfrage ein, gibt die API-Anfrage nur Einträge zurück, die dem Veröffentlichungsfilter entsprechen.

Variante ohne Unterbereiche

Mithilfe der folgenden Abfrage kannst du alle Einträge abrufen, die einem Veröffentlichungsfilter entsprechen. Du erhältst dabei auch Informationen zu Name, Position, Adresse, Standardbewertungen und dem Ginto-Weblink des jeweiligen Eintrags.

{
    entriesByFilter(filterId: "0ace704e-db54-41c1-aa45-8f5d1e45cc27") {
        totalCount
        pageInfo {
            endCursor
            hasNextPage
            hasPreviousPage
            startCursor
        }
        nodes {
            entryId
            name
            createdAt
            updatedAt
            categories {
                groupKey
                groupName
                key
                name
            }
            position {
                street
                housenumber
                postcode
                city
                countryCode
                lat
                lng
            }
            accessibilityInfo {
                defaultRatings {
                    descriptionDE: description(locale: DE)
                    descriptionEN: description(locale: EN)
                    descriptionFR: description(locale: FR)
                    descriptionIT: description(locale: IT)
                    iconUrl
                    key
                }
            }
            publication {
                linkTextDE: linkText(locale: DE)
                linkTextEN: linkText(locale: EN)
                linkTextFR: linkText(locale: FR)
                linkTextIT: linkText(locale: IT)
                linkUrl
            }
            licenseInfo {
                attribution
                isOpenData
                license
            }
            sources {
                originIds
                sourceKey
                sourceName
            }
        }
    }
}

accessibilityInfo.defaultRatings: Enthält eine Liste aller für den Eintrag berechneten Standardbewertungen. Eine Standardbewertung umfasst ein Piktogramm und eine kurze Zusammenfassung eines bestimmten Aspekts der Zugänglichkeit des jeweiligen Ginto-Eintrags. Verwende die Standardbewertungen eines Ginto-Eintrags, um die Zugänglichkeit einer Lokalität auf deiner Webseite zu veröffentlichen.

publication.linkUrl: Enthält eine URL zum Ginto-Weblink des jeweiligen Eintrags, auf der alle detaillierten Informationen zur Zugänglichkeit zu finden sind. Füge diesen Link immer ein, wenn du die Zugänglichkeit von Lokalitäten auf deiner Webseite veröffentlichst.

Variante mit Unterbereichen

Falls für jeden Bereich innerhalb eines Eintrags die Standardbewertungen und der Ginto-Weblink abgerufen werden müssen, kann die obige Abfrage wie folgt erweitert werden:

{
    entriesByFilter(filterId: "0ace704e-db54-41c1-aa45-8f5d1e45cc27") {
        totalCount
        pageInfo {
            endCursor
            hasNextPage
            hasPreviousPage
            startCursor
        }
        nodes {
            entryId
            name
            createdAt
            updatedAt
            categories {
                groupKey
                groupName
                key
                name
            }
            position {
                street
                housenumber
                postcode
                city
                countryCode
                lat
                lng
            }
            accessibilityInfo {
                defaultRatings {
                    descriptionDE: description(locale: DE)
                    descriptionEN: description(locale: EN)
                    descriptionFR: description(locale: FR)
                    descriptionIT: description(locale: IT)
                    iconUrl
                    key
                }
            }
            publication {
                linkTextDE: linkText(locale: DE)
                linkTextEN: linkText(locale: EN)
                linkTextFR: linkText(locale: FR)
                linkTextIT: linkText(locale: IT)
                linkUrl
            }
            licenseInfo {
                attribution
                isOpenData
                license
            }
            sources {
                originIds
                sourceKey
                sourceName
            }
            areas {
                areaTemplateKey
                id
                name
                accessibilityInfo {
                    defaultRatings {
                        descriptionDE: description(locale: DE)
                        descriptionEN: description(locale: EN)
                        descriptionFR: description(locale: FR)
                        descriptionIT: description(locale: IT)
                        iconUrl
                        key
                    }
                }
                publication {
                    linkTextDE: linkText(locale: DE)
                    linkTextEN: linkText(locale: EN)
                    linkTextFR: linkText(locale: FR)
                    linkTextIT: linkText(locale: IT)
                    linkUrl
                }
                subAreas {
                    areaTemplateKey
                    id
                    name
                    accessibilityInfo {
                        defaultRatings {
                            descriptionDE: description(locale: DE)
                            descriptionEN: description(locale: EN)
                            descriptionFR: description(locale: FR)
                            descriptionIT: description(locale: IT)
                            iconUrl
                            key
                        }
                    }
                    publication {
                        linkTextDE: linkText(locale: DE)
                        linkTextEN: linkText(locale: EN)
                        linkTextFR: linkText(locale: FR)
                        linkTextIT: linkText(locale: IT)
                        linkUrl
                    }
                }
            }
        }
    }
}

OK:GO-Nachweis für «Swisstainable» beantragen

OK:GO wird als Nachweis innerhalb des Nachhaltigkeitsprogramms «Swisstainable» auf Level II - engaged (in Kombination) anerkannt. Eine Übersicht über alle anerkannten Nachhaltigkeitsnachweise findest du hier.

Ein OK:GO-Nachweis für die Teilnahme bei «Swisstainable» kann über dieses Webformular beantragt werden. Ein Nachweis wird dann ausgestellt, wenn die Teilnahmebedingungen erfüllt sind. Der OK:GO-Nachweis ist ab dem Datum der Ausstellung zwei Jahre gültig.
Vielen Dank, wir haben deinen Antrag erhalten und melden uns in den kommenden Tagen bei dir.
Oha, da hat etwas nicht geklappt. Bitte versuche es noch einmal.

Häufig gestellte Fragen

Zu dieser Anleitung gibt es bisher keine häufig gestellten Fragen.

Das könnte dich auch interessieren