A valid request URL is required to generate request examples{
"id": "rep-2030-000471",
"article": {
"label": "Smartphone screen",
"skuId": "d4c81e5b0f7a396248ce15b7d0a83f62915ce4d7b0863af251d94c7e08b3f6a1",
"purchasedAt": "2029-01-16T09:00:00.000Z"
},
"issueDescription": "Cracked screen after a drop",
"quoteAmountCents": 12000,
"depositAmountCents": 3600,
"expectedPickupDate": "2030-07-20T18:00:00.000Z",
"customerId": "cust-1",
"storeId": "store-rivoli",
"status": "in_workshop",
"actorId": "user-camille",
"createdAt": "2030-07-10T14:05:00.000Z",
"updatedAt": "2030-07-10T16:30:00.000Z"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Send a repair order to the workshop
Advances an intake order to in_workshop — the technician has picked the job up. Send no body; only updatedAt and status change. This is the FIRST step and cannot be skipped: calling markRepairReady on an intake order is a 422, so an order must pass through here even if the repair was instantaneous. It cannot be undone (there is no route back to intake). 422 when the order is not intake — including when it is already in_workshop. 404 for an unknown id. NOT IDEMPOTENT — there is no dedup key. A SEQUENTIAL replay cannot double-apply (the status guard rejects it), but that guard is an unsynchronised read-then-write with no row lock (solya-pos#956), so do not fan concurrent calls at one order. If your call times out RE-READ with getRepairOrder before retrying: an in_workshop status means the first attempt already committed, so treat that 422 as success rather than as a failure.
A valid request URL is required to generate request examples{
"id": "rep-2030-000471",
"article": {
"label": "Smartphone screen",
"skuId": "d4c81e5b0f7a396248ce15b7d0a83f62915ce4d7b0863af251d94c7e08b3f6a1",
"purchasedAt": "2029-01-16T09:00:00.000Z"
},
"issueDescription": "Cracked screen after a drop",
"quoteAmountCents": 12000,
"depositAmountCents": 3600,
"expectedPickupDate": "2030-07-20T18:00:00.000Z",
"customerId": "cust-1",
"storeId": "store-rivoli",
"status": "in_workshop",
"actorId": "user-camille",
"createdAt": "2030-07-10T14:05:00.000Z",
"updatedAt": "2030-07-10T16:30:00.000Z"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Authorizations
Authorization: Bearer <token>. Accepts EITHER a Keycloak access token (scopes-in-token) OR an opaque POS session token; both resolve to the same pos.* scope vocabulary the route guards enforce.
Path Parameters
1Response
The order, now in_workshop, with updatedAt re-stamped.
The order, now in_workshop, with updatedAt re-stamped.
Show child attributes
Show child attributes
-9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991intake, in_workshop, ready, collected, unrepairable 
