Auf die API zugreifen

Letze Aktualisierung: 
May 5, 2025
API
App
Web
Bevor du anfängst

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

Hinweis

Falls du bereits eine Schnittstelle zu einem unserer Partner hast (wie zum Beispiel dem AccommoDataHub von Hotellerie Suisse) kannst du einige Daten auch von dort beziehen.

Profi-Tipp

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

In diesem Leitfaden:

Häufig gestellte Fragen

URL - Endpunkte

#
0
  1. Ergänze deinen Filter mit den entsprechenden Informationen.

Endpunkt für die produktive Umgebung.

POST api.ginto.guide/graphql

Endpunkt für die Testumgebung:

POST api.dev.ginto.guide/graphql

Autorisierung

#
1
  1. Ergänze deinen Filter mit den entsprechenden Informationen.

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

Authorization: Bearer {token}

Der API-Schlüssel kann durch eine kurze Nachricht an info@ginto.guide angefordert werden.

Daten-Schema

#
3
  1. Ergänze deinen Filter mit den entsprechenden Informationen.

Paginierung

#
4
  1. Ergänze deinen Filter mit den entsprechenden Informationen.

Das Konzept basiert auf Verbindungen und Kanten, die in GraphQL ein Quasi-Standard für die Paginierung sind. Bei Abfragen, die eine Paginierung ermöglichen, können die Argumente first und after sowie eine angeforderte pageInfo festgelegt werden. Das erste Argument definiert, wie viele Elemente mit der Anfrage zurückgegeben werden sollen. Aus Leistungsgründen darf dieser Wert nicht höher als 50 sein. Die pageInfo enthält einen endCursor, der den Cursor des letzten Elements auf der Seite definiert. Dieser endCursor kann dann für das after-Argument der nächsten Anfrage verwendet werden, um die nachfolgenden Elemente nach dem endCursor zu erhalten. Die Parameter zur Steuerung der Seitennummerierung sind im Schema dokumentiert.

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, nehmen wir den endCursor der vorherigen Antwort und setzen 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
            }
        }
    }
}

Sprache

#
5
  1. Ergänze deinen Filter mit den entsprechenden Informationen.

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.

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

Alle Einträge abrufen

#
7
  1. Ergänze deinen Filter mit den entsprechenden Informationen.
{
    allEntries {
        totalCount
        pageInfo {
            hasNextPage
            endCursor
        }
        edges {
            node {
                id
                sourceIds(sourceKey: "zuerst")   // at the moment only available for business users
                name
								position {
                    street
                    housenumber
                    postcode
                    city
                    lat
                    lng
                }
                externalRatings(sourceKey: "zuerst") {
                    iconUrl
                    descriptionDE: description(locale: DE)
                    descriptionFR: description(locale: FR)
                    descriptionIT: description(locale: IT)
                    descriptionEN: description(locale: EN)
                    grade
                }
                publication {
                    iconUrl
                    iconTextDE: iconText(locale: DE)
                    iconTextFR: iconText(locale: FR)
                    iconTextIT: iconText(locale: IT)
                    iconTextEN: iconText(locale: EN)
                    linkUrl
                    linkTextDE: linkText(locale: DE)
                    linkTextFR: linkText(locale: FR)
                    linkTextIT: linkText(locale: IT)
                    linkTextEN: linkText(locale: EN)
                }
            }
        }
    }
}

Outro

Einzelnen Eintrag nach ID abrufen

#
8
  1. Ergänze deinen Filter mit den entsprechenden Informationen.
{
	entry(entryId: "ee659e74-295f-4285-8c3d-d90f232efa44") {
    entryId
    name
    externalRatings(sourceKey: "zuerst") {
      iconUrl
      description
      grade
    }
    publication {
      linkUrl
      linkText
    }
    licenseInfo {
      license
      attribution
      isOpenData
    }
    manualWheelchairAccessibility: accessibility(ratingProfileId: "Z2lkOi8vcmFpbHMtYXBwL1JhdGluZ1Byb2ZpbGVzOjpSYXRpbmdQcm9maWxlLzc4") {
      grade
      conformance
  	}
    powerWheelchairAccessibility: accessibility(ratingProfileId: "Z2lkOi8vcmFpbHMtYXBwL1JhdGluZ1Byb2ZpbGVzOjpSYXRpbmdQcm9maWxlLzc5") {
      grade
      conformance
  	}
    pushchairAccessibility: accessibility(ratingProfileId: "Z2lkOi8vcmFpbHMtYXBwL1JhdGluZ1Byb2ZpbGVzOjpSYXRpbmdQcm9maWxlLzgw") {
      grade
      conformance
  	}
  }
}

Outro

Filtern

#
9
  1. Ergänze deinen Filter mit den entsprechenden Informationen.
In diesem Beispiel werden ....
{
  entriesByFilter(filterId: "Z2lkOi8vcmFpbHMtYXBwL0dyb3VwaW5nOjpFbnRyeUdyb3VwL2U2Y2I1ZTU4LTE0MDQtNDk5Mi05YjY1LTlkNjc1MTJmZTRiMg", first: 50, after: "NTA") {
    totalCount
		pageInfo {
    	hasNextPage
      endCursor
    }
    edges {
      node {
        id
        sourceIds(sourceKey: "parks.swiss")   // at the moment only available for business users
        name
        externalRatings(sourceKey: "zuerst") {
          iconUrl
          description
          grade
        }
        publication {
          iconUrl
          iconText
          linkUrl
          linkText
        }
        licenseInfo {
          license
          attribution
          isOpenData
        }
		    wheelchairAccessibility: accessibility(ratingProfileId: "Z2lkOi8vcmFpbHMtYXBwL1JhdGluZ1Byb2ZpbGVzOjpSYXRpbmdQcm9maWxlLzc4") {
		      grade
		      conformance
		  	}
      }
    }
  }
}

Im folgenden Beispiel werden alle Eingabefilter abgerufen, für die der Benutzer berechtigt ist. Die ID kann dann für die Abfrage entriesByFilter verwendet werden.

{ 
	entryFilters {
    		id
    		name
    		createdAt
    		updatedAt
    		categoryKeys
    		sources
    		qualityLevels
    		postcodes
    }
 }‍

Outro

Outro

Einträge nach Koordinate und Name abrufen

#
9
  1. Ergänze deinen Filter mit den entsprechenden Informationen.
{
    entriesBySearch(lat: 47.4224806, lng: 9.3760095, query: "palace", within: 5) {
        totalCount
        pageInfo {
            hasNextPage
            endCursor
        }
        edges {
            node {
                id
                name
								position {
                    street
                    housenumber
                    postcode
                    city
                    lat
                    lng
                }
                publication {
                    iconUrl
                    iconTextDE: iconText(locale: DE)
                    iconTextFR: iconText(locale: FR)
                    iconTextIT: iconText(locale: IT)
                    iconTextEN: iconText(locale: EN)
                    linkUrl
                    linkTextDE: linkText(locale: DE)
                    linkTextFR: linkText(locale: FR)
                    linkTextIT: linkText(locale: IT)
                    linkTextEN: linkText(locale: EN)
                }
            }
        }
    }
}

To request the next 50 entries we take the endCursor of the previous response and set it for the after argument of the next request as follows:

Outro

Entry by Source

#
10
  1. 1
  2. 2
  3. 3
  4. Ergänze deinen Filter mit den entsprechenden Informationen.
  5. 5

Code

So wie bei PI jetzt

Profile

#
11
  1. Ergänze deinen Filter mit den entsprechenden Informationen.
{
	ratingProfiles {
    id
    name
  }
}

Outro

Häufig gestellte Fragen zum Thema

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

Das könnte dich auch interessieren