Check-in Ticket API
Integrate with MyRepairApp's ticket management system to create, search, and manage check-in tickets for sales and repairs.
Important Note:
It is important that identifier fields like customer -> id or checkinItem -> inventoryItemId map to existing entities on your store's customer or inventory records (use the customer or inventory APIs to list those).
For ticket -> assigneeId or checkinItem -> assigneeId the id must correspond to that of a user (you can get it from the assignee object on the ticket search response)
Search Check-in Tickets
Search for tickets by customer name, device details, ticket number, or ticket creation date.
HTTP Request
httpGET /api/v2/checkin-ticket?query={search_term}&closed={boolean}
Parameters
| Parameter | Type | Required |
|---|
Searchable Fields
- Ticket number
- Customer name, email, or phone
- Device name, SKU, or serial number
- Creation date (
MM/dd/yyyyformat)
Example Requests
bash# Search by ticket number curl -X GET "https://www.myrepairapp.com/api/v2/checkin-ticket?query=12345" \ -H "X-api-key: YOUR_API_KEY" # Search by customer name curl -X GET "https://www.myrepairapp.com/api/v2/checkin-ticket?query=John%20Doe" \ -H "X-api-key: YOUR_API_KEY" # Search closed tickets curl -X GET "https://www.myrepairapp.com/api/v2/checkin-ticket?query=repair&closed=true" \ -H "X-api-key: YOUR_API_KEY"
Response
{ "tickets": [ { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "orgId": "org-abcdef-123456", "ticketNumber": 2644, "active": true, "assigneeId": "user-12345678-1234-1234-1234-123456789abc", "customerId": "cust-98765432-4321-4321-4321-210987654321", "order": null, "type": "Repair", "status": "Opened", "closedAt": null, "warrantyPeriodEnd": null, "isWarranty": false, "isReturn": false, "notToExceed": 0, "appointmentTime": null, "customerPossession": false, "storageBin": "", "waitingForPart": false, "shipper": null, "trackingNumber": null, "shipstationShipmentId": null, "labelURL": null, "claimRepairProvider": null, "createdAt": "2025-11-18T19:52:18.452Z", "updatedAt": "2025-11-18T19:52:18.459Z", "assignee": { "id": "user-12345678-1234-1234-1234-123456789abc", "name": "Your Store Name Here Machine User", "email": "", "phone": null, "hiredOn": null, "lastDay": null, "password": "", "pin": null, "akkoSalesRepId": null, "payRate": null, "maxDiscount": null, "discountType": "PERCENTAGE", "priceOverride": false, "discountCode": null, "canAddCredit": false, "displayCost": false, "displayMetrics": false, "editTimeclock": true, "addNewInventoryItems": true, "editInventoryItems": false, "deleteInventoryItems": true, "changeGroupInfo": false, "editShifts": false, "deleteTickets": false, "manageMPCustomers": false, "createdAt": "2025-05-28T18:28:03.043Z", "updatedAt": "2025-05-28T18:28:03.043Z" }, "customer": { "id": "cust-98765432-4321-4321-4321-210987654321", "storeId": "store-12345678-1234-1234-1234-123456789012", "referralSourceId": null, "firstName": "John", "lastName": "Doe", "company": "N/A", "primaryPhone": "", "contactPhone": "1234567890", "email": "john.doe@example.com", "driversLicense": null, "storeCredit": 0, "billingAgent": null, "taxExempt": null, "netTerms": null, "addressId": null, "active": true, "createdAt": "2025-10-03T19:40:31.849Z", "updatedAt": "2025-10-03T19:40:31.849Z", "fullName": "John Doe" }, "checkinItems": [ { "id": "item-11111111-2222-3333-4444-555555555555", "checkinTicketId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "invoiceId": null, "inventoryItemId": "inv-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "overriddenPrice": 50, "overriddenCost": null, "originalPrice": 0, "originalCost": 0, "quantity": 1, "discount": 0, "tax": 0, "isTaxOverridden": false, "status": "Sold", "rmaReason": null, "rmaId": null, "returnToInventory": null, "assigneeId": "user-12345678-1234-1234-1234-123456789abc", "bitDefenderCode": null, "formSubmissionId": null, "createdAt": "2025-11-18T19:46:00.206Z", "updatedAt": "2025-11-18T19:52:18.493Z", "parts": [], "inventoryItem": { "id": "inv-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "storeId": "store-12345678-1234-1234-1234-123456789012", "groupingId": null, "sku": "AP-IPHO-11-9371", "manufacturer": "Apple", "category": "Repair", "type": "Repair - Phone", "name": "iPhone 11 Battery Repair", "cost": 0, "inventoried": false, "serialized": false, "instock": 0, "condition": "New", "bin": "", "supplierId": null, "price": 0, "createdAt": "2025-09-25T16:26:55.386Z", "updatedAt": "2025-09-25T16:26:55.386Z", "note": "", "active": true, "serialNum": null, "isRebate": false, "taxFree": false, "repairProvider": null, "tradeinDevice": false, "storage": null, "color": null, "carrier": null, "tradeInCondition": null, "tradeInStatus": null, "additionalInfo": null, "isMotorolaSku": false }, "assignee": { "id": "user-12345678-1234-1234-1234-123456789abc", "name": "Your Store Name Here Machine User", "email": "", "phone": null, "hiredOn": null, "lastDay": null, "password": "", "pin": null, "akkoSalesRepId": null, "payRate": null, "maxDiscount": null, "discountType": "PERCENTAGE", "priceOverride": false, "discountCode": null, "canAddCredit": false, "displayCost": false, "displayMetrics": false, "editTimeclock": true, "addNewInventoryItems": true, "editInventoryItems": false, "deleteInventoryItems": true, "changeGroupInfo": false, "editShifts": false, "deleteTickets": false, "manageMPCustomers": false, "createdAt": "2025-05-28T18:28:03.043Z", "updatedAt": "2025-05-28T18:28:03.043Z" }, "formSubmission": null }, { "id": "item-66666666-7777-8888-9999-000000000000", "checkinTicketId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "invoiceId": null, "inventoryItemId": "inv-bbbbbbbb-cccc-dddd-eeee-ffffffffffff", "overriddenPrice": 11, "overriddenCost": null, "originalPrice": 0, "originalCost": 11.35, "quantity": 1, "discount": 0, "tax": 0.77, "isTaxOverridden": false, "status": "Sold", "rmaReason": null, "rmaId": null, "returnToInventory": null, "assigneeId": "user-12345678-1234-1234-1234-123456789abc", "bitDefenderCode": null, "formSubmissionId": null, "createdAt": "2025-11-18T19:45:55.013Z", "updatedAt": "2025-11-18T19:52:18.493Z", "parts": [], "inventoryItem": { "id": "inv-bbbbbbbb-cccc-dddd-eeee-ffffffffffff", "storeId": "store-12345678-1234-1234-1234-123456789012", "groupingId": null, "sku": "iP11BATT", "manufacturer": "China", "category": "Part", "type": "Part - Phone", "name": "iPhone 11 Battery", "cost": 11.35, "inventoried": true, "serialized": false, "instock": 0, "condition": "New", "bin": "", "supplierId": null, "price": 0, "createdAt": "2025-02-01T14:26:00.177Z", "updatedAt": "2025-03-28T16:34:59.000Z", "note": "", "active": true, "serialNum": null, "isRebate": false, "taxFree": false, "repairProvider": null, "tradeinDevice": false, "storage": null, "color": null, "carrier": null, "tradeInCondition": null, "tradeInStatus": null, "additionalInfo": null, "isMotorolaSku": false }, "assignee": { "id": "user-12345678-1234-1234-1234-123456789abc", "name": "Your Store Name Here Machine User", "email": "", "phone": null, "hiredOn": null, "lastDay": null, "password": "", "pin": null, "akkoSalesRepId": null, "payRate": null, "maxDiscount": null, "discountType": "PERCENTAGE", "priceOverride": false, "discountCode": null, "canAddCredit": false, "displayCost": false, "displayMetrics": false, "editTimeclock": true, "addNewInventoryItems": true, "editInventoryItems": false, "deleteInventoryItems": true, "changeGroupInfo": false, "editShifts": false, "deleteTickets": false, "manageMPCustomers": false, "createdAt": "2025-05-28T18:28:03.043Z", "updatedAt": "2025-05-28T18:28:03.043Z" }, "formSubmission": null } ], "checkinDevices": [ { "id": "device-12345678-1234-1234-1234-123456789012", "checkinTicketId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "item": "iPhone 11", "serialNumber": "", "password": "", "status": "Opened", "deviceType": "Phone", "model": "", "storage": "256GB", "color": "", "carrier": "", "note": "", "patternLock": "[]", "tradeinDevice": false, "quoteValue": "", "condition": "", "formSubmissionId": null, "completedFormSubmissionId": null, "formSubmission": null, "completedFormSubmission": null } ], "checkinPayments": [ { "id": "payment-11112222-3333-4444-5555-666677778888", "checkinTicketId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "recordedById": "user-12345678-1234-1234-1234-123456789abc", "tipAssigneeId": null, "externalId": null, "externalType": null, "registerId": null, "method": "Cash", "amount": 61.77, "change": 0, "tip": 0, "processingFee": 0, "status": "", "active": true, "refundedAmount": 0, "paymentTransactionChainId": null, "createdAt": "2025-11-18T19:47:04.010Z", "updatedAt": "2025-11-18T19:52:18.459Z", "recordedBy": { "id": "user-12345678-1234-1234-1234-123456789abc", "name": "Your Store Name Here Machine User", "email": "", "phone": null, "hiredOn": null, "lastDay": null, "password": "", "pin": null, "akkoSalesRepId": null, "payRate": null, "maxDiscount": null, "discountType": "PERCENTAGE", "priceOverride": false, "discountCode": null, "canAddCredit": false, "displayCost": false, "displayMetrics": false, "editTimeclock": true, "addNewInventoryItems": true, "editInventoryItems": false, "deleteInventoryItems": true, "changeGroupInfo": false, "editShifts": false, "deleteTickets": false, "manageMPCustomers": false, "createdAt": "2025-05-28T18:28:03.043Z", "updatedAt": "2025-05-28T18:28:03.043Z" } } ], "checkinNotes": [ { "id": "note-99999999-8888-7777-6666-555555555555", "checkinTicketId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdById": "user-12345678-1234-1234-1234-123456789abc", "note": "<p>Battery dying, needs replacements</p>", "displayOnInvoice": false, "createdAt": "2025-11-18T19:52:18.459Z", "createdBy": { "id": "user-12345678-1234-1234-1234-123456789abc", "name": "Your Store Name Here Machine User", "email": "", "phone": null, "hiredOn": null, "lastDay": null, "password": "", "pin": null, "akkoSalesRepId": null, "payRate": null, "maxDiscount": null, "discountType": "PERCENTAGE", "priceOverride": false, "discountCode": null, "canAddCredit": false, "displayCost": false, "displayMetrics": false, "editTimeclock": true, "addNewInventoryItems": true, "editInventoryItems": false, "deleteInventoryItems": true, "changeGroupInfo": false, "editShifts": false, "deleteTickets": false, "manageMPCustomers": false, "createdAt": "2025-05-28T18:28:03.043Z", "updatedAt": "2025-05-28T18:28:03.043Z" } } ], "checkinTicketActivities": [ { "id": "activity-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "checkinTicketId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "userId": "user-12345678-1234-1234-1234-123456789abc", "type": "ITEMS_CHANGED", "metadata": "{\"updateType\":\"Added\",\"itemName\":\"iPhone 11 Battery Repair\",\"itemSku\":\"AP-IPHO-11-9371\"}", "createdAt": "2025-11-18T19:52:18.498Z" }, { "id": "activity-bbbbbbbb-cccc-dddd-eeee-ffffffffffff", "checkinTicketId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "userId": "user-12345678-1234-1234-1234-123456789abc", "type": "ITEMS_CHANGED", "metadata": "{\"updateType\":\"Added\",\"itemName\":\"iPhone 11 Battery\",\"itemSku\":\"iP11BATT\"}", "createdAt": "2025-11-18T19:52:18.498Z" }, { "id": "activity-cccccccc-dddd-eeee-ffff-000000000000", "checkinTicketId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "userId": "user-12345678-1234-1234-1234-123456789abc", "type": "DEVICES_CHANGED", "metadata": "{\"updateType\":\"Added\",\"device\":{\"item\":\"iPhone 11\",\"serialNumber\":\"\",\"password\":\"\",\"status\":\"Opened\",\"deviceType\":\"Phone\",\"model\":\"\",\"storage\":\"256GB\",\"color\":\"\",\"carrier\":\"\",\"condition\":\"\",\"note\":\"\",\"patternLock\":\"[]\",\"formSubmissionId\":null,\"completedFormSubmissionId\":null,\"quoteValue\":\"\",\"tradeinDevice\":false}}", "createdAt": "2025-11-18T19:52:18.498Z" }, { "id": "activity-dddddddd-eeee-ffff-0000-111111111111", "checkinTicketId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "userId": "user-12345678-1234-1234-1234-123456789abc", "type": "CREATION", "metadata": "{\"customer\":\"John Doe\"}", "createdAt": "2025-11-18T19:52:18.498Z" } ], "myProtectionPlans": [] } ] }
Create Check-in Ticket
Create new tickets for sales or repairs.
HTTP Request
httpPOST /api/v2/checkin-ticket
Sales Ticket Example
json{ "type": "Sales", "customer": { "id": "cust-55555555-6666-7777-8888-999999999999", "lastName": "Tribiani", "firstName": "Joey" }, "checkinItems": [ { "tax": 1.3993, "parts": [], "status": "Sold", "discount": 0, "quantity": 1, "createdAt": "2025-11-18T20:13:51.469Z", "assigneeId": null, "originalCost": 1.99, "originalPrice": 19.99, "inventoryItemId": "inv-cccccccc-dddd-eeee-ffff-111111111111", "isTaxOverridden": false, "formSubmissionId": null } ], "checkinPayments": [ { "tip": 0, "amount": 21.39, "change": 0, "method": "Card", "status": "N/A", "createdAt": "2025-11-18T20:14:02.198Z", "externalId": null, "registerId": null, "externalType": null, "processingFee": 0, "tipAssigneeId": null, "refundedAmount": 0, "paymentTransactionChainId": null } ], "formSubmissionId": [], "myProtectionPlans": [] }
Repair Ticket Example
{ "type": "Repair", "storageBin": "", "initialNote": { "note": "<p>Battery dying, needs replacement</p>", "displayOnInvoice": false }, "notToExceed": 0, "customer": { "id": "cust-77777777-8888-9999-0000-111111111111", "lastName": "Doe", "firstName": "John" }, "checkinItems": [ { "tax": 0.77, "parts": [], "status": "Sold", "discount": 0, "quantity": 1, "createdAt": "2025-11-18T19:45:55.013Z", "assigneeId": null, "originalCost": 11.35, "originalPrice": 0, "inventoryItemId": "inv-dddddddd-eeee-ffff-0000-222222222222", "isTaxOverridden": false, "overriddenPrice": 11, "formSubmissionId": null }, { "tax": 0, "parts": [], "status": "Sold", "discount": 0, "quantity": 1, "createdAt": "2025-11-18T19:46:00.206Z", "assigneeId": null, "originalCost": 0, "originalPrice": 0, "inventoryItemId": "inv-eeeeeeee-ffff-0000-1111-333333333333", "isTaxOverridden": false, "overriddenPrice": 50, "formSubmissionId": null } ], "checkinDevices": [ { "item": "iPhone 11", "note": "", "color": "", "model": "", "status": "Opened", "carrier": "", "storage": "256GB", "password": "", "condition": "", "deviceType": "Phone", "quoteValue": "", "patternLock": "[]", "serialNumber": "", "tradeinDevice": false, "formSubmissionId": null, "completedFormSubmissionId": null } ], "trackingNumber": "", "waitingForPart": false, "checkinPayments": [ { "tip": 0, "amount": 61.77, "change": 0, "method": "Cash", "status": "", "createdAt": "2025-11-18T19:47:04.010Z", "externalId": null, "registerId": null, "externalType": null, "processingFee": 0, "tipAssigneeId": null, "refundedAmount": 0, "paymentTransactionChainId": null } ], "formSubmissionId": [], "myProtectionPlans": [], "customerPossession": false }
Required Fields
| Ticket Type | Required Fields |
|---|---|
| Sales |
Response
json{ "createdTicket": { "id": "ticket-new-12345678-1234-1234-1234-123456789012", "orgId": "org-abcdef-123456", "ticketNumber": 2646, "active": true, "assigneeId": "user-12345678-1234-1234-1234-123456789abc", "customerId": "cust-55555555-6666-7777-8888-999999999999", "order": null, "type": "Sales", "status": "Opened", "closedAt": null, "warrantyPeriodEnd": null, "isWarranty": false, "isReturn": false, "notToExceed": null, "appointmentTime": null, "customerPossession": null, "storageBin": null, "waitingForPart": null, "shipper": null, "trackingNumber": null, "shipstationShipmentId": null, "labelURL": null, "claimRepairProvider": null, "createdAt": "2025-11-18T20:17:06.717Z", "updatedAt": "2025-11-18T20:17:06.723Z" } }
Update Check-in Ticket
Update existing tickets. Two update modes are available:
HTTP Request
httpPATCH /api/v2/checkin-ticket/{ticketId}
1. Status Change Mode
Use when updating ticket status (e.g closing) or changing assignees on ticket or items (contains status field on request body, even if not editing the status specifically):
json{ "status": "ReadyForPickup", "assigneeId": "user-abcdef12-3456-7890-abcd-ef1234567890" }
2. Field Edit Mode
Use when updating ticket details like items, parts, customer or devices (does not contain status field on the request body):
json{ "type": "Sales", "updateKey": 4114996984045216, "checkinItems": [ { "tax": 7, "parts": [], "status": "Sold", "discount": 0, "quantity": 1, "createdAt": "2025-11-18T20:48:53.556Z", "assigneeId": null, "originalCost": 0, "originalPrice": 0, "inventoryItemId": "inv-ffffffff-0000-1111-2222-444444444444", "isTaxOverridden": false, "overriddenPrice": 100, "formSubmissionId": null } ], "checkinPayments": [], "myProtectionPlans": [] }
⚠️ Important: Update Behavior When Editing Fields
When the ticket update, the API logic calculates the difference between the current ticket state in our system and the request you sent in, then modifies the state to reflect your request by "overwriting" it.
This means if you want to add a customer to a ticket, in addition to your customer object you must also include all of the data you would get on the ticket GET endpoint otherwise you risk erasing that information from your ticket.
THe same logic applies to arrays, when updating them (items, devices, payments), the API replaces the entire array. Include all existing items you want to keep.
Example - Adding an item while keeping existing:
json{ // ...other ticket fields "checkinItems": [ { "id": "EXISTING_ITEM_001", "tax": 9, "parts": [], "status": "Sold", "discount": 0, "quantity": 1, "createdAt": "2025-11-18T20:48:53.556Z", "originalCost": 0, "originalPrice": 0, "inventoryItemId": "INV001" }, { "tax": 9, "parts": [], "status": "Sold", "discount": 0, "quantity": 1, "createdAt": "2025-11-18T20:48:53.556Z", "originalCost": 0, "originalPrice": 0, "inventoryItemId": "INV002" } ] }
Delete Check-in Ticket
Permanently delete a check-in ticket.
HTTP Request
httpDELETE /api/v2/checkin-ticket/{ticketId}
Response
json{ "success": true, "deletedTicket": { "id": "ticket-delete-12345678-1234-1234-1234-123456789012", "orgId": "org-abcdef-123456", "ticketNumber": 2645, "active": false, "assigneeId": "user-12345678-1234-1234-1234-123456789abc", "customerId": null, "order": null, "type": "Sales", "status": "ReadyForPickup", "closedAt": null, "warrantyPeriodEnd": null, "isWarranty": false, "isReturn": false, "notToExceed": null, "appointmentTime": null, "customerPossession": null, "storageBin": null, "waitingForPart": false, "shipper": null, "trackingNumber": null, "shipstationShipmentId": null, "labelURL": null, "claimRepairProvider": null, "createdAt": "2025-11-18T20:14:26.007Z", "updatedAt": "2025-11-18T21:11:20.184Z" } }
Add Note to Ticket
Add notes to existing tickets.
HTTP Request
httpPOST /api/v2/checkin-ticket/{ticketId}/note
Request
json{ "note": "Customer called for status update. Parts expected tomorrow.", "displayOnInvoice": false }
Response
json{ "id": "note-new-12345678-1234-1234-1234-123456789012", "checkinTicketId": "ticket-new-12345678-1234-1234-1234-123456789012", "createdById": "user-12345678-1234-1234-1234-123456789abc", "note": "Customer called for status update. Parts expected tomorrow.", "displayOnInvoice": false, "createdAt": "2025-11-18T21:26:05.254Z", "createdBy": { "name": "Your Store Name Here Machine User", "email": "" } }
⚠️ Error Handling
Common Error Responses
400 - Validation Error
json{ "success": false, "errors": [ { "code": "invalid_union_discriminator", "options": [ "Sales", "Repair" ], "path": [ "type" ], "message": "Invalid discriminator value. Expected 'Sales' | 'Repair'" } ] }
401 - Unauthorized
json"Unauthorized"