I am trying to set up a rest sensor using GraphQL for tracking my parcel. (First time using GraphQL)
I can track my parcel just using the parcelnumber on the freight website, without any login.
Headers looks like this on freight site;
payload looks like this
query:
"{\n getTracking(parcelReference: \"X-XXXX\") {\n deliveryPoint {\n postalCode\n postalArea\n type\n __typename\n }\n events {\n additionalInfoApiKey\n apiKey\n freightProduct\n time\n shipmentNumber\n isHighlighted\n location\n messages {\n message\n title\n additionalMessage\n __typename\n }\n type\n __typename\n }\n noticeData {\n message\n title\n __typename\n }\n sender {\n postalCode\n postalArea\n __typename\n }\n shipmentNumber\n shopId\n status\n shop {\n id\n name\n logoUrl\n __typename\n }\n __typename\n }\n}"
variables: {}
Response looks like so:
{
"data": {
"getTracking": {
"deliveryPoint": {
"postalCode": "CODE",
"postalArea": "AREA",
"type": "UNKNOWN",
"__typename": "DeliveryPoint"
},
"events": [{
"additionalInfoApiKey": null,
"apiKey": "e_032",
"freightProduct": "fp_26",
"time": "2022-10-07T06:49:05Z",
"shipmentNumber": "XXXXXX",
"isHighlighted": false,
"location": "XXXXX",
"messages": {
"message": "Pakken er hentet av budet.",
"title": "",
"additionalMessage": "Pakken vil nå bli sendt til nærmeste terminal, hvor den vil bli sortert og sendt videre.",
"__typename": "Message"
},
"type": "IN_TRANSIT",
"__typename": "TrackingEvent"
}, {
"additionalInfoApiKey": null,
"apiKey": "e_001",
"freightProduct": "fp_26",
"time": "2022-10-06T20:12:10Z",
"shipmentNumber": "XXXXXXXX",
"isHighlighted": false,
"location": null,
"messages": {
"message": "Vi har fått beskjed om å hente en pakke hos avsender!",
"title": "Pakke registrert",
"additionalMessage": "Vi sender SMS/e-post når pakken er hentet av oss. Vi henter om natten og vil ikke sende melding før etter kl. 07 morgenen etter.",
"__typename": "Message"
},
"type": "REGISTERED",
"__typename": "TrackingEvent"
}],
"noticeData": null,
"sender": {
"postalCode": "XXXX",
"postalArea": "XXXXX",
"__typename": "PostalDetails"
},
"shipmentNumber": "XXXXX",
"shopId": 333,
"status": "IN_TRANSIT",
"shop": {
"id": 333,
"name": "FINN Torget",
"logoUrl": "https://solis.helthjem.no/images/shops/finn_logo.png",
"__typename": "Shop"
},
"__typename": "ParcelTracking"
}
}
}
My sensor:
rest:
- resource: "https://services.helthjem.no/graphql"
scan_interval: 3600
method: POST
payload: >-
'{"query": "{
getTracking(parcelReference: "XXXXXX") {
deliveryPoint {
postalCode
postalArea
type
__typename
}
events {
additionalInfoApiKey
apiKey
freightProduct
time
shipmentNumber
isHighlighted
location
messages {
message
title
additionalMessage
__typename
}
type
__typename
}
noticeData {
message
title
__typename
}
sender {
postalCode
postalArea
__typename
}
shipmentNumber
shopId
status
shop {
id
name
logoUrl
__typename
}
__typename
}
}"}'
headers:
Content-Type: application/json
sensor:
- name: helt_hjem
value_template: "{{ value_json.data }}"
#data.getTracking.events[0].messages.message
json_attributes:
- "data"
I am interested in data.getTracking.events[0].messages.additionalMessage
Getting the JSON out as attribute could work as well.
