Ga naar hoofdinhoud

GraphQL

Meister1 maakt gebruik van een GraphQL API. GraphQL is een querytaal waarmee de client kan bepalen welke gegevens hij nodig heeft.

Hier laten we kort zien hoe een HTTP-verzoek in GraphQL eruitziet. We bekijken ook enkele typische gebruikssituaties.

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

pas op

Voor de queries moet een Authorization-header met het accessToken worden gebruikt (zie Autorisatie)

Algemeen

In principe ziet elk verzoek er hetzelfde uit. Het is een POST-verzoek. Het schema dat als antwoord wordt verwacht, is gedefinieerd in de body.

Verzoek

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

Antwoord

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

Een lead ophalen

Verzoek

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
}
}

Antwoord

{
"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://api.lokalleads.de/output/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://api.lokalleads.de/output/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
}
}
}