Repair & Claims Services
Overview
Purpose
End-to-end claims processing and repair service coordination with logistics management and customer communication automation.
Description
The repair and claims system manages the complete service lifecycle from initial claim submission through repair completion and device return. It coordinates with repair facilities, manages logistics, tracks service progress, and maintains customer communication throughout the process. The system integrates with inventory management, payment processing, and customer service platforms.
Claims Processing
- Automated damage assessment using AI image analysis
- Repair cost estimation and approval workflows
- Service provider network management
- Parts inventory and procurement coordination
- Quality assurance and warranty management
Logistics Coordination
- Automated shipping label generation
- Carrier integration and tracking
- Repair facility coordination and scheduling
- Customer communication and status updates
- Return processing and verification
Business Value
Reduces claims processing time, improves customer satisfaction through transparency, optimizes repair costs, maintains service quality standards, and provides comprehensive analytics for service optimization.
GET /v4.1/repairs/events?limit=50
Purpose
This endpoint retrieves real-time event notifications from the rental/repair management system. It acts as an event stream that partners can poll to stay synchronized with repair order status changes, estimate decisions, and shipping activities.
Endpoint Explanation
This endpoint provides complete repair order visibility by aggregating data from multiple systems including customer service, repair facilities, logistics providers, and inventory management. The system tracks repair progress through various stages, maintains cost estimates and approvals, coordinates with service providers, and provides real-time status updates. Comprehensive data includes device information, damage assessment, repair procedures, parts requirements, and estimated completion times while maintaining audit trails for warranty and insurance purposes.
Events:
- OrderRepairReleased: new order repair has released for Repair Service
- EstimateDecisionPublished: in the cost estimate related to the repair, a decision was made to accept it
- LabelEmitted: shipment package label has been emitted
Query parameters fields definition
| Property | Type | Validation | Description |
|---|---|---|---|
| limit | int | Optional | Number of messages downloaded at a time. Default is 50. Max is 500. |
Response payload fields definition
| Property | Type | Description |
|---|---|---|
| events | Array of EventDto | Array of events |
| events[].id | String | A unique identifier for an event. Ensures idempotency. |
| events[].type | String | Unique name of event. Possible values: OrderRepairReleased, EstimateDecisionPublished, LabelEmitted |
| events[].source | String | Origin of the event |
| events[].version | String | The version of the CloudEvents specification which the event uses. Will be set to "1.0" |
| events[].content_type | String | Content type of data |
| events[].created_at | String (ISO 8601) | Timestamp of when the occurrence happened. |
| events[].data | Object | Domain specific event data |
| events[].data.id | String | Identifier of repair order |
| events[].data. orders | Array | Orders list |
| events[].data. orders[].id | String | Identifier of repair order |
| events[].data. orders[]. estimates | Array | Estimates list |
| events[].data. orders[]. estimates[].id | String | Identifier of estimate |
- Response Payload Example (without encryption)
{
"events": [
{
"id": "ac5ce44b-1e3c-4797-87eb-5e9f97ac9316",
"type": "OrderRepairReleased",
"source": "bolttech/pl/claims/repair",
"version": "1.0",
"content_type": "application/json",
"created_at": "2026-01-05T17:39:22.4071043+00:00",
"data": {
"id": "TXN-202508060001",
"orders": [
{
"id": "TXN-202508060001",
"estimates": []
}
]
}
},
{
"id": "40c0720c-f19a-479c-9ea2-c7b7e15f771b",
"type": "EstimateDecisionPublished",
"source": "bolttech/pl/claims/repair",
"version": "1.0",
"content_type": "application/json",
"created_at": "2026-01-05T17:39:22.4071521+00:00",
"data": {
"id": "TXN-202508060001",
"orders": [
{
"id": "TXN-202508060001",
"estimates": [
{
"id": "48123456789"
}
]
}
]
}
}
]
}
GET /v4.1/repairs/{order_id}
Purpose
Retrieves comprehensive repair order details including status, timeline, cost estimates, and service provider coordination information.
Endpoint Explanation
This endpoint provides complete repair order visibility by aggregating data from multiple systems including customer service, repair facilities, logistics providers, and inventory management. The system tracks repair progress through various stages, maintains cost estimates and approvals, coordinates with service providers, and provides real-time status updates. Comprehensive data includes device information, damage assessment, repair procedures, parts requirements, and estimated completion times while maintaining audit trails for warranty and insurance purposes.
Response payload fields definition
| Property | Type | Description |
|---|---|---|
| repair | Object | Main repair request information |
| repair.category | String | Service category (e.g., "Tele2 HR ScreenCare") |
| repair.claim_number | String | Claim number (e.g., "CLM251117-5024") |
| repair.order | Object | Repair order details |
| repair.order.description | String | Problem description (e.g., "Razbijen zaslon") |
| repair.order.repair | Object | Repair status and dates |
| repair.order.repair.status | String | Current status (e.g., "In transport") (dictionary) |
| repair.order.repair.sub_status | String | Sub-status (e.g., "Repair facility selected") (dictionary) |
| repair.order.repair.pre_alert | String (ISO 8601) | Pre-alert date |
| repair.order.repair.received | String (ISO 8601) | Received date |
| repair.order.repair.sent | String (ISO 8601) | Sent date |
| repair.order.repair.end | String (ISO 8601) | End date |
| repair.order.repair.completion | String (ISO 8601) | Completion date |
| repair.order.devices | Array | List of devices |
| repair.order.devices[].info | Object | Device information |
| repair.order.devices[].info.type | String | Device type (e.g., "Smartphone") |
| repair.order.devices[].info.state | String | Device state (e.g., "New") |
| repair.order.devices[].info.device | Object | Device details |
| repair.order.devices[].info.device.brand | String | Brand (e.g., "Motorola") |
| repair.order.devices[].info.device.imei | String | IMEI number |
| repair.order.devices[].info.device.model | String | Model (e.g., "Moto E7 Plus") |
| repair.order.devices[].info.device.serial_number | String | Serial number |
| repair.order.devices[].additional_details | Array | Additional device details |
| repair.order.devices[].additional_details[].key | String | Detail key (e.g., "device_purchase_date", "loan") |
| repair.order.devices[].additional_details[].value | Mixed | Detail value (String (ISO 8601) or Boolean) |
| repair.order.checklist | Object | Repair checklist |
| repair.order.checklist.data_restore | Boolean | Data restore required |
| repair.order.checklist.liquid_damage_repair | Boolean | Liquid damage repair required |
| repair.order.checklist.refurbished_parts | Boolean | Refurbished parts allowed |
| repair.order.checklist.warranty_repair | Boolean | Warranty repair |
| repair.order.metrics | Object | Time metrics |
| repair.order.metrics.tat_from_prealert | Integer | Turnaround time from pre-alert (days) |
| repair.order.metrics.estimated_time_arrival | String (ISO 8601) | Estimated time of arrival |
| repair.order.metrics.estimated_time_repair | String (ISO 8601) | Estimated time of repair |
| repair.order.limits | Object | Coverage limits |
| repair.order.limits.extended_warranty | Number | Extended warranty limit |
| repair.order.limits.mechanical_damage | Number | Mechanical damage limit |
| repair.order.accessories | Array | List of accessories |
| repair.order.accessories[].key | String | Accessory key |
| repair.order.accessories[].value | String | Accessory value |
| repair.order.risks | Array | Risk information |
| repair.order.risks[].key | String | Risk key |
| repair.order.risks[].value | String | Risk value (e.g., "US") |
| repair.order.additional_details | Array | Additional order details |
| repair.order.additional_details[].key | String | Detail key (e.g., "device_configuration", "data_backup", "mechanical_damage_repair") |
| repair.order.additional_details[].value | Boolean | Detail value |
| repair.order.estimates | Array | Estimates/Quotes |
| repair.order.estimates[].id | String | Estimate ID (e.g., "EST-004") |
| repair.order.estimates[].status | String | Estimate status (e.g., "ACCEPTED", "TOVERIFY", "REJECTED") |
| repair.order.estimates[].type | String | Estimate type (e.g., "REPAIR", "NEWDEVICE", "SWAP") |
| repair.order.estimates[].description | String | Description of status when quotation is rejected (dictionary) or authorization code when quotation is accepted. |
| repair.order.estimates[].issue_date | String (ISO 8601) | Issue date |
| repair.order.estimates[].decision_date | String (ISO 8601) | Decision date |
| repair.order.estimates[].prices | Array | Price list |
| repair.order.estimates[].prices[].currency | String | Currency code (e.g., "PLN") |
| repair.order.estimates[].prices[].amount | Number | Price amount |
| repair.order.estimates[].prices[].description | String | Price description (e.g., "Display - Extra payment") |
| repair.order.estimates[].parts | Array | Parts list |
| repair.order.estimates[].parts[].code | String | Part code (e.g., "PRT-001") |
| repair.order.estimates[].parts[].name | String | Part name (e.g., "Screen") |
| repair.order.estimates[].parts[].risk | String | Risk category (e.g., "US") (dictionary) |
| repair.order.estimates[].parts[].category | String | Part category (e.g., "LCD") (dictionary) |
| repair.order.estimates[].parts[].status | String | Part status (e.g., "ACCEPTED", "REJECTED") |
| repair.order.estimates[].parts[].price_excluding_tax | Number | Price excluding tax |
| repair.order.estimates[].parts[].price_including_tax | Number | Price including tax |
| repair.order.estimates[].parts[].price_tax | Number | Tax amount |
| repair.order.estimates[].parts[].discount | Number | Discount amount |
| repair.order.estimates[].parts[].refurbished | Boolean | Is refurbished part |
| repair.order.estimates[].parts[].comment | String | Part comment |
| repair.order.estimates[].parts[].description | String | Part description |
| repair.order.estimates[].services | Array | Services list |
| repair.order.estimates[].services[].code | String | Service code (e.g., "SRV-001") |
| repair.order.estimates[].services[].name | String | Service name (e.g., "LABOUR") |
| repair.order.estimates[].services[].category | String | Service category (e.g., "LABOUR") (dictionary) |
| repair.order.estimates[].services[].status | String | Service status (e.g., "ACCEPTED", "REJECTED") |
| repair.order.estimates[].services[].price_excluding_tax | Number | Price excluding tax |
| repair.order.estimates[].services[].price_including_tax | Number | Price including tax |
| repair.order.estimates[].services[].price_tax | Number | Tax amount |
| repair.order.estimates[].services[].discount | Number | Discount amount |
| repair.order.estimates[].services[].comment | String | Service comment |
| repair.order.estimates[].services[].description | String | Service description |
| pickup | Object | Pickup information |
| pickup.number | String | Pickup waybill number |
| pickup.status | String | Pickup courier status (e.g., "InProgress") (dictionary) |
| pickup.method | String | Pickup method |
| pickup.contacts | Array | Pickup contacts |
| pickup.contacts[].company_name | String | Company name |
| pickup.contacts[].first_name | String | First name |
| pickup.contacts[].last_name | String | Last name |
| pickup.contacts[].phone_number | String | Phone number |
| pickup.contacts[].email | String | Email address |
| pickup.contacts[].other_information | Array | Other contact information |
| pickup.contacts[].other_information[].key | String | Information key (e.g., "tax_number") |
| pickup.contacts[].other_information[].value | String | Information value |
| pickup.origin | Object | Pickup origin address |
| pickup.origin.country | String | Country |
| pickup.origin.administrative_area_level_2 | String | Region/State |
| pickup.origin.locality | String | City |
| pickup.origin.postal_code | String | Postal code |
| pickup.origin.sublocality | String | Suburb/District |
| pickup.origin.route | String | Street name |
| pickup.origin.street_number | String | Street number |
| pickup.origin.room | String | Room/Apartment number |
| pickup.origin.notes | String | Additional notes |
| pickup.logs | Array | Pickup logs |
| pickup.logs[].key | String | Log key (e.g., "first_attempt_date") |
| pickup.logs[].value | String (ISO 8601) | Log value |
| return | Object | Return/Delivery information |
| return.number | String | Return waybill number |
| return.status | String | Return courier status (e.g., "InProgress") (dictionary) |
| return.method | String | Return method |
| return.contacts | Array | Return contacts |
| return.contacts[].company_name | String | Company name |
| return.contacts[].first_name | String | First name |
| return.contacts[].last_name | String | Last name |
| return.contacts[].phone_number | String | Phone number |
| return.contacts[].email | String | Email address |
| return.contacts[].other_information | Array | Other contact information |
| return.contacts[].other_information[].key | String | Information key (e.g., "tax_number") |
| return.contacts[].other_information[].value | String | Information value |
| return.target | Object | Return destination address |
| return.target.country | String | Country |
| return.target.administrative_area_level_2 | String | Region/State |
| return.target.locality | String | City |
| return.target.postal_code | String | Postal code |
| return.target.sublocality | String | Suburb/District |
| return.target.route | String | Street name |
| return.target.street_number | String | Street number |
| return.target.room | String | Room/Apartment number |
| return.logs | Array | Return logs |
| return.logs[].key | String | Log key (e.g., "first_attempt_date", "collection_date") |
| return.logs[].value | String (ISO 8601) | Log value |
| return.additional_details | Array | Additional return details |
| return.additional_details[].key | String | Detail key (e.g., "cod_amount", "return_direction") |
| return.additional_details[].value | Mixed | Detail value (Number or String) |
- Response Payload Example (without encryption)
{
"repair": {
"category": "Tele2 HR ScreenCare",
"claim_number": "CLM251117-5024",
"order": {
"description": ". Razbijen zaslon. (test1). . ",
"repair": {
"status": "In transport",
"sub_status": "Repair facility selected",
"pre_alert": "2025-09-12T09:00:00Z",
"received": "2025-09-12T09:00:00Z",
"sent": "2025-09-12T09:00:00Z",
"end": "2025-09-12T09:00:00Z",
"completion": "2025-09-12T09:00:00Z"
},
"devices": [
{
"info": {
"type": "Smartphone",
"state": "New",
"device": {
"brand": "Motorola",
"imei": "",
"model": "Moto E7 Plus",
"serial_number": "333507866011648"
}
},
"additional_details": [
{
"key": "device_purchase_date",
"value": "2025-11-16T23:00:00"
},
{
"key": "loan",
"value": false
}
]
}
],
"checklist": {
"data_restore": false,
"liquid_damage_repair": true,
"refurbished_parts": false,
"warranty_repair": false
},
"metrics": {
"tat_from_prealert": 10,
"estimated_time_arrival": "2025-09-12T09:00:00Z",
"estimated_time_repair": "2025-09-12T09:00:00Z"
},
"limits": {
"extended_warranty": 0,
"mechanical_damage": 0
},
"accessories": [
{
"key": "accessories",
"value": ""
}
],
"risks": [
{
"key": "risk",
"value": "US"
}
],
"additional_details": [
{
"key": "device_configuration",
"value": false
},
{
"key": "data_backup",
"value": false
},
{
"key": "mechanical_damage_repair",
"value": true
}
],
"estimates": [
{
"id": "EST-004",
"status": "ACCEPTED",
"type": "REPAIR",
"description": "ComplaintAccepted",
"issue_date": "2025-09-12T09:00:00Z",
"decision_date": "2025-09-12T09:00:00Z",
"prices": [
{
"currency": "PLN",
"amount": 30.0,
"description": "Display - Extra payment"
}
],
"parts": [
{
"code": "PRT-001",
"name": "Screen",
"risk": "US",
"category": "LCD",
"status": "ACCEPTED",
"price_excluding_tax": 200.0,
"price_including_tax": 240.0,
"price_tax": 40.0,
"discount": 0,
"refurbished": false,
"comment": "Brand new replacement screen",
"description": "Description"
}
],
"services": [
{
"code": "SRV-001",
"name": "LABOUR",
"category": "LABOUR",
"status": "ACCEPTED",
"price_excluding_tax": 200.0,
"price_including_tax": 240.0,
"price_tax": 40.0,
"discount": 0,
"comment": "Labour fee for screen replacement",
"description": "Labour fee for screen replacement"
}
]
}
]
}
},
"pickup": {
"number": "0000014660689T",
"status": "InProgress",
"method": "Method",
"contacts": [
{
"company_name": "",
"first_name": "Test",
"last_name": "User",
"phone_number": "999999999",
"email": "[email protected]",
"other_information": [
{
"key": "tax_number",
"value": "123456789"
}
]
}
],
"origin": {
"country": "Country",
"administrative_area_level_2": "Region",
"locality": "City",
"postal_code": "Postal Code",
"sublocality": "Suburb",
"route": "Street",
"street_number": "123",
"room": "11",
"notes": "Notes"
},
"logs": [
{
"key": "first_attempt_date",
"value": "2025-09-04T14:00:00Z"
}
]
},
"return": {
"number": "0000014660689T",
"status": "InProgress",
"method": "Method",
"contacts": [
{
"company_name": "",
"first_name": "Test",
"last_name": "User",
"phone_number": "999999999",
"email": "[email protected]",
"other_information": [
{
"key": "tax_number",
"value": "123456789"
}
]
}
],
"target": {
"country": "Country",
"administrative_area_level_2": "Region",
"locality": "City",
"postal_code": "Postal Code",
"sublocality": "Suburb",
"route": "Street",
"street_number": "123",
"room": "11"
},
"logs": [
{
"key": "first_attempt_date",
"value": "2025-09-04T14:00:00Z"
},
{
"key": "collection_date",
"value": "2025-09-04T14:00:00Z"
}
],
"additional_details": [
{
"key": "cod_amount",
"value": 300.0
},
{
"key": "return_direction",
"value": "Return Direction"
}
]
}
}
POST /v4.1/repairs/action (update_repair_order)
Purpose
Updates repair order information including status changes, cost adjustments, and completion details with comprehensive workflow coordination.
Endpoint Explanation
The endpoint allows you to send repair-related data from the repair facility. Possible actions to perform:
-
update repair status and related data
-
providing a cost estimate for approval
-
providing information about logistics
-
providing information about payments
Notes: This table documents a repair management API that handles different types of repair-related actions through a single endpoint. Here's what it covers: Core Structure
- Action-Based System: The API uses an action parameter to determine what type of operation to perform (RepairStatus, Estimate, Payment, Logistic, Files)
- Conditional Requirements: Many fields are only required when specific actions are triggered according to the next table.
Request payload fields definition
| Property | Type | Validation | Description |
|---|---|---|---|
| configuration | Object | Mandatory | Configuration details |
| configuration.action_id | String | Mandatory (must be equal to "update_repair_order") | ID identifying which action to execute |
| configuration.market_id | String | Mandatory | Market ID alpha-2 |
| configuration.callback_url | String | Optional | Callback URL |
| payload | Object | Mandatory | Payload object |
| payload.id | String | Mandatory | Order Id |
| payload.claim_number | String | Mandatory | Claim number |
| payload.order | Object | Mandatory | Order details |
| payload.order.repair | Object | Mandatory in actions: RepairStatus, Estimate | Repair details |
| payload.order.repair.type | String | Mandatory in actions: RepairStatus, Estimate | Repair type |
| payload.order.repair.pre_alert | String (ISO 8601) | Mandatory in actions: RepairStatus | Date of received pre-alert in Repair Facility |
| payload.order.repair.status | String | Mandatory in actions: RepairStatus. Check dictionary for available values | Repair status from dictionary |
| payload.order.repair.sub_status | String | Mandatory in actions: RepairStatus. Check dictionary for available values | Repair substatus from dictionary |
| payload.order.repair.received | String (ISO 8601) | Mandatory in actions: RepairStatus | Date of device receiving in Repair Facility |
| payload.order.repair.sent | String (ISO 8601) | Mandatory in actions: RepairStatus (only for specific repair status) | Date of shipment |
| payload.order.repair.end | String (ISO 8601) | Mandatory in actions: RepairStatus (only for specific repair status) | Date of repair finish |
| payload.order.repair.completion | String (ISO 8601) | Mandatory in actions: RepairStatus (only for specific repair status) | Date of completion |
| payload.order.devices | Array | Mandatory in actions: RepairStatus, Estimate for repair type = RECEIVED | List of devices |
| payload.order.devices[].info | Object | Mandatory in actions: RepairStatus, Estimate for type = RECEIVED | Device information |
| payload.order.devices[].info.type | String | Mandatory in actions: RepairStatus, Estimate for type = RECEIVED | Device type |
| payload.order.devices[].info.state | String | Mandatory in actions: RepairStatus, Estimate for type = RECEIVED | Device state code |
| payload.order.devices[].info.device | Object | Mandatory in actions: RepairStatus, Estimate for type = RECEIVED | Device details |
| payload.order.devices[].info.device.brand | String | Mandatory in actions: RepairStatus, Estimate for type = RECEIVED | Device brand |
| payload.order.devices[].info.device.model | String | Mandatory in actions: RepairStatus, Estimate for type = RECEIVED | Device model |
| payload.order.devices[].info.device.serial_number | String | Mandatory in actions: RepairStatus, Estimate for type = RECEIVED (only if imei does not exist) | Device Serial Number |
| payload.order.devices[].info.device.imei | String | Mandatory in actions: RepairStatus, Estimate for type = RECEIVED (only if serial_number does not exist) | Device IMEI |
| payload.order.devices[].additional_details | Array | Optional | Additional device details |
| payload.order.devices[].additional_details[].key | String | Available values: device_purchase_date | Detail key |
| payload.order.devices[].additional_details[].value | String | Detail value | |
| payload.order.metrics | Object | Mandatory in actions: RepairStatus | Metrics object |
| payload.order.metrics.estimated_time_arrival | String (ISO 8601) | Mandatory in actions: RepairStatus | Estimated Time of Arrival |
| payload.order.metrics.estimated_time_repair | String (ISO 8601) | Mandatory in actions: RepairStatus | Estimated Time of Repair |
| payload.order.quotation | Object | Mandatory in actions: RepairStatus | Quotation object |
| payload.order.quotation.status | String | Mandatory in actions: RepairStatus. Available values: Accepted, Rejected | Quotation status |
| payload.order.estimates | Array | Mandatory in actions: Estimate | List of estimates |
| payload.order.estimates[].id | String | Mandatory in actions: Estimate | Estimate Identifier |
| payload.order.estimates[].type | String | Optional. Available values: REPAIR, NEWDEVICE, SWAP. Default Value: REPAIR | Type of estimate |
| payload.order.estimates[].prices | Array | Mandatory in actions: Estimate | Price list |
| payload.order.estimates[].prices[].currency | String | Mandatory in actions: Estimate | Currency |
| payload.order.estimates[].parts | Array | Mandatory in actions: Estimate | Parts list |
| payload.order.estimates[].parts[].code | String | Mandatory in actions: Estimate | Code of part |
| payload.order.estimates[].parts[].name | String | Mandatory in actions: Estimate | Name of part |
| payload.order.estimates[].parts[].risk | String | Mandatory in actions: Estimate. Check dictionary for available values | Risk type of part |
| payload.order.estimates[].parts[].category | String | Mandatory in actions: Estimate. Check dictionary for available values | Category code of part |
| payload.order.estimates[].parts[].price_excluding_tax | Number | Mandatory in actions: Estimate | Net cost of the part |
| payload.order.estimates[].parts[].price_including_tax | Number | Mandatory in actions: Estimate | Gross cost of the part |
| payload.order.estimates[].parts[].price_tax | Number | Mandatory in actions: Estimate | Tax cost of the part |
| payload.order.estimates[].parts[].discount | Number | Mandatory in actions: Estimate | Discount cost of the part |
| payload.order.estimates[].parts[].refurbished | Boolean | Optional. Default value: false | Used refurbished parts |
| payload.order.estimates[].parts[].comment | String | Optional | Comments of part |
| payload.order.estimates[].services | Array | Mandatory in actions: Estimate | Services list |
| payload.order.estimates[].services[].code | String | Mandatory in actions: Estimate | Code of the service |
| payload.order.estimates[].services[].name | String | Mandatory in actions: Estimate | Name of the service |
| payload.order.estimates[].services[].category | String | Mandatory in actions: Estimate. Check dictionary for available values | Category type of the service |
| payload.order.estimates[].services[].price_excluding_tax | Number | Mandatory in actions: Estimate | Net cost of the service |
| payload.order.estimates[].services[].price_including_tax | Number | Mandatory in actions: Estimate | Gross cost of the service |
| payload.order.estimates[].services[].price_tax | Number | Mandatory in actions: Estimate | Tax cost of the service |
| payload.order.estimates[].services[].discount | Number | Mandatory in actions: Estimate | Discount cost of the service |
| payload.order.estimates[].services[].comment | String | Optional | Comments of service |
| payload.pickup | Object | Optional | Pickup details |
| payload.pickup.number | String | Mandatory in actions: Logistic | Waybill number |
| payload.pickup.status | String | Mandatory in actions: Logistic. Check dictionary for available values | Parcel status |
| payload.pickup.logs | Array | Mandatory in actions: Logistic | Date logs of specific events |
| payload.pickup.logs[].key | String | Mandatory in actions: Logistic | Key of date log |
| payload.pickup.logs[].value | String (ISO 8601) | Mandatory in actions: Logistic | Value of date log |
| payload.return | Object | Mandatory in actions: Logistic | Return details |
| payload.return.number | String | Mandatory in actions: Logistic | Waybill number |
| payload.return.status | String | Mandatory in actions: Logistic. Check dictionary for available values | Parcel status |
| payload.return.logs | Array | Mandatory in actions: Logistic | Date logs of specific events |
| payload.return.logs[].key | String | Mandatory in actions: Logistic. Available values: first_attempt_date, collection_date (collection_date only mandatory when status = Delivered) | Key of date log |
| payload.return.logs[].value | String (ISO 8601) | Mandatory in actions: Logistic | Value of date log |
| payload.payments | Array | Mandatory in actions: Payment (at least 1 item) | Payment details |
| payload.payments[].gross | Number | Mandatory in actions: Payment | Gross amount |
| payload.payments[].additional_details | Array | Optional | Additional payment details |
| payload.payments[].additional_details[].key | String | Optional. Available values: invoice_number, invoice_issue_date, additional_info | Detail key |
| payload.payments[].additional_details[].value | String | Optional | Detail value |
| payload.additional_details | Array | Mandatory | Additional payload details |
| payload.additional_details[].key | String | Mandatory. Available values: actions | Detail key |
| payload.additional_details[].value | Array of Strings | Mandatory. Available values: RepairStatus, Estimate, Logistic, Payment | Detail value |
- Request Payload Example (RepairStatus Action)
- Request Payload Example (Estimate Action)
- Request Payload Example (Logistic Action)
- Request Payload Example (Payment Action)
Update repair status and related data
{
"configuration": {
"action_id": "update_repair_order",
"market_id": "string",
"callback_url": "http://callback.url"
},
"payload": {
"id": "OPT-000000000017150",
"claim_number": "CLM250903-5001",
"order": {
"repair": {
"type": "RECEIVED",
"pre_alert": "2025-09-03T09:00:00Z",
"status": "Repairing",
"sub_status": "Repairing",
"received": "2025-08-29T09:00:00Z",
"sent": "2025-08-29T09:00:00Z",
"end": "2025-08-29T09:00:00Z",
"completion": "2025-08-29T09:00:00Z"
},
"devices": [
{
"info": {
"type": "Smartphone",
"state": "NEW",
"device": {
"brand": "Motorola",
"model": "Moto E7 Plus",
"serial_number": "982445809792269"
}
},
"additional_details": [
{
"key": "device_purchase_date",
"value": "2025-09-12T09:00:00Z"
}
]
}
],
"metrics": {
"estimated_time_arrival": "2025-09-12T09:00:00Z",
"estimated_time_repair": "2025-09-12T09:00:00Z"
},
"quotation": {
"status": "Accepted"
},
"additional_details": [
{
"key": "refurbished_parts",
"value": false
}
]
},
"additional_details": [
{
"key": "actions",
"value": ["RepairStatus"]
}
]
}
}
Providing a cost estimate for approval
Submitting a cost estimate triggers an approval process on the Claims System side, which may approve the estimate automatically or require manual processing (which takes more time).
The Repair Facility learns about the decision regarding the estimate via the EstimateDecisionPublished event.
After receiving this event, it can check the decision again by retrieving the Repair Order.
{
"configuration": {
"action_id": "update_repair_order",
"market_id": "string",
"callback_url": "http://callback.url"
},
"payload": {
"id": "OPT-000000000017150",
"claim_number": "CLM250903-5001",
"order": {
"repair": {
"type": "RECEIVED"
},
"devices": [
{
"info": {
"type": "Smartphone",
"state": "NEW",
"device": {
"brand": "Motorola",
"model": "Moto E7 Plus",
"serial_number": "982445809792269"
}
},
"additional_details": [
{
"key": "device_purchase_date",
"value": "2025-09-12T09:00:00Z"
}
]
}
],
"estimates": [
{
"id": "EST-004",
"type": "Repair",
"prices": [
{
"currency": "PLN"
}
],
"parts": [
{
"code": "PRT-001",
"name": "Screen",
"risk": "US",
"category": "LCD",
"price_excluding_tax": 200.0,
"price_including_tax": 240.0,
"price_tax": 40.0,
"discount": 0,
"refurbished": false,
"comment": "Brand new replacement screen"
}
],
"services": [
{
"code": "SRV-001",
"name": "LABOUR",
"category": "LABOUR",
"price_excluding_tax": 80.0,
"price_including_tax": 96.0,
"price_tax": 16.0,
"discount": 0,
"comment": "Labour fee for screen replacement"
}
]
}
]
},
"additional_details": [
{
"key": "actions",
"value": ["Estimate"]
}
]
}
}
Providing information about logistics (Action: Logistic)
The API enables the Repair Facility to provide information on logistics when it is responsible for organizing the collection of the device from the customer and delivering the repaired device to them (depending on business arrangements). The Repair Facility decides to order a courier:
-
in the direction of the repair point (pickup), orders the shipment when it receives a new repair request (OrderRepairReleased event)
-
in the direction of the customer (return), orders the shipment when the repair is completed.
The entire process of picking up and returning the device to the customer is described in the pickup and return fields.
{
"configuration": {
"action_id": "update_repair_order",
"market_id": "string",
"callback_url": "http://callback.url"
},
"payload": {
"id": "OPT-000000000017150",
"claim_number": "CLM250903-5001",
"pickup": {
"number": "0000014660689T",
"status": "InProgress",
"logs": [
{
"key": "first_attempt_date",
"value": "2025-09-04T14:00:00Z"
}
]
},
"return": {
"number": "0000014660689T",
"status": "InProgress",
"logs": [
{
"key": "first_attempt_date",
"value": "2025-09-04T14:00:00Z"
},
{
"key": "collection_date",
"value": "2025-09-04T14:00:00Z"
}
]
},
"additional_details": [
{
"key": "actions",
"value": ["Logistic"]
}
]
}
}
Providing information about payments
{
"configuration": {
"action_id": "update_repair_order",
"market_id": "string",
"callback_url": "http://callback.url"
},
"payload": {
"id": "OPT-000000000017150",
"claim_number": "CLM250903-5001",
"payments": [
{
"gross": 300.0,
"additional_details": [
{
"key": "invoice_number",
"value": "INV-2025-007"
},
{
"key": "invoice_issue_date",
"value": "2025-09-04T00:00:00Z"
},
{
"key": "additional_info",
"value": "Paid via credit card"
}
]
}
],
"additional_details": [
{
"key": "actions",
"value": ["Payment"]
}
]
}
}
POST /v4.1/repairs/action (add_files_to_repair_order)
Purpose
This endpoint allows partners to add multiple repair files to a specific order.
Endpoint Explanation
Upload multiples files relative to a repair. Max 10Mb.
Request payload fields definition
| Property | Type | Validation | Description |
|---|---|---|---|
| configuration | Object | Mandatory | Configuration details |
| configuration.action_id | String | Mandatory (must be equal to "add_files_to_repair_order") | ID identifying which action to execute |
| configuration.market_id | String | Mandatory | Market ID alpha-2 |
| configuration.callback_url | String | Optional | Callback URL |
| payload | Object | Mandatory | The version of the CloudEvents specification which the event uses. Will be set to "1.0" |
| payload.id | String | Mandatory | Content type of data |
| payload.documents | Array | Mandatory (at least 1) | Timestamp of when the occurrence happened. |
| payload.documents[]. name | String | Mandatory | Domain specific event data |
| payload.documents[]. description | String | Mandatory | Identifier of repair order |
| payload.documents[]. content | String | Mandatory | Orders list |
| payload.documents[]. content_type | String | Mandatory | Identifier of repair order |
| payload.documents[]. size | Number | Mandatory | Estimates list |
| payload.documents[]. additional_details | Array | Optional | Identifier of estimate |
| payload.documents[]. additional_details[].key | String | Mandatory when item exists Available values: category | Identifier of estimate |
| payload.documents[]. additional_details[].value | String | Mandatory when item exists | Identifier of estimate |
- Request Payload Example (without encryption)
{
"configuration": {
"action_id": "add_files_to_repair_order",
"market_id": "ES",
"callback_url": "http://callback.url"
},
"payload": {
"id": "OPT-000000000017150",
"documents": [
{
"name": "repair_photo_before.jpg",
"description": "Device condition before repair",
"content": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AKp//2Q==",
"content_type": "image/jpeg",
"size": 2456832,
"additional_details": [
{
"key": "category",
"value": "inspection"
}
]
},
{
"name": "repair_photo_after.jpg",
"description": "Device condition after repair",
"content": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AKp//2Q==",
"content_type": "image/jpeg",
"size": 1987654,
"additional_details": [
{
"key": "category",
"value": "inspection"
}
]
}
]
}
}
GET /v4.1/repairs/{order_id}/label
Purpose
Generates shipping labels for repair logistics with comprehensive tracking and carrier integration capabilities.
Endpoint Explanation
This endpoint creates shipping labels for repair order logistics by integrating with multiple carriers, generating proper documentation, and providing tracking capabilities.
The system handles various shipping scenarios including device pickup, repair facility delivery, and customer return shipments while maintaining cost optimization, delivery tracking, and customer communication.
Generated labels include all necessary shipping information, insurance details, and tracking mechanisms for complete logistics coordination.
Path parameters fields definition
| Property | Type | Description |
|---|---|---|
| order_id | String | Order identifier |
Response payload fields definition
| Property | Type | Description |
|---|---|---|
| type | String | Type of content |
| base64String | String | Base64 file content |
- Response Payload Example (without encryption)
{
"type": "application/pdf",
"base64String": "VGhpcyBpcyBhIHRlc3Qgc3RyaW5nLg=="
}
Dictionaries
Dictionary for Repair Status and Substatus
| RepairStatus | RepairSubstatus | Description |
|---|---|---|
| Ordered | PrealertReceived | Order received |
| RepairCancelled | RepairCancelled | Repair is cancelled by DC (before the device delivered to Repair Facility) |
| DeliveredToRepairFacility | Parcel with device already delivered to repair facility | |
| WrongIMEI | Delivered device IMEI doesn't match with IMEI from the order | |
| WrongAdditionalSN | Delivered device Additional SN doesn't match with Additional SN from the order | |
| LackOfDeviceInParcel | Parcel doesn't contain device | |
| SubmittedToCostEstimator | Device expertise is in progress | |
| Repairing | WaitingForUnlocking | Device is locked (FMI etc) and it's needed to be unlocked by Customer |
| WaitingForParts | Parts temporary unavailable, waiting for supply | |
| UnavailablePart | Permanently unavailable part | |
| DeadOnArrival | Device not repairable | |
| QuestionToRepairFacility | Question to repair facility from DC submitted | |
| AnswerToRepairFacility | Answer from repair facility to DC submitted | |
| WaitingForAcceptance | Waiting for acceptance of quotation | |
| Repairing | Repairing in progress | |
| RepairDeclined | Repair rejected by DC | |
| RepairRejected | SentToCustomer | Repair rejected device is sent to customer |
| SentToDC | Repair rejected device is sent to DC | |
| Repaired | Device is repaired on behalf of manufacturer warranty | |
| Warranty | SentToCustomer | Device is repaired on behalf of manufacturer warranty and sent to Customer |
| NewDevice | Device is replaced on behalf of manufacturer warranty | |
| SentToDC | Device is repaired on behalf of manufacturer warranty and sent to DC | |
| Repaired | Device is repaired | |
| RepairFinished | SentToCustomer | Device is repaired and sent to customer |
| SentToDC | Device is repaired and sent to DC | |
| NewDevice | Device is replaced | |
| NewDevice | SentToCustomer | Device is replaced and sent do Customer |
| SentToDC | Device is replaced and sent to DC |
Dictionary for Risk
| Risk | Description |
|---|---|
| US | Damage |
| ZAL | Flooding |
| ANG | Repair under warranty |
| APG | Repair after warranty |
| ASS | Assistance |
| AK | Accessory |
| OTHER | Other |
Dictionary for Parts
| partCategoryCode | Category description |
|---|---|
| LCD | Screen (LCD) |
| LCDMANDATORY | Parts required for LCD replacement |
| COVER | Cover |
| BUTTONS | Buttons |
| CAMERA | Camera |
| CAMERAFRONT | Front Camera |
| CAMERABACK | Back Camera |
| PCB | Mainboard |
| PCBMANDATORY | Required for mainboard replacement |
| MANDATORY | Parts required for assembly (battery, charging socket, back cover) |
| BATTERY | Battery |
| SWAP | New device offer |
| APPLESWAP | New Apple device offer |
| OTHER | Other |
| SIMREADER | SIM reader |
| USB | USB socket |
| SPEAKER | Speaker |
| MIC | Microphone |
| ACC | Accessories |
| CONNECTOR | Connector |
| VIBRA | Vibrations |
| ANTENNA | Antenna |
| FINGERPRINT | Fingerprint |
| RECEIVER | Receiver |
| SENSOR | Sensor |
| SUBBOARD | Subboard |
| APPLEREARSYSTEM | Back cover from Apple |
Dictionary for Services
| serviceCategory | Category description |
|---|---|
| LABOUR | Labour |
| EXPERTISE | Expertise |
| ADDITIONAL | Additional services |
| LOGISTIC | Logistics |
| SOFTWAREUPDATE | Software update |
| NFF | No fault found |
Dictionary for estimate status description (only view in GET Claim Repair Order)
| Value | Description |
|---|---|
| ClientsRejectionDecision | Customer's decision - rejection |
| NoProtection | No protection |
| ComplaintAccepted | Assumption of warranty liability |
| ClientsResignation | Customer's resignation |
| ReplacementNoParts | Replacement - spare parts shortage |
| ForwardedToClaimHandler | Referred to claims handler |
| ReturnedToRepairFacility | Cost estimate returned to repairer |
| Complaint | Decision - complaint |
| RepairFacilityExplanation | Repairer's explanation |
| PaymentReceived | Payment received |
| NewVersion | New version |
| ComplaintUnfounded | Complaint is unfounded |
| DamageOutOfScope | Damage out of scope |
| LimitExceeded | Limit exceeded |
| ChangingRepairFacility | Change Repair Facility |
| Benefit payment | Withdrawal |
| ComplaintUnfoundedNoFault | Complaint is unfounded - no fault |
| ComplaintUnfoundedNewDamage | Complaint is unfounded - new damage |
Shipment status
| Status | Description |
|---|---|
| Ordered | Order to pick up the device was sent to Courier company (from Customer or from Repair Facility) |
| UnrealizedOrder | Order Cancelled by DC, Repair Facility, Courier Company |
| ShipmentUnrealised | Pick up not successful |
| InProgress | Courier picked up the device and is on the way (to Customer or Repair Facility) |
| ShipmentUndelivered | Courier picked up the device but Customer was not present |
| Delivered | Delivered to Customer or Repair Facility |