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