Zum Hauptinhalt springen

Graphql

Meister1 verwendet eine Graphql API. Graphql ist eine Abfragesprache die dem Client erlaubt selbst zu bestimmen welche Daten er braucht.

Hier wollen wir kurz zeigen, wie eine HTTP-Anfrage in Graphql aussieht. Ausserdem werden wir einige typische Fallbeispiele betrachten.

Endpoint: https://api.meister1.com/graphql

caution

Für die Abfragen muss ein Authorization Header mit dem accessToken verwendet werden (Siehe Autorisierung)

Allgemein

Grundsätzlich sieht jede Anfrage gleich aus. Es ist ein POST Request. Im Body wird das Schema definiert, welches man als Antwort erwartet.

Request

query {
viewer {
id
email
}
}

cURL

curl 'https://api.meister1.com/graphql' -H 'Content-Type: application/json' \
--data-binary '{"query":"query {\n viewer {\n id\n email\n }\n}"}' --compressed

Response

{
"data": {
"viewer": {
"id": "VSFlcgox",
"email": "user@meister1.de"
}
}
}

Lead abrufen

Request

query {
lead(id: 123456789) {
leadId
salutation
firstName
lastName
address {
street
streetNo
city
zip
lat
lng
}
email
phone
distance
salesStatus
assignee {
firstName
lastName
}
transactions {
flowInputFieldGroups {
label
name
fields {
name
label
values {
label
name
}
}
}
calculations {
... on RetailOffer {
offerNumber
totalPrice
totalPriceNet
totalPriceVat
vat
createdAt
areas {
pos
groups {
pos
title
priceSalesNet
pricePurchaseNet
priceWagesNet
priceTotalNet
positions {
pos
title
description
priceSalesNet
pricePurchaseNet
priceWagesNet
priceTotalNet
items {
pos
title
description
amount
status
unit
priceSalesNet
pricePurchaseNet
priceWagesNet
priceTotalNet
orderNumber
}
}
}
}
}
documents {
id
publicUrl
label
fileName
mime
name
}
}
}
createdAt
}
}

Response

{
"data": {
"lead": {
"leadId": 123456789,
"salutation": "MR",
"firstName": "Max",
"lastName": "Müller",
"address": {
"street": "Neue Promenade",
"streetNo": "3",
"city": "Berlin",
"zip": "10178",
"lat": null,
"lng": null
},
"email": "karol.wyszynski@meister1.de",
"phone": "+49 123123",
"distance": null,
"salesStatus": "OPEN",
"assignee": {
"firstName": "Max",
"lastName": "Mustermann"
},
"transactions": [
{
"flowInputFieldGroups": [
{
"label": "Brennstoff",
"name": "brennstoff",
"fields": [
{
"name": "brennstoff_wunsch",
"label": "Womit möchten Sie in Zukunft heizen?",
"values": [
{
"label": "Erdgas",
"name": "gas"
}
]
},
{
"name": "brennstoff_aktuell",
"label": "Womit heizen Sie aktuell?",
"values": [
{
"label": "Gas",
"name": "gas"
}
]
}
]
}
],
"calculations": [
{
"offerNumber": "M1-HT-7067",
"totalPrice": 10273.66,
"totalPriceNet": 8633.33,
"totalPriceVat": 1640.33,
"vat": 19,
"createdAt": 1695040527603,
"areas": [
{
"pos": "1",
"groups": [
{
"pos": "1.1",
"title": "Demontage der Altanlage",
"priceSalesNet": 17,
"pricePurchaseNet": 15,
"priceWagesNet": 252,
"priceTotalNet": 269,
"positions": [
{
"pos": "1.1.1",
"title": "Demontage",
"description": "<br><p>Die Demontage eines bestehenden Gaskessels ist nicht im Angebot enthalten.2</p><br>Demontage und umweltgerechte Entsorgung eines Warmwasserspeichers (aus dem Keller bis 200 Liter)<br>Rückbau vorhandener Gaszähler und Gasleitungen<br><b>Wir schützen Ihren Wohnbereich während der Montagearbeiten.</b><br>\n Um das zu gewährleisten, werden von uns sämtliche Böden und Treppen im Haus, die als Arbeitsplatz oder Weg benötigt werden, mit Schutzflies abgedeckt und Kanten mit Kantenschutz versehen!",
"priceSalesNet": 17,
"pricePurchaseNet": 15,
"priceWagesNet": 252,
"priceTotalNet": 269,
"items": [
{
"pos": "1.1.1.1",
"title": "Demontage und umweltgerechte Entsorgung eines Warmwasserspeichers (aus dem Keller bis 200 Liter)",
"description": "Demontage und umweltgerechte Entsorgung eines Warmwasserspeichers (aus dem Keller bis 200 Liter)",
"amount": 1,
"status": "ACTIVE",
"unit": "Psch",
"priceSalesNet": 12,
"pricePurchaseNet": 10,
"priceWagesNet": 114,
"priceTotalNet": 126,
"orderNumber": "HA-05090"
},
{
"pos": "1.1.1.2",
"title": "Rückbau Gasanschluss inkl. Zähler und Gasleitungen bis 7m",
"description": "Rückbau vorhandener Gaszähler und Gasleitungen",
"amount": 1,
"status": "ACTIVE",
"unit": "Psch",
"priceSalesNet": 5,
"pricePurchaseNet": 5,
"priceWagesNet": 108,
"priceTotalNet": 113,
"orderNumber": "HA-05252"
},
{
"pos": "1.1.1.3",
"title": "Einrichtung der Baustelle",
"description": "<b>Wir schützen Ihren Wohnbereich während der Montagearbeiten.</b><br>\n Um das zu gewährleisten, werden von uns sämtliche Böden und Treppen im Haus, die als Arbeitsplatz oder Weg benötigt werden, mit Schutzflies abgedeckt und Kanten mit Kantenschutz versehen!",
"amount": 1,
"status": "ACTIVE",
"unit": "Psch",
"priceSalesNet": 0,
"pricePurchaseNet": 0,
"priceWagesNet": 30,
"priceTotalNet": 30,
"orderNumber": "HA-05230"
}
]
}
]
}
]
}
],
"documents": [
{
"publicUrl": "https://impex.meister1.com/download/e95pweea-030b-45ca-a5a8-05e0a538z433-a27b4111-f9a5-4d7f-8f64-0bbc0b46c0bd-123jus3hh4.pdf",
"label": "Angebot",
"fileName": "M1-HT-7067 Angebot.pdf",
"mime": "text/plain; charset=windows-1252",
"name": "pdf"
},
{
"publicUrl": "https://impex.meister1.com/download/88387eaf-67c0-48a7-9403-70c668ecadc1-fc9b043f-311e-42ac-b577-1566749773a3.xml",
"label": "XI:OPD",
"fileName": "M1-HT-7067 XI:OPD.xml",
"mime": "text/xml; charset=utf-8",
"name": "opd_export"
}
]
}
]
}
],
"createdAt": 1695040497329
}
}
}