Repeat fault check
curl --request POST \
--url https://api.sortx.co.uk/maintenance-pro/repeat-fault/check \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"sourceId": "<string>",
"sourceVersion": "<string>",
"contactId": "<string>",
"text": "<string>",
"receivedAt": "<string>"
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sourceId: '<string>',
sourceVersion: '<string>',
contactId: '<string>',
text: '<string>',
receivedAt: '<string>'
})
};
fetch('https://api.sortx.co.uk/maintenance-pro/repeat-fault/check', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sortx.co.uk/maintenance-pro/repeat-fault/check"
payload = {
"sourceId": "<string>",
"sourceVersion": "<string>",
"contactId": "<string>",
"text": "<string>",
"receivedAt": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"state": "matched",
"match": {
"previous": {
"id": "<string>",
"reference": "<string>",
"title": "<string>",
"description": "<string>",
"contractor": {
"contactId": "<string>",
"name": "<string>"
},
"fixedAt": "<string>",
"closedAt": "<string>",
"completionNote": "<string>",
"tenantConfirmedFixed": true,
"invoice": {
"amountMinor": 123,
"currency": "<string>",
"paid": true
}
},
"reasons": [
"same_property"
],
"room": "<string>",
"faultLabel": "<string>",
"daysSinceClosed": 123,
"recommended": "recall",
"nextReference": "<string>",
"complaint": {
"suggested": true,
"acknowledgeBy": "<string>",
"code": "<string>"
}
},
"decision": {
"choice": "recall",
"repairId": "<string>",
"reference": "<string>",
"previousRepairId": "<string>",
"complaintId": "<string>",
"complaintReference": "<string>",
"offeredTo": {
"contactId": "<string>",
"name": "<string>"
},
"offerRefused": "<string>",
"decidedAt": "<string>"
}
}{
"_tag": "TenantCreateRejected",
"reason": "<string>",
"field": "<string>"
}{
"_tag": "Unauthenticated"
}{
"_tag": "TenantSuspended",
"tenantId": "<string>",
"reason": "<string>"
}{
"_tag": "EntitlementMissing",
"tenantId": "<string>",
"moduleId": "<string>"
}{
"_tag": "TenantNotFound",
"slug": "<string>"
}{
"_tag": "WebhookDuplicate",
"integration": "<string>",
"externalId": "<string>"
}{
"_tag": "RateLimited",
"key": "<string>",
"retryAfterSeconds": 123,
"message": "<string>"
}{
"_tag": "IntegrationUnavailable",
"integration": "<string>",
"detail": "<string>"
}maintenance-pro
Repeat fault check
Whether a tenant’s message reads as a repair finished in the last 30 days coming back (read once per message)
POST
/
maintenance-pro
/
repeat-fault
/
check
Repeat fault check
curl --request POST \
--url https://api.sortx.co.uk/maintenance-pro/repeat-fault/check \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"sourceId": "<string>",
"sourceVersion": "<string>",
"contactId": "<string>",
"text": "<string>",
"receivedAt": "<string>"
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sourceId: '<string>',
sourceVersion: '<string>',
contactId: '<string>',
text: '<string>',
receivedAt: '<string>'
})
};
fetch('https://api.sortx.co.uk/maintenance-pro/repeat-fault/check', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sortx.co.uk/maintenance-pro/repeat-fault/check"
payload = {
"sourceId": "<string>",
"sourceVersion": "<string>",
"contactId": "<string>",
"text": "<string>",
"receivedAt": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"state": "matched",
"match": {
"previous": {
"id": "<string>",
"reference": "<string>",
"title": "<string>",
"description": "<string>",
"contractor": {
"contactId": "<string>",
"name": "<string>"
},
"fixedAt": "<string>",
"closedAt": "<string>",
"completionNote": "<string>",
"tenantConfirmedFixed": true,
"invoice": {
"amountMinor": 123,
"currency": "<string>",
"paid": true
}
},
"reasons": [
"same_property"
],
"room": "<string>",
"faultLabel": "<string>",
"daysSinceClosed": 123,
"recommended": "recall",
"nextReference": "<string>",
"complaint": {
"suggested": true,
"acknowledgeBy": "<string>",
"code": "<string>"
}
},
"decision": {
"choice": "recall",
"repairId": "<string>",
"reference": "<string>",
"previousRepairId": "<string>",
"complaintId": "<string>",
"complaintReference": "<string>",
"offeredTo": {
"contactId": "<string>",
"name": "<string>"
},
"offerRefused": "<string>",
"decidedAt": "<string>"
}
}{
"_tag": "TenantCreateRejected",
"reason": "<string>",
"field": "<string>"
}{
"_tag": "Unauthenticated"
}{
"_tag": "TenantSuspended",
"tenantId": "<string>",
"reason": "<string>"
}{
"_tag": "EntitlementMissing",
"tenantId": "<string>",
"moduleId": "<string>"
}{
"_tag": "TenantNotFound",
"slug": "<string>"
}{
"_tag": "WebhookDuplicate",
"integration": "<string>",
"externalId": "<string>"
}{
"_tag": "RateLimited",
"key": "<string>",
"retryAfterSeconds": 123,
"message": "<string>"
}{
"_tag": "IntegrationUnavailable",
"integration": "<string>",
"detail": "<string>"
}Authorizations
A workspace API key (Settings → API keys), scoped to <group>:read / <group>:write.
Body
application/json