{"openapi":"3.1.0","info":{"title":"Praxedo Public REST APIs","version":"1.0.68","description":"Please find new REST APIs developped by Praxedo.\n\nPraxedo offer three range of Rate Limit :\n- High : 4000 PTH \u0026 120 PTM\n- Standard : 2000 PTH \u0026 60 PTM\n- Low : 1000 PTH \u0026 30 PTM","contact":{"name":"Praxedo","url":"https://www.praxedo.com/","email":"support@praxedo.com"}},"servers":[{"url":"https://ws-{node}.praxedo.com","description":"The node of your Praxedo instance (eu1, am1...).","variables":{"node":{"default":"eu1"}}}],"security":[{"BearerAuthentication":[]}],"tags":[{"name":"Referentials","description":"Manage referentials (customers, sites, assets)."},{"name":"Business organization","description":"Manage staff (web users, field users, skills, machines, characteristics...) and item catalog."},{"name":"Rostering","description":"Optimize adequation between constraints and resources."},{"name":"Diagnostic","description":"Create and diagnostic work order (notes, instructions, expected items...)."},{"name":"Project management","description":"Link work orders to their parent (project, route or standard service order)."},{"name":"Scheduling","description":"Schedule work orders and retrieve their scheduling datas. Pair with the `status.scheduled` webhook for real-time updates."},{"name":"Field Service","description":"Retrieve field services datas (used items for instance)."},{"name":"Field tracking","description":"Retrieve field tracking datas (activity \u0026 positions)"},{"name":"Webhooks","description":"Subscribe to Praxedo webhooks"}],"x-topics":[{"title":"Praxedo domains","content":"# Praxedo domains\n\n\u003e info\n\u003e Praxedo's API is organised around business **domains**. Each domain groups a set of related objects and is typically mastered either in Praxedo or in one of your systems.\n\n## Supporting Domains (Enabling Infrastructure)\n\nThese domains configure and support core operations.\n\n**Referentials — Master data that grounds the system**\n\n- Objects: Customers, Sites, Assets, Contracts.\n- They are usually managed in your ERP/CRM system.\n\n#### Business Organization — Organizational structure and roles management\n\n- Objects: Users (web or mobile), Business Units, Item Catalog.\n- They are usually managed in your HR system for staffs or CRM/ERP system for business units and catalog\n\n#### Contracting — Contractor and sub-contractor management\n\n- Objects: Contractors, Sub-contractors.\n- They are usually managed in your Billing system.\n\n#### Inventory — Stock and spare parts management\n\n- Objects: Stores, Stocks, Available items.\n- They are usually managed in your ERP system.\n\n\n## Core Domains (Business Critical)\n\nThese domains directly support field service operations and are central to Praxedo's value.\n\n**Diagnostic — Service request analysis and work type determination**\n\n- Objects: Work Order, Work Order Type, Slas, Instructions, required Skills or Characteristics...\n- They are usually managed in both Praxedo and an ERP / CRM system. Define ownership clearly.\n\n#### Rostering — Resource availability and shift management\n\n- Objects: Resources, Availabilities, Unavailabilities, Slots, Zones.\n- They are usually managed in Praxedo.\n\n#### Scheduling — Work order scheduling, resource allocation, and routing\n\n- Objects: Work Orders, Resources.\n- They are usually managed in Praxedo.\n\n#### Field Service — On-site execution and real-time operation\n\n- Objects: Status, Report, PDF, Item Usage.\n- They are usually managed in Praxedo.\n\n#### Field Tracking — Technician location and activity history\n\n- Objects: Positions, Activities.\n- They are usually managed in Praxedo.\n\n#### Electronic Document Management — Archiving and document management\n\n- Objects: Attachments\n- They are usually managed in Praxedo."},{"title":"Getting started","content":"# Getting Started\nGuidelines for using Praxedo REST APIs\n\nBefore starting any integration please read our [documentation](\u003chttps://support.praxedo.com/hc/en-us/sections/25001109724562-REST-Web-Services\u003e)\n\n## Authentication\n\nOAuth 2.0 application is required to authenticate your API calls\n\n```plaintext\nAuthorization: Bearer \u003caccess_token\u003e\n```\n\nSee here how to configure in Praxedo your [Oauth2 application](\u003chttps://support.praxedo.com/hc/en-us/articles/16700630262162-Configuring-your-OAuth-2-0-application\u003e)\n\n## Rate Limiting\n\nFind here the different range of Rate limit set for our endpoints.\n\n| **Rate limit range** | **Bandwidth**         |\n| --------------------- | ---------------------- |\n| High                  | 4000/PT1H or 110/PT1M |\n| Standard              | 2000/PT1H or 55/PT1M  |\n| Low                   | 1000/PT1H or 30/PT1M  |\n\n## HTTP errors code\n\n| Code | Status                | Description                                                                                  |\n| ---- | ---------------------- | ---------------------------------------------------------------------------------------------- |\n| 200  | OK                    | The request was successfully completed.                                                      |\n| 201  | Created               | A new resource was successfully created.                                                     |\n| 204  | Updated               | A resource was successfully updated.                                                         |\n| 400  | Bad Request           | The request was invalid.                                                                     |\n| 401  | Unauthorized          | The request did not include an authentication token or the authentication token was expired. |\n| 403  | Forbidden             | The client did not have permission to access the requested resource.                         |\n| 404  | Not Found             | The requested resource was not found.                                                        |\n| 500  | Internal Server Error | The request was not completed due to an internal error on the server side.                   |\n\n#### **Error Responses**\n\nAll errors include:\n\n* errorReference: A unique identifier for each error—provide this when contacting support\n* errors: An array of specific error messages with codes\n* message: Human-readable description\n\n#### Empty and null management in POST \u0026 PUT actions\n\n* If non-required fields have an empty string value, they will be saved and retrieved as empty string.\n* If non-required fields have a null value, they will be saved and retrieved as null.\n* If non-required fields are absent, they will be saved and retrieved as null.\n\n### **Date Formats**\n\nAll dates follow ISO-8601UTC :\n\n* **Date only**: YYYY-MM-DD (e.g., 2024-12-25)\n* **DateTime**: YYYY-MM-DDTHH:MM (e.g., 2024-12-25T15:30)\n* **Time only**: HH:MM (e.g., 14:36)\n\n### **Resource name**\n\n* singular, lower camelCase\n* the same rule applies for sub resources\n\n### **Nullable fields**\n\nFields marked as nullable can be omitted from requests or included as null. Both are valid. In responses, null fields indicate the property wasn't set.\n\n### **Case Sensitivity**\n\nCode fields (customerCode, siteCode, etc.) are **case-insensitive**. Internally, they're normalized to uppercase. Queries like customer-123 and CUSTOMER-123 return the same result.\n\n### **Hierarchical Resources**\n\nSome resources support parent-child relationships (sub-customers, sub-sites, sub-assets). A resource cannot be its own parent, and hierarchy depth is limited to 10 levels.\n\n### **Custom Fields**\n\nCustom fields are included as a map of field codes to field values. Field availability depends on your configuration. Invalid or unknown field codes will be rejected with a 400 error.\n\n### **Pagination for Lists**\n\nThe endpoint returns paginated results. Use the continuationToken from the response to fetch the next page. An empty continuation token indicates the final page.\n\n###"},{"title":"Webhooks guide","content":"# Webhooks\n\nWebhooks let you receive real-time event notifications from Praxedo instead of polling the API. This feature is currently in **Beta**.\n\n\u003e info\n\u003e Before using webhooks, please contact our Customer Care team (support@praxedo.com) or your Account Manager.\n\n## Managing subscriptions\n\nSubscriptions are managed through the `Webhooks` endpoints below (create, list and delete a subscription). A few rules apply:\n\n- You can create up to 3 subscriptions per OAuth 2.0 application.\n- Subscriptions cannot be modified once created — to change a callback URL (e.g. from staging to production), create a new subscription.\n- You only receive notifications from the office and sub-offices associated with your OAuth 2.0 application.\n\nSee [Configuring your OAuth 2.0 application](https://support.praxedo.com/hc/en-us/articles/16700630262162-Configuring-your-OAuth-2-0-application) to set up the application your subscriptions will be attached to.\n\n## Event delivery\n\nOnce a subscription is active, matching events are sent as JSON to your callback URL. The payload and headers for each event type are documented in the Webhooks section below.\n\n**Retry policy**\n\n- Acknowledge every callback with a `200` status within 5 seconds, or a retry will be triggered.\n- Automatic retries use an exponential back-off, up to a 10-minute interval between attempts.\n- Retries stop after 1 hour of attempts for a given event.\n- Because retries can occur, the same event may be delivered more than once. Acknowledge immediately and process the notification asynchronously, and make your handler idempotent (for example, de-duplicate on the callback's `id` field).\n\n**Subscription policy**\n\n- During the Beta phase, subscriptions are not automatically disabled, but this will change for callback servers that continuously error.\n- Praxedo may delete a subscription that causes system stress. When this happens, all data for that subscription and its event history are permanently deleted and cannot be recovered.\n\n## Headers\n\nEach callback request includes standard infrastructure headers plus the following:\n\n| Header | Description |\n| --- | --- |\n| `x-praxedo-event` | The event type carried by this callback (e.g. `workorder.deletion`). |\n| `x-praxedo-secret` | The custom security header defined when the subscription was created, used to verify the callback's authenticity. `null` if none was set. |\n\nAny custom headers you configured at subscription creation are also included as-is.\n\n## Service Level Agreement\n\n- **Uptime**: Praxedo guarantees 99.9% monthly uptime for the webhooks service, excluding scheduled maintenance.\n- **Client responsibility**: you are responsible for the uptime and accessibility of your callback URL. Praxedo attempts delivery for up to 1 hour and is not responsible for data loss once that retry window has expired.\n- **Traceability**: delivered events are stored and traceable for 15 days in case of delivery failure.\n- **Support**: contact support@praxedo.com with your subscription ID and a description of the issue. Support is available 9:00 AM–5:00 PM CET, Monday to Friday, with an initial response to critical issues within 24 hours.\n\nNote: This is a Beta version — features, endpoints and payloads may change before general availability."}],"paths":{"/eTech/rest/ws/fieldTracking/v1/technicians/code:{technicianCode}/positions":{"get":{"tags":["Field tracking"],"summary":"Get list of technician positions","description":"This API endpoint returns paginated lists of technician positions. Data is sorted by timestamp. Pagination is fixed at 500 objects per page. An empty response indicates the final page.\n\nRate limit range : Low","operationId":"get-fieldTracking-technicianCode-positions","parameters":[{"$ref":"#/components/parameters/technicianCode"},{"$ref":"#/components/parameters/positionsStartDate"},{"$ref":"#/components/parameters/continuationToken"}],"responses":{"200":{"$ref":"#/components/responses/200_fieldTracking_positions"},"400":{"$ref":"#/components/responses/400_fieldTracking_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_fieldTracking_technician_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/fieldTracking/v1/workOrders/code:{workOrderCode}/activities":{"get":{"tags":["Field tracking"],"summary":"Get list of work order activities","description":"This API endpoint returns paginated lists of work order activities. Data is sorted by startDate. Pagination is fixed at 200 objects per page. An empty response indicates the final page.\n\nPair with the Praxedo webhook for near-real-time invoicing or stock synchronisation.\n\nRate limit range : High","operationId":"get-fieldTracking-workOrderCode-activities","parameters":[{"$ref":"#/components/parameters/workOrderCode"},{"$ref":"#/components/parameters/validationStatus"},{"$ref":"#/components/parameters/invoicingStatus"},{"$ref":"#/components/parameters/continuationToken"}],"responses":{"200":{"$ref":"#/components/responses/200_fieldTracking_activities"},"400":{"$ref":"#/components/responses/400_fieldTracking_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_fieldTracking_workOrder_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/fieldTracking/v1/workOrders/uuid:{workOrderUuid}/activities":{"get":{"tags":["Field tracking"],"summary":"Get list of work order activities by uuid","description":"This API endpoint returns paginated lists of work order activities. Data is sorted by startDate. Pagination is fixed at 200 objects per page. An empty response indicates the final page.\n\nPair with the Praxedo webhook for near-real-time invoicing or stock synchronisation.\n\nRate limit range : High","operationId":"get-fieldTracking-workOrderUuid-activities","parameters":[{"$ref":"#/components/parameters/workOrderUuid"},{"$ref":"#/components/parameters/validationStatus"},{"$ref":"#/components/parameters/invoicingStatus"},{"$ref":"#/components/parameters/continuationToken"}],"responses":{"200":{"$ref":"#/components/responses/200_fieldTracking_activities"},"400":{"$ref":"#/components/responses/400_fieldTracking_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_fieldTracking_workOrder_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/rest/v3/slots/search":{"servers":[{"url":"https://availableslots-production-1.praxedo.com/","description":"EU servers URL"},{"url":"https://availableslots-production-2.praxedo.com/","description":"AM2 server URL"},{"url":"https://availableslots-production-3.praxedo.com/","description":"AM1 server URL"}],"post":{"tags":["Rostering"],"summary":"Search for available slots","description":"Finds the available time ranges for qualified field resources to carry out a given type of work order. Given a work order type and a location, the service allows to find the available intervals during which field resources possessing the needed skills have enough time to travel to the work order site from the previous site, perform the work order, and travel to the site of the next work order.  \nUse https://availableslots-production-1.praxedo.com/rest/v3/slots/search for EU instances.  \nUse https://availableslots-production-2.praxedo.com/rest/v3/slots/search for AM2.  \nUse https://availableslots-production-3.praxedo.com/rest/v3/slots/search for AM1.","operationId":"getSlots","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotQuery"},"examples":{"Minimal slot search":{"$ref":"#/components/examples/SlotSearchMinimal"},"Slot search over a time range with skills and offices":{"$ref":"#/components/examples/SlotSearchWithRequirements"},"Slot search with result configuration":{"$ref":"#/components/examples/SlotSearchWithConfiguration"},"Slot search ignoring the capacity model":{"$ref":"#/components/examples/SlotSearchIgnoreCapacityModel"}}}},"required":true},"responses":{"200":{"$ref":"#/components/responses/200_rostering_slots"},"400":{"$ref":"#/components/responses/400_rostering_slots_bad_request"},"1001":{"description":"The work order type is missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"1002":{"description":"A list of time ranges or a an appointment date is missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"1003":{"description":"Received a request requesting slots related to field resources in charge of an area (enableZoneFilter = 'true'). However, no zip code has been provided to help identify the area in which the work order will take place","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2001":{"description":"The provided work order type does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2002":{"description":"At least one of the provided offices does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2003":{"description":"The provided dates are in the past","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2004":{"description":"The end date of the search interval is earlier than the start date","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2005":{"description":"The slot search period is too long. The maximum is 200 weeks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2006":{"description":"The 'offices' list accepts either 'codes' or 'ids', but not both. Please provide only one","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2007":{"description":"The provided areas do not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2008":{"description":"Maximal value for maximumSlotNumber is 700","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2009":{"description":"The skills list accepts either 'codes' or 'ids', but not both. Please provide only on","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2010":{"description":"The 'workOrder' can either be a code or an id. Please provide only one","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2011":{"description":"Invalid value '%s' for parameter 'areaScope'. Allowed values are: 'RESOURCE', 'TIMESLOT'","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2012":{"description":"The parameter 'customerPortalUser' cannot be used with the 'RESOURCE' area scopes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2013":{"description":"The parameter 'values' of 'startingHours' cannot be used with the 'FIRST_OF_THE_DAY' \"perResource\" option","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"2014":{"description":"The parameter 'appointmentDate' of 'availabilities' cannot be used with the 'FIRST_OF_THE_DAY' \"perResource\" option","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"3011":{"description":"The provided address couldn't be geocoded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"3021":{"description":"The provided [latitude, longitude] is out of range : [%s, %s]. Expected values : -90 \u003c latitude \u003c 90 and -180 \u003c longitude \u003c 180","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"3022":{"description":"Coordinates (0,0) are not accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"3031":{"description":"The travel times and distances could not be computed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"3032":{"description":"No route could be found to reach the work order destination (e.g. closed road, unreachable area)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}}}}},"/eTech/rest/ws/rostering/v1/crews":{"get":{"tags":["Rostering"],"summary":"List crews active over a period","description":"Returns the crews active over the requested period, with the participation intervals of each resource, so that you can match technician time with equipment time (for invoicing, for instance).\n\n**Rules**\n- Crews carrying a disabling date, or whose main resource is inactive, are not returned.\n- A crew is returned when at least one of its resources belongs to the office of the OAuth2 application or below. Secondary resources outside that hierarchy are hidden; the main resource is always shown.\n- The main resource is not repeated among the secondary resources. The report filler is not part of a crew.\n- Past periods can be queried: crews are returned as they are stored at call time.\n\nRate limit range : High","operationId":"get-rostering-crews","parameters":[{"$ref":"#/components/parameters/crewsStartDate"},{"$ref":"#/components/parameters/crewsEndDate"},{"$ref":"#/components/parameters/continuationToken"},{"$ref":"#/components/parameters/crewsSize"}],"responses":{"200":{"$ref":"#/components/responses/200_rostering_crews"},"400":{"$ref":"#/components/responses/400_rostering_crews_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/staff/v1/skills/code:{skillCode}":{"put":{"tags":["Business organization"],"summary":"Create or update a skill","description":"Creates a new skill if the `skillCode` provided does not exist, else\nupdates the existing skill.\n\nRate limit range : Standard","operationId":"put-staff-skill","parameters":[{"$ref":"#/components/parameters/skillCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Skill"},"examples":{"Skill Body Example 1":{"$ref":"#/components/examples/SkillBodyExample1"},"Skill Body Example 2":{"$ref":"#/components/examples/SkillBodyExample2"}}}}},"responses":{"201":{"$ref":"#/components/responses/201_staff_skill_created"},"204":{"$ref":"#/components/responses/204_staff_skill_updated"},"400":{"$ref":"#/components/responses/400_staff_skill_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/staff/v1/skills":{"get":{"tags":["Business organization"],"summary":"Get a list of skills","description":"This API endpoint returns paginated lists of skills. Data is sorted alphabetically by code. Pagination is fixed at 500 objects per page. An empty response indicates the final page.\n\nRate limit range : Standard","operationId":"get-staff-skills","parameters":[{"$ref":"#/components/parameters/continuationToken"}],"responses":{"200":{"$ref":"#/components/responses/200_staff_skills"},"400":{"$ref":"#/components/responses/400_staff_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/staff/v1/characteristics":{"get":{"tags":["Business organization"],"summary":"Get a list of characteristics","description":"This API endpoint returns paginated lists of characteristics. Data is sorted alphabetically by code. Pagination is fixed at 500 objects per page. An empty response indicates the final page.\n\nRate limit range : Standard","operationId":"get-staff-characteristics","parameters":[{"$ref":"#/components/parameters/continuationToken"}],"responses":{"200":{"$ref":"#/components/responses/200_staff_characteristics"},"400":{"$ref":"#/components/responses/400_staff_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/referentials/v1/customers/code:{customerCode}":{"get":{"tags":["Referentials"],"summary":"Get a customer","description":"Return the customer object if the `customerCode` exists.\n\nRate limit range : High","operationId":"get-referentials-customer","parameters":[{"$ref":"#/components/parameters/customerCode"}],"responses":{"200":{"$ref":"#/components/responses/200_referentials_customer"},"400":{"$ref":"#/components/responses/400_referentials_customer_get_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_referentials_customer_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}},"put":{"tags":["Referentials"],"summary":"Create or update a customer","description":"Creates a new customer if the `customerCode` provided does not exist,\nelse updates the existing customer.\n\nRate limit range : Standard","operationId":"put-referentials-customer","parameters":[{"$ref":"#/components/parameters/customerCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"},"examples":{"New Customer with all fields":{"$ref":"#/components/examples/NewCustomerWithAllFields"},"New customer with mandatory fields only":{"$ref":"#/components/examples/NewCustomerWithMandatoryFieldsOnly"},"Update customer with all fields":{"$ref":"#/components/examples/UpdateCustomerWithAllFields"},"Update customer with mandatory fields only":{"$ref":"#/components/examples/UpdateCustomerWithMandatoryFieldsOnly"},"New sub customer":{"$ref":"#/components/examples/NewSubCustomer"}}}}},"responses":{"201":{"$ref":"#/components/responses/201_referentials_customer_created"},"204":{"$ref":"#/components/responses/204_referentials_customer_updated"},"400":{"$ref":"#/components/responses/400_referentials_customer_put_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/referentials/v1/sites/code:{siteCode}":{"get":{"tags":["Referentials"],"summary":"Get a site","description":"Return the site object if the `siteCode` exists.\n\nRate limite range : High","operationId":"get-referentials-site","parameters":[{"$ref":"#/components/parameters/siteCode"}],"responses":{"200":{"$ref":"#/components/responses/200_referentials_site"},"400":{"$ref":"#/components/responses/400_referentials_site_get_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_referentials_site_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}},"put":{"tags":["Referentials"],"summary":"Create or update a site","description":"Creates a new site if the `siteCode` provided does not exist, else\nupdates the existing site.\n\nRate limit range : Standard","operationId":"put-referentials-site","parameters":[{"$ref":"#/components/parameters/siteCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Site"},"examples":{"New root site with all fields":{"$ref":"#/components/examples/NewRootSiteWithAllFields"},"New site with mandatory fields only":{"$ref":"#/components/examples/NewSiteWithMandatoryFieldsOnly"},"Update site with all fields":{"$ref":"#/components/examples/UpdateSiteWithAllFields"},"Update site with mandatory fields only":{"$ref":"#/components/examples/UpdateSiteWithMandatoryFieldsOnly"},"New sub site":{"$ref":"#/components/examples/NewSubSite"}}}}},"responses":{"201":{"$ref":"#/components/responses/201_referentials_site_created"},"204":{"$ref":"#/components/responses/204_referentials_site_updated"},"400":{"$ref":"#/components/responses/400_referentials_site_put_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/referentials/v1/assets/code:{assetCode}":{"get":{"tags":["Referentials"],"summary":"Get an asset","description":"Return the asset object if the `assetCode` exists.\n\nRate limit range : High","operationId":"get-referentials-asset","parameters":[{"$ref":"#/components/parameters/assetCode"}],"responses":{"200":{"$ref":"#/components/responses/200_referentials_asset"},"400":{"$ref":"#/components/responses/400_referentials_asset_get_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_referentials_asset_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}},"put":{"tags":["Referentials"],"summary":"Create or update an asset","description":"Creates or updates an asset. Assets without sub-assets can be transferred via this endpoint. A separate `transferAsset` endpoint for moving parent assets and their sub-assets to another site or office is planned for a future release.\n\nRate limit range: Standard","operationId":"put-referentials-asset","parameters":[{"$ref":"#/components/parameters/assetCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"},"examples":{"New Asset with all fields":{"$ref":"#/components/examples/NewAssetWithAllFields"},"New asset with mandatory fields only":{"$ref":"#/components/examples/NewAssetWithMandatoryFieldsOnly"},"Update asset with all fields":{"$ref":"#/components/examples/UpdateAssetWithAllFields"},"Update asset with mandatory fields only":{"$ref":"#/components/examples/UpdateAssetWithMandatoryFieldsOnly"},"New sub asset":{"$ref":"#/components/examples/NewSubAsset"}}}}},"responses":{"201":{"$ref":"#/components/responses/201_referentials_asset_created"},"204":{"$ref":"#/components/responses/204_referentials_asset_updated"},"400":{"$ref":"#/components/responses/400_referentials_asset_put_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/businessOrganization/v1/items/code:{itemCode}":{"put":{"tags":["Business organization"],"summary":"Create or update an item","description":"Creates a new item if the `itemCode` provided does not exist, else\nupdates the existing item.\n\nRate limit range : Standard","operationId":"put-businessOrganization-item","parameters":[{"$ref":"#/components/parameters/itemCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemRequest"},"examples":{"New item with all fields":{"$ref":"#/components/examples/NewItemWithAllFields"},"New item with mandatory fields only":{"$ref":"#/components/examples/NewItemWithMandatoryFieldsOnly"},"Update item with all fields":{"$ref":"#/components/examples/UpdateItemWithAllFields"},"Update item with mandatory fields only":{"$ref":"#/components/examples/UpdateItemWithMandatoryFieldsOnly"},"Item with no unit price":{"$ref":"#/components/examples/ItemWithNoUnitPrice"}}}}},"responses":{"201":{"$ref":"#/components/responses/201_businessOrganization_item_created"},"204":{"$ref":"#/components/responses/204_businessOrganization_item_updated"},"400":{"$ref":"#/components/responses/400_businessOrganization_item_put_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}},"get":{"tags":["Business organization"],"summary":"Get an item","description":"Return the item object if the `itemCode` exists.\n\nRate limit range : High","operationId":"get-businessOrganization-item","parameters":[{"$ref":"#/components/parameters/itemCode"}],"responses":{"200":{"$ref":"#/components/responses/200_businessOrganization_item"},"400":{"$ref":"#/components/responses/400_businessOrganization_item_get_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_businessOrganization_item_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/businessOrganization/v1/items":{"get":{"tags":["Business organization"],"summary":"Get a list of items","description":"This API endpoint returns paginated lists of items. Data is sorted\nalphabetically by itemCode. Pagination is fixed at 200 objects per page.\nAn empty response indicates the final page.\n\nRate limit range : Low","operationId":"get-referentials-items","parameters":[{"$ref":"#/components/parameters/continuationToken"}],"responses":{"200":{"$ref":"#/components/responses/200_businessOrganization_items"},"400":{"$ref":"#/components/responses/400_businessOrganization_items_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/rest/ws/webhooks/v1/subscriptions":{"servers":[{"url":"https://webhooks-production-1.praxedo.com","description":"EU servers URL"},{"url":"https://webhooks-production-2.praxedo.com","description":"AM2 server URL"},{"url":"https://webhooks-production-3.praxedo.com","description":"AM1 server URL"}],"post":{"x-state":"Experimental","tags":["Webhooks"],"summary":"Create a subscription","description":"Creates a new webhook subscription for specified event types.","operationId":"post-webhooks-subscriptions","requestBody":{"required":true,"description":"Request payload to create a webhook subscription.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionRequest"},"examples":{"SubscriptionRequest":{"$ref":"#/components/examples/SubscriptionRequest"},"SubscriptionRequestNoSecret":{"$ref":"#/components/examples/SubscriptionRequestNoSecret"},"SubscriptionRequestNoCustomHeaders":{"$ref":"#/components/examples/SubscriptionRequestNoCustomHeaders"}}}}},"responses":{"201":{"$ref":"#/components/responses/201_webhooks_subscription_created"},"400":{"$ref":"#/components/responses/400_webhooks_subscription_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"422":{"$ref":"#/components/responses/422_webhooks_subscription_unprocessable"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}},"get":{"x-state":"Experimental","tags":["Webhooks"],"summary":"Get the list of subscriptions","description":"Retrieves a subscription list related to user's enterprise and belongs to his organizational unit.","operationId":"get-webhooks-subscriptions","responses":{"200":{"$ref":"#/components/responses/200_webhooks_subscriptions"},"401":{"$ref":"#/components/responses/401_unauthorized"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/rest/ws/webhooks/v1/subscriptions/{subscriptionId}":{"delete":{"x-state":"Experimental","tags":["Webhooks"],"summary":"Deletes a subscription.","description":"Delete a subscription related to user's enterprise and belongs to his organizational unit.","operationId":"delete-webhooks-subscription","parameters":[{"$ref":"#/components/parameters/subscriptionId"}],"responses":{"200":{"$ref":"#/components/responses/200_webhooks_subscription_deleted"},"401":{"$ref":"#/components/responses/401_unauthorized"},"404":{"$ref":"#/components/responses/404_webhooks_subscription_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/scheduling/v1/workOrders/code:{workOrderCode}":{"get":{"tags":["Scheduling"],"summary":"Get scheduling data of a work order","description":"Returns the scheduling data for a work order identified by its\n**business code**, provided the work order status is **SCHEDULED or\nlater**.\n\nPair this endpoint with the `status.scheduled` webhook to react in\nnear real-time when a work order is scheduled.\n\nRate limit range : High","operationId":"get-scheduling-workOrderCode","parameters":[{"$ref":"#/components/parameters/workOrderCode"}],"responses":{"200":{"$ref":"#/components/responses/200_scheduling_workOrder"},"400":{"$ref":"#/components/responses/400_scheduling_workOrder_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_scheduling_workOrder_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/scheduling/v1/workOrders/uuid:{workOrderUuid}":{"get":{"tags":["Scheduling"],"summary":"Get scheduling data of a work order by uuid","description":"Returns the scheduling data for a work order identified by its\n**uuid**, provided the work order status is **SCHEDULED or\nlater**.\n\nPair this endpoint with the `status.scheduled` webhook to react in\nnear real-time when a work order is scheduled.\n\nRate limit range : High","operationId":"get-scheduling-workOrderUuid","parameters":[{"$ref":"#/components/parameters/workOrderUuid"}],"responses":{"200":{"$ref":"#/components/responses/200_scheduling_workOrder"},"400":{"$ref":"#/components/responses/400_scheduling_workOrder_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_scheduling_workOrder_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/scheduling/v1/workOrders/code:{workOrderCode}/schedule":{"put":{"tags":["Scheduling"],"summary":"Schedule a work order","description":"Schedules or reschedules a work order identified by its **business code** (time window and field resources), so it appears in the planning and on the mobile application.\n\nRate limit range : Standard","operationId":"put-scheduling-workOrderCode-schedule","parameters":[{"$ref":"#/components/parameters/workOrderCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderScheduleRequest"},"examples":{"Time range with crew":{"$ref":"#/components/examples/SchedulingScheduleTimeRangeRequest"},"Day range with crew":{"$ref":"#/components/examples/SchedulingScheduleDayRangeRequest"},"Single day without hours":{"$ref":"#/components/examples/SchedulingScheduleSingleDayRequest"},"Mandatory fields only (qualified work order)":{"$ref":"#/components/examples/SchedulingScheduleMandatoryFieldsRequest"},"Reschedule skipping controls":{"$ref":"#/components/examples/SchedulingScheduleSkipControlsRequest"},"Change main resource only (pre-scheduled work order)":{"$ref":"#/components/examples/SchedulingScheduleFieldResourcesOnlyRequest"},"Empty body (pre-scheduled work order)":{"$ref":"#/components/examples/SchedulingScheduleEmptyRequest"}}}}},"responses":{"201":{"$ref":"#/components/responses/201_scheduling_schedule_created"},"204":{"$ref":"#/components/responses/204_scheduling_schedule_updated"},"400":{"$ref":"#/components/responses/400_scheduling_schedule_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/scheduling/v1/workOrders/uuid:{workOrderUuid}/schedule":{"put":{"tags":["Scheduling"],"summary":"Schedule a work order by uuid","description":"Schedules or reschedules a work order identified by its **uuid** (time window and field resources), so it appears in the planning and on the mobile application.\n\nRate limit range : Standard","operationId":"put-scheduling-workOrderUuid-schedule","parameters":[{"$ref":"#/components/parameters/workOrderUuid"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderScheduleRequest"},"examples":{"Time range with crew":{"$ref":"#/components/examples/SchedulingScheduleTimeRangeRequest"},"Day range with crew":{"$ref":"#/components/examples/SchedulingScheduleDayRangeRequest"},"Single day without hours":{"$ref":"#/components/examples/SchedulingScheduleSingleDayRequest"},"Mandatory fields only (qualified work order)":{"$ref":"#/components/examples/SchedulingScheduleMandatoryFieldsRequest"},"Reschedule skipping controls":{"$ref":"#/components/examples/SchedulingScheduleSkipControlsRequest"},"Change main resource only (pre-scheduled work order)":{"$ref":"#/components/examples/SchedulingScheduleFieldResourcesOnlyRequest"},"Empty body (pre-scheduled work order)":{"$ref":"#/components/examples/SchedulingScheduleEmptyRequest"}}}}},"responses":{"201":{"$ref":"#/components/responses/201_scheduling_schedule_created"},"204":{"$ref":"#/components/responses/204_scheduling_schedule_updated"},"400":{"$ref":"#/components/responses/400_scheduling_schedule_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/fieldService/v1/workOrders/code:{workOrderCode}/items/used":{"get":{"tags":["Field Service"],"summary":"Get list of used items on a work order","description":"Returns a paginated list of used items (consumed parts, labour, on-the-fly items)\ndeclared on the specified work order, sorted by lastUpdate descending.\n\nPair with the Praxedo webhook for near-real-time invoicing or stock synchronisation.\n\nRate limit range : High","operationId":"get-fieldService-workOrderCode-usedItems","parameters":[{"$ref":"#/components/parameters/workOrderCode"},{"$ref":"#/components/parameters/continuationToken"},{"$ref":"#/components/parameters/pageSize"},{"$ref":"#/components/parameters/invoiceMode"}],"responses":{"200":{"$ref":"#/components/responses/200_fieldService_usedItems"},"400":{"$ref":"#/components/responses/400_fieldService_usedItems_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_fieldService_workOrder_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/fieldService/v1/workOrders/uuid:{workOrderUuid}/items/used":{"get":{"tags":["Field Service"],"summary":"Get list of used items on a work order by uuid","description":"Returns a paginated list of used items (consumed parts, labour, on-the-fly items)\ndeclared on the specified work order, sorted by lastUpdate descending.\n\nPair with the Praxedo webhook for near-real-time invoicing or stock synchronisation.\n\nRate limit range : High","operationId":"get-fieldService-workOrderUuid-usedItems","parameters":[{"$ref":"#/components/parameters/workOrderUuid"},{"$ref":"#/components/parameters/continuationToken"},{"$ref":"#/components/parameters/pageSize"},{"$ref":"#/components/parameters/invoiceMode"}],"responses":{"200":{"$ref":"#/components/responses/200_fieldService_usedItems"},"400":{"$ref":"#/components/responses/400_fieldService_usedItems_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"404":{"$ref":"#/components/responses/404_fieldService_workOrder_not_found"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/diagnostic/v1/workOrders/code:{workOrderCode}/notes/code:{noteCode}":{"put":{"tags":["Diagnostic"],"summary":"Create or update a note on a work order","description":"Creates a note on the work order if no note with `noteCode` exists yet,\nelse updates the existing note's content / coordinates. Supports standard\nand custom notes. For custom notes tech visibility is always false.\n\n\nRate limit range : Low","operationId":"put-diagnostic-workOrder-note","parameters":[{"$ref":"#/components/parameters/workOrderCode"},{"$ref":"#/components/parameters/noteCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderNoteRequest"},"examples":{"Standard note":{"$ref":"#/components/examples/DiagnosticStandardNoteRequest"},"Incoming call note":{"$ref":"#/components/examples/DiagnosticIncomingCallNoteRequest"},"Outgoing call note":{"$ref":"#/components/examples/DiagnosticOutgoingCallNoteRequest"},"Report-based note - creation":{"$ref":"#/components/examples/DiagnosticReportBasedNoteCreateRequest"},"Report-based note - update":{"$ref":"#/components/examples/DiagnosticReportBasedNoteUpdateRequest"}}}}},"responses":{"201":{"$ref":"#/components/responses/201_diagnostic_note_created"},"204":{"$ref":"#/components/responses/204_diagnostic_note_updated"},"400":{"$ref":"#/components/responses/400_diagnostic_note_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/diagnostic/v1/workOrders/uuid:{workOrderUuid}/notes/code:{noteCode}":{"put":{"tags":["Diagnostic"],"summary":"Create or update a note on a work order by uuid","description":"Creates a note on the work order if no note with `noteCode` exists yet,\nelse updates the existing note's content / coordinates. Supports standard\nand custom notes. For custom notes tech visibility is always false.\n\n\nRate limit range : Low","operationId":"put-diagnostic-workOrderUuid-note","parameters":[{"$ref":"#/components/parameters/workOrderUuid"},{"$ref":"#/components/parameters/noteCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderNoteRequest"},"examples":{"Standard note":{"$ref":"#/components/examples/DiagnosticStandardNoteRequest"},"Incoming call note":{"$ref":"#/components/examples/DiagnosticIncomingCallNoteRequest"},"Outgoing call note":{"$ref":"#/components/examples/DiagnosticOutgoingCallNoteRequest"},"Report-based note - creation":{"$ref":"#/components/examples/DiagnosticReportBasedNoteCreateRequest"},"Report-based note - update":{"$ref":"#/components/examples/DiagnosticReportBasedNoteUpdateRequest"}}}}},"responses":{"201":{"$ref":"#/components/responses/201_diagnostic_note_created"},"204":{"$ref":"#/components/responses/204_diagnostic_note_updated"},"400":{"$ref":"#/components/responses/400_diagnostic_note_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/diagnostic/v1/workOrders/code:{workOrderCode}/flags":{"put":{"tags":["Diagnostic"],"summary":"Update flags on a work order","description":"Replaces the full set of flags on a work order identified by its\n**business code**. The work order can be at any status. The provided\nlist fully overrides the existing flags; an empty array clears all\nflags.\n\n\nRate limit range : High","operationId":"put-diagnostic-workOrder-flags","parameters":[{"$ref":"#/components/parameters/workOrderCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderFlagsRequest"},"examples":{"Set flags":{"$ref":"#/components/examples/DiagnosticSetWorkOrderFlagsRequest"},"Clear all flags":{"$ref":"#/components/examples/DiagnosticClearWorkOrderFlagsRequest"}}}}},"responses":{"204":{"$ref":"#/components/responses/204_diagnostic_flags_updated"},"400":{"$ref":"#/components/responses/400_diagnostic_flags_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/diagnostic/v1/workOrders/uuid:{workOrderUuid}/flags":{"put":{"tags":["Diagnostic"],"summary":"Update flags on a work order by uuid","description":"Replaces the full set of flags on a work order identified by its\n**uuid**. The work order can be at any status. The provided list fully\noverrides the existing flags; an empty array clears all flags.\n\n\nRate limit range : High","operationId":"put-diagnostic-workOrderUuid-flags","parameters":[{"$ref":"#/components/parameters/workOrderUuid"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderFlagsRequest"},"examples":{"Set flags":{"$ref":"#/components/examples/DiagnosticSetWorkOrderFlagsRequest"},"Clear all flags":{"$ref":"#/components/examples/DiagnosticClearWorkOrderFlagsRequest"}}}}},"responses":{"204":{"$ref":"#/components/responses/204_diagnostic_flags_updated"},"400":{"$ref":"#/components/responses/400_diagnostic_flags_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/projectManagement/v1/projects/code:{projectCode}/link":{"post":{"tags":["Project management"],"summary":"Link a work order to a project","description":"Links a stand-alone work order to a **project**, or moves it to another position within the project it already sits in, and declares the dependencies it takes on among the project's jobs. One work order is processed per call.\n\n**Rules**\n- The project must be filed at or above the office of the work order, and must not be completed.\n- The work order can be linked at any status.\n- A work order already in this project can be sent again to change its position. A work order held by another project leaves it to join this one, unless that other project is completed.\n- A work order or a project outside the hierarchy of the OAuth2 application is reported as unknown.\n- When a code is carried by a validated work order and a live one, the live one is linked. When several non-validated work orders carry the code, the call is refused as ambiguous.\n\nUnlinking is not covered by this endpoint.\n\nRate limit range : High","operationId":"post-projectManagement-project-link","parameters":[{"$ref":"#/components/parameters/projectCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderProjectLinkRequest"},"examples":{"Link last in the project":{"$ref":"#/components/examples/ProjectManagementProjectLinkLastRequest"},"Link at an index":{"$ref":"#/components/examples/ProjectManagementProjectLinkAtIndexRequest"},"Link after a task":{"$ref":"#/components/examples/ProjectManagementProjectLinkAfterTaskRequest"},"Link before a phase":{"$ref":"#/components/examples/ProjectManagementProjectLinkBeforePhaseRequest"},"Link with dependencies":{"$ref":"#/components/examples/ProjectManagementProjectLinkWithDependenciesRequest"},"Mandatory fields only":{"$ref":"#/components/examples/ProjectManagementProjectLinkMandatoryFieldsRequest"}}}}},"responses":{"204":{"$ref":"#/components/responses/204_projectManagement_workOrder_linked"},"400":{"$ref":"#/components/responses/400_projectManagement_project_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/projectManagement/v1/routeServiceOrders/code:{routeServiceOrderCode}/link":{"post":{"tags":["Project management"],"summary":"Link a work order to a route service order","description":"Links a stand-alone work order to a **route service order** (\"tournée\"), or moves it to another position within the service order it already sits in. One work order is processed per call.\n\nA route is scheduled and performed as a round of its own, so two extra rules apply:\n- the work order must be **qualified**. A work order already carried by a (pre-)scheduled route is no longer qualified, so it cannot be repositioned or moved from there;\n- the work order must not already be assigned to technicians other than the ones of the route.\n\nWhen the route is already scheduled or pre-scheduled, the work order is scheduled from the route (dates and technicians of the round).\n\n**Rules**\n- The route must be filed at or above the office of the work order, and must not be completed or validated.\n- A work order already in a service order can be sent again to move it. The service order it leaves must accept to let it go.\n- A work order or a service order outside the hierarchy of the OAuth2 application is reported as unknown. A code designating a standard or multi-equipment service order is reported as unknown too.\n\nUnlinking is not covered by this endpoint.\n\nRate limit range : High","operationId":"post-projectManagement-routeServiceOrder-link","parameters":[{"$ref":"#/components/parameters/routeServiceOrderCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderServiceOrderLinkRequest"},"examples":{"Link last in the service order":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkLastRequest"},"Link first in the service order":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkFirstRequest"},"Link at an index":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkAtIndexRequest"},"Link after another work order":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkAfterRequest"}}}}},"responses":{"204":{"$ref":"#/components/responses/204_projectManagement_workOrder_linked"},"400":{"$ref":"#/components/responses/400_projectManagement_routeServiceOrder_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}},"/eTech/rest/ws/projectManagement/v1/standardServiceOrders/code:{standardServiceOrderCode}/link":{"post":{"tags":["Project management"],"summary":"Link a work order to a standard service order","description":"Links a stand-alone work order to a **standard service order**, or moves it to another position within the service order it already sits in. One work order is processed per call.\n\nA standard service order only groups work orders for tracking: it takes a work order on at any status, whoever it is assigned to.\n\n**Rules**\n- The service order must be filed at or above the office of the work order, and must not be completed or validated.\n- A work order already in a service order can be sent again to move it. The service order it leaves must accept to let it go.\n- A work order or a service order outside the hierarchy of the OAuth2 application is reported as unknown. A code designating a route or multi-equipment service order is reported as unknown too.\n\nUnlinking is not covered by this endpoint.\n\nRate limit range : High","operationId":"post-projectManagement-standardServiceOrder-link","parameters":[{"$ref":"#/components/parameters/standardServiceOrderCode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderServiceOrderLinkRequest"},"examples":{"Link last in the service order":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkLastRequest"},"Link first in the service order":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkFirstRequest"},"Link at an index":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkAtIndexRequest"},"Link after another work order":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkAfterRequest"}}}}},"responses":{"204":{"$ref":"#/components/responses/204_projectManagement_workOrder_linked"},"400":{"$ref":"#/components/responses/400_projectManagement_standardServiceOrder_bad_request"},"401":{"$ref":"#/components/responses/401_unauthorized"},"403":{"$ref":"#/components/responses/403_forbidden"},"429":{"$ref":"#/components/responses/429_too_many_requests"},"500":{"$ref":"#/components/responses/500_internal_server_error"}}}}},"webhooks":{"workorder.validation":{"post":{"tags":["Diagnostic"],"summary":"Work order validated","description":"Sent when a work order is validated. Validation often triggers the invoicing process in the customer ERP/CRM.","operationId":"webhook-workorder-validation","security":[],"parameters":[{"$ref":"#/components/parameters/XPraxedoEvent"},{"$ref":"#/components/parameters/XPraxedoSecret"}],"requestBody":{"required":true,"description":"Callback payload sent to your subscription's callback URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderValidationEvent"},"examples":{"WorkOrderValidationEvent":{"$ref":"#/components/examples/WorkOrderValidationEvent"}}}}},"responses":{"200":{"description":"Return a 200 status to acknowledge the callback was received. Acknowledge immediately and process the notification asynchronously to avoid a time-out (5 seconds)."}}}},"workorder.deletion":{"post":{"tags":["Diagnostic"],"summary":"Work order deleted","description":"Sent when a work order is deleted from the Praxedo user interface or the SOAP web service.","operationId":"webhook-workorder-deletion","security":[],"parameters":[{"$ref":"#/components/parameters/XPraxedoEvent"},{"$ref":"#/components/parameters/XPraxedoSecret"}],"requestBody":{"required":true,"description":"Callback payload sent to your subscription's callback URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkOrderDeletionEvent"},"examples":{"WorkOrderDeletionEvent":{"$ref":"#/components/examples/WorkOrderDeletionEvent"}}}}},"responses":{"200":{"description":"Return a 200 status to acknowledge the callback was received. Acknowledge immediately and process the notification asynchronously to avoid a time-out (5 seconds)."}}}},"asset.upsert":{"post":{"tags":["Referentials"],"summary":"Asset created or updated","description":"Sent when an asset is created or updated from the Praxedo interface, the SOAP/REST web services, or the mobile application. This event does not distinguish between an asset creation and an asset update — treat an asset code you don't recognize as a new creation.","operationId":"webhook-asset-upsert","security":[],"parameters":[{"$ref":"#/components/parameters/XPraxedoEvent"},{"$ref":"#/components/parameters/XPraxedoSecret"}],"requestBody":{"required":true,"description":"Callback payload sent to your subscription's callback URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetUpsertEvent"},"examples":{"AssetUpsertEvent":{"$ref":"#/components/examples/AssetUpsertEvent"}}}}},"responses":{"200":{"description":"Return a 200 status to acknowledge the callback was received. Acknowledge immediately and process the notification asynchronously to avoid a time-out (5 seconds)."}}}}},"components":{"securitySchemes":{"BearerAuthentication":{"scheme":"bearer","type":"http","description":"Bearer tokens are usually generated by Auth server."}},"parameters":{"technicianCode":{"name":"technicianCode","in":"path","required":true,"description":"Business code of the technician.","schema":{"type":"string"},"example":"DHAJJAR"},"workOrderCode":{"name":"workOrderCode","in":"path","required":true,"description":"Business code of the work order. Case insensitive.","schema":{"type":"string"},"example":"WO-2026-00123"},"workOrderUuid":{"name":"workOrderUuid","in":"path","required":true,"description":"Uuid of the work order.","schema":{"type":"string","format":"uuid"},"example":"550e8400-e29b-41d4-a716-446655440000"},"customerCode":{"name":"customerCode","description":"Requested customer code, case insensitive.","in":"path","required":true,"schema":{"type":"string"},"examples":{"Customer Code":{"value":"customer-123456"},"Customer Code with space":{"value":"customer 123456"},"Customer Code with special character":{"value":"customer-%123456"}}},"siteCode":{"name":"siteCode","description":"Requested site code, case insensitive.","in":"path","required":true,"schema":{"type":"string"},"examples":{"Site Code":{"value":"site-123456"},"Site Code with space":{"value":"site 123456"},"Site Code with special character":{"value":"site-%123456"}}},"assetCode":{"name":"assetCode","description":"Requested asset code, case insensitive.","in":"path","required":true,"schema":{"type":"string"},"examples":{"Asset Code":{"value":"asset-123456"},"Asset Code with space":{"value":"asset 123456"},"Asset Code with special character":{"value":"asset-%123456"}}},"itemCode":{"name":"itemCode","description":"Requested item code, case insensitive.","in":"path","required":true,"schema":{"type":"string"},"examples":{"Item Code":{"value":"item-123456"},"Item Code with space":{"value":"item 123456"},"Item Code with special character":{"value":"item-%123456"}}},"subscriptionId":{"name":"subscriptionId","in":"path","required":true,"description":"The ID of the subscription to delete.","schema":{"type":"string"},"examples":{"SubscriptionIdExample":{"value":"WEHS_251119133313_DXSAZH"}}},"skillCode":{"name":"skillCode","description":"Code of the skill. Case insensitive.","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":10},"examples":{"Simple skill code":{"value":"FIBER"},"Skill code with special characters":{"value":"%FIBER"}}},"noteCode":{"name":"noteCode","in":"path","required":true,"description":"Business code of the note provided by tierce app.","schema":{"type":"string"},"example":"MAESTRO-NOTE-77213"},"positionsStartDate":{"name":"startDate","in":"query","required":true,"description":"Retrieve positions recorded from this date-time (ISO-8601 UTC).","schema":{"type":"string","format":"date-time"}},"validationStatus":{"name":"validationStatus","in":"query","schema":{"type":"string","enum":["validated","notValidated","all"],"default":"all"}},"invoicingStatus":{"name":"invoicingStatus","in":"query","schema":{"type":"string","enum":["billable","notBillable","all"],"default":"all"}},"continuationToken":{"name":"continuationToken","in":"query","description":"The continuation token which was received in the previous request. It contains information on the page to fetch. If not present, then the first page of results will be returned.","schema":{"type":"string"},"examples":{"Page":{"value":"c2FqZGhmYmtrMzQ1YiBrZiA5MyBrYmdrcTg3MjMgazg5bm4gICAwNCAgbmVpcnQ4NzkzbiBnb3A4NA"},"Last page":{"value":""}}},"invoiceMode":{"name":"invoiceMode","in":"query","required":false,"description":"Filter items by billing ownership.\n- `external` - items charged to an external party (customer-facing invoice).\n- `internal` - items consumed internally (sub-contractor or internal cost).\n- `all` - no filter, returns all items regardless of invoice mode (default).","schema":{"type":"string","enum":["external","internal","all"],"default":"all"}},"pageSize":{"name":"pageSize","in":"query","required":false,"description":"Maximum number of items returned per page. Hard limit 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":200}},"XPraxedoEvent":{"name":"x-praxedo-event","in":"header","required":true,"description":"The event type carried by this callback.","schema":{"type":"string"},"example":"workorder.deletion"},"XPraxedoSecret":{"name":"x-praxedo-secret","in":"header","required":false,"description":"The custom security header defined when the subscription was created, used to verify the callback's authenticity. Null if none was set.","schema":{"type":"string","nullable":true}},"projectCode":{"name":"projectCode","in":"path","required":true,"description":"Business code (number) of the project.","schema":{"type":"string","maxLength":50},"example":"PRJ-2026-0007"},"routeServiceOrderCode":{"name":"routeServiceOrderCode","in":"path","required":true,"description":"Business code of the route service order.","schema":{"type":"string"},"example":"SO-2026-0042"},"standardServiceOrderCode":{"name":"standardServiceOrderCode","in":"path","required":true,"description":"Business code of the standard service order.","schema":{"type":"string"},"example":"SO-2026-0043"},"crewsStartDate":{"name":"startDate","in":"query","required":true,"description":"Start of the requested period, inclusive. RFC 3339 date-time with an offset.","schema":{"type":"string","format":"date-time"},"example":"2026-09-21T00:00:00Z"},"crewsEndDate":{"name":"endDate","in":"query","required":true,"description":"End of the requested period, exclusive. RFC 3339 date-time with an offset. Must be after `startDate`, at most 366 days later.","schema":{"type":"string","format":"date-time"},"example":"2026-09-26T00:00:00Z"},"crewsSize":{"name":"size","in":"query","required":false,"description":"Maximum number of crews returned per page. A value above 200 is capped to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":200}}},"schemas":{"ItemRequest":{"description":"Payload for creating or updating an item.","type":"object","required":["itemCode","name","itemCategoryCode","dimensions","attributes","billingParameters"],"properties":{"itemCode":{"description":"Item code. Case insensitive. Must match the path parameter.","type":"string","maxLength":256,"readOnly":true},"name":{"description":"Item name.","type":"string","maxLength":256,"minLength":1},"reference":{"description":"Item internal reference code (for catalog search purpose).","type":["string","null"],"maxLength":256},"itemCategoryCode":{"description":"Item's category code. Case insensitive.","type":"string","maxLength":256,"minLength":1},"description":{"description":"Item detailed description.","type":["string","null"],"maxLength":10000},"barCode":{"description":"Item barcode value associated with the item (for catalog search purpose).","type":["string","null"],"maxLength":100},"manufacturer":{"description":"Item's manufacturer.","type":["string","null"],"maxLength":100},"dimensions":{"description":"Indicates how many dimensions the item has (length x width x height).","type":"integer","enum":[1,2,3]},"attributes":{"type":"object","required":["isGeneric","isParentItem","hasFixedQuantity","availableOnMobile"],"properties":{"isGeneric":{"description":"Indicates if the item is a generic type.","type":"boolean"},"isParentItem":{"description":"Indicates if the item is a parent item.","type":"boolean"},"hasFixedQuantity":{"description":"Indicates that the item is actually a prestation with a negociated price (quantity fixed to 1).","type":"boolean"},"availableOnMobile":{"description":"Indicates if the item is available on the mobile app.","type":"boolean"}}},"tracking":{"description":"Details about how the item is tracked.","type":"object","properties":{"trackedInStock":{"description":"Indicates that item availability is tracked in field resource's stock. Only available if stock management is activated.","type":"boolean"},"serialNumberFormat":{"description":"Regular expression that defines the structure of the item's tracking number. If absent, then items are not tracked by serial number.","type":["string","null"],"maxLength":100}}},"billingParameters":{"description":"Pricing information and invoicing details.","type":"object","required":["invoiceMode"],"properties":{"priceDetails":{"type":"object","properties":{"unitPrice":{"description":"Item price. If 0 or null, vatRates, displayPriceOnMobile and displayPriceOnWeb must be null.\n","type":["number","null"],"minimum":0},"vatRates":{"description":"Tax rates applicable to the item. Must be null when unitPrice is 0 or null.","type":["array","null"],"items":{"type":"number","minimum":0,"maximum":0.99999}},"displayPriceOnMobile":{"description":"Specifies whether the price should be displayed on mobile devices. Must be null when unitPrice is 0 or null.","type":["boolean","null"]},"displayPriceOnWeb":{"description":"Whether the price is displayed for web users. Must be null when unitPrice is 0 or null.","type":["string","null"],"enum":["ALWAYS","BY_PROFILE",null]}}},"invoiceMode":{"description":"The type of invoicing (if the item belong to your company or not).","type":"string","enum":["INTERNAL","EXTERNAL"]}}},"customFields":{"$ref":"#/components/schemas/ItemCustomFields"}}},"PositionListResponse":{"type":"object","required":["data"],"properties":{"continuationToken":{"type":"string","nullable":true},"data":{"type":"array","items":{"$ref":"#/components/schemas/Position"}}}},"Position":{"type":"object","properties":{"latitude":{"type":"number","format":"double","example":48.8566},"longitude":{"type":"number","format":"double","example":2.3522},"timestamp":{"type":"string","format":"date-time","example":"2025-10-25T08:05:00Z"}}},"ActivityListResponse":{"type":"object","required":["data"],"properties":{"continuationToken":{"type":"string","nullable":true},"data":{"type":"array","items":{"$ref":"#/components/schemas/Activity"}}}},"Activity":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid"},"activityTypeCode":{"type":"string","example":"WORK"},"agentCode":{"type":"string","example":"TECH-023"},"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"},"duration":{"type":"string","description":"Duration of the activity, in ISO-8601 duration format.","example":"PT1H30M","pattern":"PnDTnHnMn.nS."},"billable":{"type":"boolean"},"validatedAt":{"type":"string","format":"date-time","nullable":true},"lastUpdate":{"type":"string","format":"date-time"}}},"AdditionalSkillsRequirement":{"allOf":[{"$ref":"#/components/schemas/SkillsRequirement"},{"type":"object","properties":{"additionalSkills":{"type":"array","items":{"type":"object","required":["code","constraint"],"properties":{"code":{"type":"string","example":"skillCode"},"constraint":{"type":"string","enum":["MANDATORY","OPTIONAL"],"description":"Constant value indicated whether a skill is mandatory. Possible values are MANDATORY or OPTIONAL."}}},"description":"Adds these skills requirements to the one defined by the work order type."}}}]},"Availabilities":{"type":"object"},"AvailableForRendezVous":{"allOf":[{"$ref":"#/components/schemas/Availabilities"},{"type":"object","properties":{"appointmentDate":{"type":"string","format":"date-time","description":"Date time in ISO format indicating the specific date and hour the slot search will be on.","example":"2023-08-03T06:00:00Z","pattern":"yyyy-MM-dd'T'HH:mm:ss.SSSZ"}}}],"required":["appointmentDate"]},"AvailableOverTimeRanges":{"allOf":[{"$ref":"#/components/schemas/Availabilities"},{"type":"object","properties":{"ranges":{"type":"array","items":{"$ref":"#/components/schemas/OffsetTimeInterval"}}}}],"required":["ranges"]},"Circle":{"type":"object","description":"The circle zone describing the working area of the work order.","properties":{"radius":{"$ref":"#/components/schemas/Distance","description":"The radius of this circle area."},"center":{"$ref":"#/components/schemas/Coordinates","description":"The center of this circle area."}},"required":["center","radius"]},"Coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"double","description":"WGS84 latitude of the coordinates.","example":48.8755905},"longitude":{"type":"number","format":"double","description":"WGS84 longitude of the coordinates.","example":2.3287881}},"required":["latitude","longitude"]},"DispatchLocation":{"type":"object"},"DispatchRequirement":{"type":"object","properties":{"maximumDistanceToLocation":{"$ref":"#/components/schemas/DistanceToLocation","description":"Filters out field resources that are too distant from the dispatch location."},"maximumTravelTimeToLocation":{"type":"string","description":"Filter out slots that would imply the field resource to travel more than this duration.","example":"PT1H5M","pattern":"PnDTnHnMn.nS."},"maximumAddedTravelTime":{"type":"string","description":"Ignore slots for which the travel time exceeds the travel time allowed for this day, taking into account the value in maximumAddedTravelTime.","example":"PT1H5M","pattern":"PnDTnHnMn.nS."}}},"Distance":{"type":"object","properties":{"value":{"type":"number","format":"double","description":"The distance value.","example":1.54},"unit":{"type":"string","description":"The distance unit.","enum":["KILOMETERS","METERS","INTERNATIONAL_MILES"]}},"required":["unit","value"]},"DistanceToLocation":{"type":"object","description":"Filters out field resources that are too distant from the dispatch location.","properties":{"value":{"type":"number","format":"double","description":"The distance value.","example":1.54},"unit":{"type":"string","description":"The distance unit.","enum":["KILOMETERS","METERS","INTERNATIONAL_MILES"]}},"required":["unit","value"]},"EndCustomer":{"type":"object","properties":{"need":{"$ref":"#/components/schemas/Need"},"availabilities":{"oneOf":[{"$ref":"#/components/schemas/AvailableForRendezVous"},{"$ref":"#/components/schemas/AvailableOverTimeRanges"}]}},"required":["availabilities","need"]},"EnumeratedStartingHoursRequirement":{"allOf":[{"$ref":"#/components/schemas/SlotStartingHoursRequirement"},{"type":"object","properties":{"values":{"type":"array","items":{"type":"string","description":"A valid starting slot hour.","example":28800}}}}],"required":["values"]},"GeographicLocation":{"allOf":[{"$ref":"#/components/schemas/DispatchLocation"},{"type":"object","properties":{"coordinates":{"$ref":"#/components/schemas/Coordinates","description":"WGS84 Geographic coordinates."}}}],"required":["coordinates"]},"HierarchicalRequirements":{"type":"object","properties":{"customerPortalUser":{"type":"string","description":"The customer portal user who asks for the dispatching. All slots will match a time slot linked to this customer portal user.","example":"TISSEN_GROUP"},"offices":{"type":"array","default":"Root office of the enterprise","description":"The list of offices from which field resources can be dispatched to this work order.","items":{"type":"object","properties":{"code":{"type":"string","example":"PARIS_NORD","description":"The code of an office from which field resources can be dispatched to this work order."}}}},"childrenOfficesIncluded":{"type":"boolean","default":"true","description":"Whether the children offices of the offices indicated are part of the slot search, or only the given offices are targeted. If true, children offices in the office hierarchy are eligible to dispatch a field resource to perform the work order.","example":true}}},"Need":{"type":"object","properties":{"workOrder":{"type":"object","properties":{"code":{"type":"string","example":"MAINTENANCE"}},"description":"The code of the work order type for which to look for slots."},"overrides":{"$ref":"#/components/schemas/Overrides","description":"Replaces default values defined in the work order, regarding the duration and skill requirements, by custom ones for this search."},"dispatchLocation":{"description":"The location of the work order to be scheduled.","oneOf":[{"$ref":"#/components/schemas/GeographicLocation"},{"$ref":"#/components/schemas/PostalLocation"}]}},"required":["dispatchLocation","workOrder"]},"OffsetTimeInterval":{"type":"object","properties":{"start":{"type":"string","format":"date-time","description":"Date time in ISO format indicating the start of the time range.","example":"2023-08-03T06:00:00Z","pattern":"yyyy-MM-dd'T'HH:mm:ss.SSSZ"},"end":{"type":"string","format":"date-time","description":"Date time with offset indicating the end of the time range.","example":"2023-08-03T07:00:00Z","pattern":"yyyy-MM-dd'T'HH:mm:ss.SSSZ"}},"required":["end","start"]},"OverlapStartingHoursRequirement":{"allOf":[{"$ref":"#/components/schemas/SlotStartingHoursRequirement"}]},"OverriddenSkillsRequirement":{"allOf":[{"$ref":"#/components/schemas/SkillsRequirement"},{"type":"object","properties":{"additionalSkills":{"type":"array","items":{"type":"object","required":["code","constraint"],"properties":{"code":{"type":"string","example":"skillCode"},"constraint":{"type":"string","enum":["MANDATORY","OPTIONAL"],"description":"Constant value indicated whether a skill is mandatory. Possible values are MANDATORY or OPTIONAL."}}},"description":"Replaces these skills requirements to the one defined by the work order type."}}}]},"Overrides":{"type":"object","properties":{"duration":{"type":"string","description":"Replaces the forecast duration of the work order which is the subject of the slot search, in ISO-8601 duration format.","example":"PT1H30M","pattern":"PnDTnHnMn.nS."},"skillsRequirement":{"oneOf":[{"$ref":"#/components/schemas/AdditionalSkillsRequirement"},{"$ref":"#/components/schemas/OverriddenSkillsRequirement"}]}}},"PatternBasedStartingHoursRequirement":{"allOf":[{"$ref":"#/components/schemas/SlotStartingHoursRequirement"},{"type":"object","properties":{"pattern":{"type":"string","default":"HALF","description":"Define a pattern for the hour at which the returned slots should start.","enum":["QUARTER","HALF","HOUR"],"example":"QUARTER"}}}],"required":["pattern"]},"PostalLocation":{"allOf":[{"$ref":"#/components/schemas/DispatchLocation"},{"type":"object","properties":{"address":{"type":"string","description":"Free text description of the address. This adress will be converted into a Geographic Location thanks to a geocoding system. To be accurate, the ZIP code should be included in the search The counctry may also help.","example":"28 rue de Mogador, 75019 Paris"}}}],"required":["address"]},"ScheduleRequirements":{"type":"object","properties":{"inArea":{"$ref":"#/components/schemas/WorkingAreaRequirement","description":"Allows to filter the field resources that can perform the work order, based on geographical constraints."},"nearDispatchLocation":{"$ref":"#/components/schemas/DispatchRequirement","description":"Allows to filter the field resources that can perform the work order, based on travel time/distance constraints and according to their current schedule."}}},"SchedulerRequirements":{"type":"object","properties":{"fieldResourceScheduled":{"$ref":"#/components/schemas/ScheduleRequirements"},"fieldResourceWorkingFor":{"$ref":"#/components/schemas/HierarchicalRequirements"},"workingHours":{"$ref":"#/components/schemas/WorkingHourRequirements"}}},"SearchSize":{"type":"object","properties":{"maximumSlotNumber":{"type":"integer","format":"int32","default":"700","description":"The maximum number of slots to return.","example":100}}},"ServedSlotRequirements":{"type":"object","properties":{"perTimeInterval":{"type":"string","default":"BEST","description":"Allows to configure the slot sampling policy. Defining a sampling policy is required in case:\n - there are many field resources that can carry out the work order\n - the slot search time range is too big\n\nOtherwise, all slots will be grouped at the start of the slot search range.\n","enum":["BEST","FEW","ALL"]},"startingHours":{"description":"Allows to configure which slots to return based on their starting hour.","oneOf":[{"$ref":"#/components/schemas/EnumeratedStartingHoursRequirement"},{"$ref":"#/components/schemas/OverlapStartingHoursRequirement"},{"$ref":"#/components/schemas/PatternBasedStartingHoursRequirement"}]}}},"SkillsRequirement":{"type":"object"},"SlotQuery":{"type":"object","properties":{"endCustomer":{"$ref":"#/components/schemas/EndCustomer"},"schedulerRequirements":{"$ref":"#/components/schemas/SchedulerRequirements"},"slotSearchConfiguration":{"$ref":"#/components/schemas/SlotSearchConfiguration"}},"required":["endCustomer"]},"SlotSearchConfiguration":{"type":"object","properties":{"searchSize":{"$ref":"#/components/schemas/SearchSize","description":"Allows to limit the search space size beyond the default configuration, lowering the number of results and speeding up the computation."},"servedSlots":{"$ref":"#/components/schemas/ServedSlotRequirements","description":"Allows to configure some aspects of the slots in the result."},"mustExplainResults":{"type":"boolean","writeOnly":true}}},"SlotStartingHoursRequirement":{"type":"object","properties":{"allowSlotOverlap":{"type":"boolean","default":"false","description":"Constraints the slots to be served by the web service.\nIf set to false, the slots cannot overlap.\nFor instance, when looking for a one hour long slot, with slots starting every half hour,\nin case a slot is found at 08:30, then even if a slot exists at 09:00, the following returned slot\nwill only be one that starts at 09:30, at the end of the first slot.\n"}}},"WorkingAreaRequirement":{"type":"object","properties":{"circle":{"$ref":"#/components/schemas/Circle","description":"The circle zone describing the working area of the work order."},"zipZone":{"$ref":"#/components/schemas/ZipZone","description":"The zone described by a zip code for the working area of the work order."}}},"WorkingHourRequirements":{"type":"object","properties":{"ignoreFieldResourceOwnWorkingHours":{"type":"boolean","default":"false","description":"Considers that the field resource's working time is the same as the hours defined at the company level. In consequence, it can return time slots that do not respect the custom working hours of the field resource."},"ignoreFieldResourceBreak":{"type":"boolean","default":"false","description":"Ignores the field resources' break, returning slots that run through it."},"ignoreFieldResourceCapacityModel":{"type":"boolean","default":"false","description":"Ignores the field ressources' capacity models in the returned slots calculation."}}},"ZipZone":{"type":"object","description":"The zone described by a zip code for the working area of the work order.","properties":{"zipCode":{"type":"string","description":"Postal/ZIP code of the dispatch location. Only field resources set as available to work in this area can be dispatched to this area.","example":77019},"areaScope":{"type":"string","default":"RESOURCE","description":"Defines the level at which the ZIP code filter is applied: *'RESOURCE': Returns slots for resources whose area, defined on their details page, matches the requested zipCode. *'TIMESLOT': Returns slots only if the resource has a reserved time slot with an area matching the zipCode.","enum":["TIMESLOT","RESOURCE"]}},"required":["zipCode"]},"SlotSearchResult":{"type":"object","properties":{"slots":{"type":"array","items":{"$ref":"#/components/schemas/Slot"}},"searchReport":{"type":"string","description":"A text detailing the steps taken while looking for a slot. Might prove useful to understand why a given resource unexpectedly has/miss slots. This is for manually diagnosing issues. The format of this field is submit to change at any given time. Do not parse it."}}},"Slot":{"type":"object","properties":{"start":{"type":"string","format":"date-time","description":"Date time in ISO format indicating the start of the time interval.","example":"2023-08-03T06:00:00Z","pattern":"yyyy-MM-dd'T'HH:mm:ss.SSSZ"},"end":{"type":"string","format":"date-time","description":"Date time in ISO format indicating the end of the time interval.","example":"2023-08-03T06:00:00Z","pattern":"yyyy-MM-dd'T'HH:mm:ss.SSSZ"},"fieldResources":{"type":"array","items":{"$ref":"#/components/schemas/FieldResource"}},"availableResourceCount":{"type":"integer","description":"The number of available resources on this time interval."}}},"FieldResource":{"type":"object","properties":{"fieldResource":{"type":"object","description":"The code of an available field resource.","properties":{"code":"string"}},"teamSize":{"type":"integer","description":"The size of the field resource's team, if they're a team leader."},"availableTeammates":{"type":"array","items":{"type":"object","properties":{"code":"string"}},"description":"The list of the available teammates on that time interval : the teammates shown are ones that are available and respect all the necessary conditions (skills, distance or travel time filter, etc..)."},"hasActivatedSubscription":{"type":"string","description":"Whether the field resource has an active subscription or not."},"quality":{"type":{"$ref":"#/components/schemas/Quality"},"description":"The quality of the slot for this field resource."}}},"Quality":{"type":"object","description":"The quality of the slot for this field resource","properties":{"score":{"type":"double","description":"The score of the slot."},"optionalSkillCount":{"type":"integer","description":"The number of work order's unneeded skills the field resource has."},"addedTravelTime":{"type":"string","example":"PT1H30M","pattern":"PnDTnHnMn.nS.","description":"The added travel time to the field resource's tour that this slot would imply."},"travelTimeToLocation":{"type":"string","example":"PT1H30M","pattern":"PnDTnHnMn.nS.","description":"The field resource's travel time to get to the work order from his previous location."},"distanceToLocation":{"type":{"$ref":"#/components/schemas/Distance"},"description":"The distance from the field resource's previous location to the work order."},"workLoad":{"type":"string","description":"The field resource's workload in percentage on the day of the slot."}}},"BusinessErrorCode":{"type":"object","properties":{"errorCode":{"type":"string","description":"The error code."},"errorMessage":{"type":"string","description":"The error message."}}},"Characteristic":{"description":"A characteristic for a equipment.","type":"object","required":["characteristicCode","name","lastUpdate"],"properties":{"characteristicCode":{"description":"Characteristic code. Case insensitive.","type":"string","minLength":1,"maxLength":10,"readOnly":true},"name":{"description":"Characteristic name.","maxLength":30,"minLength":1,"type":"string"},"lastUpdate":{"description":"Last update, UTC date-time notation as defined by RFC 3339, section 5.6. Only returned by the GET API.","type":"string","format":"date-time","readOnly":true,"examples":["2024-09-12T13:00:27Z"]}},"examples":[{"characteristicCode":"CRANE_20M","name":"Crane with 20M high","lastUpdate":"2024-09-12T13:00:27Z"},{"characteristicCode":"CRANE_30M","name":"Crane with 30M high","lastUpdate":"2024-09-12T13:00:27Z"}]},"Skill":{"description":"A skill for a field resource.","type":"object","required":["skillCode","name","lastUpdate"],"properties":{"skillCode":{"description":"Skill code. Case insensitive.","type":"string","minLength":1,"maxLength":10,"readOnly":true},"name":{"description":"Skill name.","maxLength":30,"minLength":1,"type":"string"},"lastUpdate":{"description":"Last update, UTC date-time notation as defined by RFC 3339, section 5.6. Only returned by the GET API.","type":"string","format":"date-time","readOnly":true,"examples":["2024-09-12T13:00:27Z"]}},"examples":[{"skillCode":"SKILL_HTI","name":"High tension installation","lastUpdate":"2024-09-12T13:00:27Z"},{"skillCode":"SKILL_LTI","name":"Low tension installation","lastUpdate":"2024-09-12T13:00:27Z"}]},"Item":{"description":"An item object.","type":"object","required":["itemCode","name","itemCategoryCode","dimensions","attributes","tracking","billingParameters","lastUpdate"],"properties":{"itemCode":{"description":"Item code. Case insensitive.","type":"string","maxLength":256,"readOnly":true},"name":{"description":"Item name.","type":"string","maxLength":10000},"reference":{"description":"Item internal reference code (for catalog search purpose).","type":["string","null"],"maxLength":10000},"itemCategoryCode":{"description":"Item's category code.","type":"string","maxLength":256},"description":{"description":"Item detailled description.","type":["string","null"],"maxLength":10000},"barCode":{"description":"Item barcode value associated with the item (for catalog search purpose).","type":["string","null"],"maxLength":100},"manufacturer":{"description":"Item's manufacturer.","type":["string","null"],"maxLength":100},"dimensions":{"description":"Indicates how many dimensions the item has (length x width x height).","type":"integer","enum":[1,2,3]},"attributes":{"type":"object","properties":{"isGeneric":{"description":"Indicates if the item is a generic type.","type":"boolean"},"isParentItem":{"description":"Indicates if the item is a parent item.","type":"boolean"},"hasFixedQuantity":{"description":"Indicates that the item is actually a prestation with a negociated price (quantity fixed to 1).","type":"boolean"},"availableOnMobile":{"description":"Indicates if the item is available on the mobile app.","type":"boolean"}}},"tracking":{"description":"Details about how the item is tracked.","type":"object","properties":{"trackedInStock":{"description":"Indicates that item availability is tracked in field resource's stock. Only available if stock management is activated.","type":"boolean"},"serialNumberFormat":{"description":"Regular expression that defines the structure of the item's tracking number. If absent, then items are not tracked by serial number.","type":["string","null"],"maxLength":100}}},"billingParameters":{"description":"Pricing information and invoicing details.","type":"object","required":["invoiceMode"],"properties":{"priceDetails":{"type":"object","required":["unitPrice"],"properties":{"unitPrice":{"description":"Item price.","type":"number"},"vatRates":{"description":"Tax rates applicable to the item.","type":["array","null"],"items":{"type":"number","minimum":0,"maximum":0.99999}},"displayPriceOnMobile":{"description":"Specifies whether the price should be displayed on mobile devices. For this option to work, the item must be available on mobile.","type":"boolean"},"displayPriceOnWeb":{"description":"Whether the price is displayed for web users.","type":"string","enum":["ALWAYS","BY_PROFILE"]}}},"invoiceMode":{"description":"The type of invoicing (if the item belong to your company or not).","type":"string","enum":["INTERNAL","EXTERNAL"]}}},"customFields":{"$ref":"#/components/schemas/ItemCustomFields"},"lastUpdate":{"description":"Last update, UTC date-time notation as defined by RFC 3339, section 5.6. Only returned by the GET API.","type":"string","format":"date-time","readOnly":true,"examples":["2024-09-12T13:00:27Z"]}},"examples":[{"itemCode":"WMOUSE_324","name":"Wireless mouse","reference":21348146,"itemCategoryCode":"HARDWARE_INPUT","description":"Wireless mouse","barCode":"032160165400","manufacturer":"Asus","dimensions":3,"attributes":{"isGeneric":true,"isParentItem":false,"hasFixedQuantity":true,"availableOnMobile":true},"tracking":{"trackedInStock":true,"serialNumberFormat":null},"billingParameters":{"priceDetails":{"unitPrice":22.9,"vatRates":[0.09,0.12,0.19],"displayPriceOnMobile":true,"displayPriceOnWeb":"ALWAYS"},"invoiceMode":"EXTERNAL"},"lastUpdate":"2025-11-09T23:30:00Z"}]},"Customer":{"description":"A customer object","type":"object","required":["customerCode","name","addressDetails","lastUpdate"],"properties":{"customerCode":{"description":"Customer code. Case insensitive.","maxLength":10000,"minLength":1,"type":"string","readOnly":true},"name":{"description":"Customer name.","maxLength":10000,"minLength":1,"type":"string"},"parentCustomerCode":{"description":"Parent customer code. Case insensitive.","maxLength":10000,"type":["string","null"]},"officeCode":{"description":"Office code. Case insensitive.\nIf the property is not filled in\n - if the parent customer code is filled in, the parent customer office will be applied\n - if the parent customer code is not filled in, the office of the OAuth2.0 application will be applied","maxLength":10000,"minLength":1,"type":"string"},"contact":{"$ref":"#/components/schemas/Contact","description":"Customer contact details."},"addressDetails":{"$ref":"#/components/schemas/AddressDetails","description":"Customer address details."},"description":{"description":"Customer description of any.","maxLength":10000,"type":["string","null"]},"customFields":{"$ref":"#/components/schemas/CustomerCustomFields"},"lastUpdate":{"description":"Last update, UTC date-time notation as defined by RFC 3339, section 5.6. Only returned by the GET API.","type":"string","format":"date-time","readOnly":true,"examples":["2024-09-12T13:00:27Z"]}},"examples":[{"customerCode":"CUSTOMER_CODE","name":"Customer name","officeCode":"OFFICE_CODE","parentCustomerCode":"PARENT_CUSTOMER_CODE","contact":{"name":"Jean du Jardin","details":[{"type":"Mobile","description":"Mobile number of this contact","value":"+33708012600"},{"type":"Phone","description":"Phone number of this contact","value":"+33123456789"}]},"addressDetails":{"address":"28 Rue Mogador","zipCode":"75009","city":"Paris","country":"FR"},"lastUpdate":"2024-09-12T13:00:27Z"}]},"Site":{"description":"A site object.","type":"object","required":["siteCode","name","customerCode","location","officeCode","lastUpdate"],"properties":{"siteCode":{"description":"Site code. Case insensitive.","maxLength":10000,"minLength":1,"type":"string","readOnly":true},"name":{"description":"Site name.","maxLength":10000,"minLength":1,"type":"string"},"customerCode":{"description":"Related customer code. Case insensitive.","maxLength":10000,"minLength":1,"type":"string"},"parentSiteCode":{"description":"Parent site code if any. Case insensitive.","maxLength":10000,"type":["string","null"]},"officeCode":{"description":"Site office code. Case insensitive.","maxLength":10000,"minLength":1,"type":"string"},"contact":{"$ref":"#/components/schemas/Contact","description":"Site contacts."},"location":{"$ref":"#/components/schemas/Location","description":"Location details of the site."},"description":{"description":"Site description if any.","maxLength":8192,"type":["string","null"]},"customFields":{"$ref":"#/components/schemas/SiteCustomFields"},"lastUpdate":{"description":"Last update, UTC date-time notation as defined by RFC 3339, section 5.6. Only returned by the GET API.","type":"string","format":"date-time","readOnly":true,"examples":["2024-09-12T13:00:27Z"]}},"examples":[{"siteCode":"SITE_CODE","name":"Site name","customerCode":"CUSTOMER_CODE","parentSiteCode":"PARENT_SITE_CODE","officeCode":"OFFICE_CODE","description":"Just a description","addressDetails":{"address":"28 Rue Mogador","zipCode":"75009","city":"Paris","country":"FR","geolocation":{"latitude":48.875567,"longitude":2.331379}},"contact":{"name":"Jean Du Jardin","details":[{"type":"Mobile","description":"Personal mobile number","value":"+708012700"},{"type":"Email","description":"Work email","value":"john.doe@company.com"}]},"customFields":{"textCustomFieldCode":{"textValue":"I am a text field"},"checkBoxCustomFieldCode":{"booleanValue":true},"dateCustomFieldCode":{"dateValue":"2024-11-13"},"timeCustomFieldCode":{"timeValue":44100},"dropDownCustomFieldCode":{"dropDownValue":"I am a drop down text"}},"lastUpdate":"2024-09-12T13:00:27Z"}]},"Asset":{"description":"An asset object.","type":"object","required":["assetCode","label","siteCode","assetTypeCode","lastUpdate"],"properties":{"assetCode":{"description":"Asset code. Case insensitive.","type":"string","maxLength":256,"readOnly":true},"label":{"description":"Asset label. It can be the name but it can also be an identifier (barCode, QRCode or NFC) used for asset search purpose.","type":"string","maxLength":10000,"minLength":1},"customerCode":{"description":"Related customer code. Case insensitive.","type":"string","maxLength":256,"readOnly":true},"siteCode":{"description":"Related site code. Case insensitive.","type":"string","maxLength":256,"minLength":1},"assetTypeCode":{"description":"Asset type code. Case insensitive.","type":"string","maxLength":256,"minLength":1},"officeCode":{"description":"Code of the asset. Case insensitive.","type":"string","maxLength":256},"parentAssetCode":{"description":"Parent asset code (if hierarchical structure). Case insensitive.","type":"string","maxLength":256},"description":{"description":"Asset description if any.","type":["string","null"],"maxLength":10000},"commissioning":{"description":"Commissioning details of the asset. If absent, status defaults to ACTIVE and startDate to null.","type":"object","properties":{"startDate":{"description":"Start date of the asset (installation date, contract start date.) in ISO-8601 format. Defaults to null if absent.","type":["string","null"],"format":"date","examples":["2024-01-15"]},"status":{"description":"Status of the asset. Defaults to ACTIVE if absent.","type":"string","enum":["ACTIVE","INACTIVE"],"default":"ACTIVE","examples":["ACTIVE"]}}},"customFields":{"$ref":"#/components/schemas/AssetCustomFields"},"lastUpdate":{"description":"Last update, UTC date-time notation as defined by RFC 3339, section 5.6. Only returned by the GET API.","type":"string","format":"date-time","readOnly":true,"examples":["2024-09-12T13:00:27Z"]}},"examples":[{"assetCode":"MOTOR-123456","label":"Electric motor SN123456","customerCode":"RENAULT","SiteCode":"FACTORY_7700","assetTypeCode":"MOTOR-E","officeCode":"PARIS","parentAssetCode":"MOTOR","description":"New gen electric motor dyson for factories","commissioning":{"startDate":"2024-01-15","status":"ACTIVE"},"customFields":{"textCustomFieldCode":{"textValue":"I am a text field"},"checkBoxCustomFieldCode":{"booleanValue":true},"dateCustomFieldCode":{"dateValue":"2024-11-13"},"timeCustomFieldCode":{"timeValue":44100},"dropDownCustomFieldCode":{"dropDownValue":"I am a drop down text"}},"lastUpdate":"2024-09-12T13:00:27Z"}]},"Contact":{"description":"A customer contact and his details.","type":["object","null"],"properties":{"name":{"description":"Customer contact name.","maxLength":10000,"type":"string","examples":["Jean du Jardin"]},"details":{"description":"Array of contact details.","maxItems":15,"minItems":0,"type":"array","items":{"$ref":"#/components/schemas/ContactDetail"}}},"examples":[{"name":"Jean Du Jardin","details":[{"type":"Mobile","description":"Personal mobile number","value":"+1234567890"},{"type":"Email","description":"Work email","value":"john.doe@company.com"},{"type":"Phone","value":987654321},{"type":"Fax","description":"Office fax","value":"+1122334455"}]}]},"ContactDetail":{"description":"Contact detail of the customer.","type":"object","required":["value"],"properties":{"type":{"description":"Contact detail type.","default":"Phone","enum":["Mobile","Fax","Email","Phone"],"type":"string","examples":["Mobile"]},"description":{"description":"Description of the contact detail.","maxLength":200,"type":["string","null"],"examples":["Mobile number of this contact"]},"value":{"description":"Value of the contact.","maxLength":100,"type":"string","examples":["+33723456789"]}},"examples":[[{"type":"Mobile","description":"Mobile number of this contact","value":"+33123456789"}]]},"ContactDetails":{"description":"Details of a customer contact.","type":"array","items":{"$ref":"#/components/schemas/ContactDetail"},"examples":[[{"type":"Mobile","description":"Personal mobile number","value":"+1234567890"},{"type":"Email","description":"Work email","value":"john.doe@company.com"},{"type":"Phone","description":"","value":987654321},{"type":"Fax","description":"Office fax","value":"+1122334455"}]]},"Location":{"description":"Location details of the site, gps included.","type":"object","required":["addressDetails"],"properties":{"geolocation":{"$ref":"#/components/schemas/Geolocation","description":""},"addressDetails":{"$ref":"#/components/schemas/SiteAddressDetails","description":"Site address details."}},"examples":[{"location":{"addressDetails":{"address":"28 Rue Mogador","zipCode":"75009","city":"Paris","country":"FR"},"geolocation":{"latitude":48.875567,"longitude":2.331379}}}]},"AddressDetails":{"description":"Address details.","type":"object","required":["city"],"properties":{"address":{"maxLength":10000,"type":["string","null"],"examples":["28 Rue Mogador"]},"zipCode":{"maxLength":20,"type":["string","null"],"examples":["75009"]},"city":{"maxLength":256,"minLength":1,"type":"string","examples":["Paris"]},"country":{"description":"If filled in, it should be a valid ISO 3166-1 Alpha-2 country code","maxLength":2,"minLength":2,"pattern":"^[A-Z]{2}$","type":["string","null"],"examples":["FR"]}},"examples":[[{"address":"28 Rue Mogador","zipCode":"75009","city":"Paris","country":"FR"}]]},"SiteAddressDetails":{"description":"Same as the Address Details object, but city and address are required.","type":"object","required":["city","address"],"properties":{"address":{"maxLength":10000,"type":"string","examples":["28 rue Mogador"]},"zipCode":{"maxLength":20,"type":["string","null"],"examples":["75009"]},"city":{"description":"","maxLength":256,"minLength":1,"type":"string","examples":["Paris"]},"country":{"description":"If filled in, it should be a valid ISO 3166-1 Alpha-2 country code","maxLength":2,"minLength":2,"pattern":"^[A-Z]{2}$","type":["string","null"],"examples":["FR"]}},"examples":[[{"address":"28 Rue Mogador","zipCode":"75009","city":"Paris","country":"FR"}]]},"Geolocation":{"description":"Geolocation details of the site. Optional.","type":["object","null"],"properties":{"latitude":{"format":"double","description":"Latitude of the site's coordinates. If the latitude property is set, the longitude property needs to be also set. After 16 decimal places, the accuracy of the latitude will be truncated.","type":"number","examples":[48.875567]},"longitude":{"format":"double","description":"Longitude of the site's coordinates. If the longitude property is set, the latitude property needs to be also set. After 16 decimal places, the accuracy of the longitude will be truncated.","type":"number","examples":[2.331379]}},"examples":[{"latitude":48.875567,"longitude":2.331379}]},"CustomerCustomFields":{"description":"Map of custom fields of a customer.","type":"object","additionalProperties":{"$ref":"#/components/schemas/CustomerCustomField"}},"CustomerCustomField":{"oneOf":[{"$ref":"#/components/schemas/TextCustomField"},{"$ref":"#/components/schemas/CheckBoxCustomField"},{"$ref":"#/components/schemas/DropDownCustomField"},{"$ref":"#/components/schemas/UrlCustomField"},{"$ref":"#/components/schemas/DateCustomField"},{"$ref":"#/components/schemas/DateTimeCustomField"},{"$ref":"#/components/schemas/TimeCustomField"},{"$ref":"#/components/schemas/GpsCustomField"}]},"SiteCustomFields":{"description":"Map of custom fields of a site.","type":"object","additionalProperties":{"$ref":"#/components/schemas/SiteCustomField"}},"SiteCustomField":{"oneOf":[{"$ref":"#/components/schemas/TextCustomField"},{"$ref":"#/components/schemas/CheckBoxCustomField"},{"$ref":"#/components/schemas/DropDownCustomField"},{"$ref":"#/components/schemas/UrlCustomField"},{"$ref":"#/components/schemas/DateCustomField"},{"$ref":"#/components/schemas/DateTimeCustomField"},{"$ref":"#/components/schemas/TimeCustomField"},{"$ref":"#/components/schemas/GpsCustomField"}]},"AssetCustomFields":{"description":"Map of custom fields of an asset.","type":"object","additionalProperties":{"$ref":"#/components/schemas/AssetCustomField"}},"AssetCustomField":{"oneOf":[{"$ref":"#/components/schemas/TextCustomField"},{"$ref":"#/components/schemas/CheckBoxCustomField"},{"$ref":"#/components/schemas/DropDownCustomField"},{"$ref":"#/components/schemas/UrlCustomField"},{"$ref":"#/components/schemas/DateCustomField"},{"$ref":"#/components/schemas/DateTimeCustomField"},{"$ref":"#/components/schemas/TimeCustomField"},{"$ref":"#/components/schemas/GpsCustomField"}]},"ItemCustomFields":{"description":"Map of custom fields of an item.","type":"object","additionalProperties":{"$ref":"#/components/schemas/ItemCustomField"}},"ItemCustomField":{"oneOf":[{"$ref":"#/components/schemas/TextCustomField"},{"$ref":"#/components/schemas/CheckBoxCustomField"},{"$ref":"#/components/schemas/DropDownCustomField"},{"$ref":"#/components/schemas/UrlCustomField"},{"$ref":"#/components/schemas/DateCustomField"},{"$ref":"#/components/schemas/DateTimeCustomField"},{"$ref":"#/components/schemas/TimeCustomField"},{"$ref":"#/components/schemas/GpsCustomField"}]},"TextCustomField":{"description":"Text field.","type":"object","properties":{"textValue":{"description":"Text value.","type":"string"}},"examples":[{"textCustomFieldCode":{"textValue":"This is a text"}}]},"CheckBoxCustomField":{"description":"Boolean field.","type":"object","properties":{"booleanValue":{"description":"Boolean value.","type":"boolean"}},"examples":[{"checkboxCustomFieldCode":{"booleanValue":true}}]},"DropDownCustomField":{"description":"Drop down field, the text content must be one of the drop down custom attribute values.","type":"object","properties":{"dropDownValue":{"description":"Drop down value.","type":"string"}},"examples":[{"dropDownCustomFieldCode":{"dropDownValue":"This is a text value of a drop down"}}]},"UrlCustomField":{"description":"URL field.","type":"object","properties":{"urlValue":{"description":"URL value.","type":"string"}},"examples":[{"UrlCustomField":{"urlValue":"https://www.praxedo.fr/"}}]},"DateCustomField":{"description":"Date field format will follow the ISO-8601 international standard: YYYY-MM-DD\".","type":"object","properties":{"dateValue":{"description":"Must be a date value following the ISO-8601 standard (YYYY-MM-DD format) or null. An empty string is not permitted.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"examples":[{"dateCustomFieldCode":{"dateValue":"2024-11-17"}}]},"DateTimeCustomField":{"description":"DateTime field format will follow the ISO-8601 international standard: YYYY-MM-DDTHH:MM\".","type":"object","properties":{"dateTimeValue":{"description":"Must be a date-time value following the ISO-8601 standard (YYYY-MM-DDTHH:MM format) or null. An empty string is not permitted.\n","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"}},"examples":[{"dateTimeCustomFieldCode":{"dateTimeValue":"2024-11-17T15:12"}}]},"TimeCustomField":{"description":"Time field format will follow the ISO-8601 international standard: HH:MM\".","type":"object","properties":{"timeValue":{"description":"Must be a time value following the ISO-8601 standard (HH:MM format) or null. An empty string is not permitted.","type":"string","pattern":"^\\d{2}:\\d{2}$"}},"examples":[{"timeCustomFieldCode":{"timeValue":52560}}]},"GpsCustomField":{"description":"Gps field.","type":"object","properties":{"gpsValue":{"description":"GPS coordinates.","$ref":"#/components/schemas/Geolocation"}},"examples":[{"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}]},"Subscription":{"title":"Subscription","description":"A subscription to webhook events.","type":"object","required":["id","status","callback","eventTypes"],"properties":{"id":{"type":"string","description":"the id of the subscription"},"status":{"$ref":"#/components/schemas/Status"},"callback":{"$ref":"#/components/schemas/CallbackInformation"},"eventTypes":{"$ref":"#/components/schemas/EventType"}}},"SubscriptionListResponse":{"title":"SubscriptionListResponse","description":"A list of subscriptions.","type":"array","items":{"$ref":"#/components/schemas/Subscription"}},"SubscriptionCreationResponse":{"title":"SubscriptionCreationResponse","type":"object","required":["id","eventTypes"],"properties":{"id":{"type":"string","description":"the id of the created subscription"},"eventTypes":{"type":"array","items":{"$ref":"#/components/schemas/EventType"}}}},"SubscriptionRequest":{"title":"SubscriptionRequest","type":"object","required":["callback","eventTypes"],"properties":{"callback":{"$ref":"#/components/schemas/CallbackInformation"},"eventTypes":{"type":"array","maxProperties":3,"minProperties":1,"uniqueItems":true,"description":"List of event types the subscription should listen to.","items":{"$ref":"#/components/schemas/EventType"}}}},"EventType":{"title":"EventType","type":"object","required":["name"],"properties":{"name":{"type":"string","enum":["workorder.validation","workorder.deletion","asset.upsert"],"description":"The type of event to subscribe to. For example `workorder.validation` (sent when a work order is validated, which often triggers the invoicing process in the customer ERP/CRM)."}}},"WebhookActor":{"title":"WebhookActor","description":"The entity that triggered the notification.","type":"object","required":["type","identifier"],"properties":{"type":{"type":"string","description":"The type of entity that triggered the notification.","enum":["webUser","technician","process","webService"]},"identifier":{"type":"string","description":"The unique identifier of the entity that triggered the notification. Its value depends on `type` (username of the web user for `webUser`, sync ID of the field resource for `technician`, or the OAuth 2.0 application name for OAuth 2.0 auth or web service username for basic auth, for `webService`).","example":"user@company.com"}}},"WorkOrderValidationEvent":{"title":"WorkOrderValidationEvent","description":"Callback payload sent when a work order is validated. Validation often triggers the invoicing process in the customer ERP/CRM.","type":"object","required":["version","id","creationTime","eventType","subscriptionId","data"],"properties":{"version":{"type":"string","description":"Payload format version. Current version is `1`. Praxedo will try to maintain backward compatibility even if this version is deprecated in the future.","example":"1"},"id":{"type":"string","format":"uuid","description":"Unique id of the callback, even when a retry occurs.","example":"5c84b579-ae20-4e40-be1d-e8e57a96cb48"},"creationTime":{"type":"string","format":"date-time","description":"Time when the webhook event was received by the notification application and made ready to be sent. ISO 8601 / RFC 3339, UTC."},"eventType":{"type":"string","enum":["workorder.validation"]},"subscriptionId":{"type":"string","description":"Id of the subscription that generated this callback.","example":"WEHS_251210151605_94OU25"},"data":{"type":"object","required":["validatedAt","workorderCode","workorderUuid","officeCode","actor"],"properties":{"validatedAt":{"type":"string","format":"date-time","description":"Time when the work order was validated."},"workorderCode":{"type":"string","description":"Work order number."},"workorderUuid":{"type":"string","format":"uuid","description":"UUID of the work order, the same value used for the `businessEvent.extension.uuid` extension on `getEvents` and `searchEvents`."},"officeCode":{"type":"string","description":"Code of the office configured in Praxedo."},"actor":{"$ref":"#/components/schemas/WebhookActor"}}}}},"WorkOrderDeletionEvent":{"title":"WorkOrderDeletionEvent","description":"Callback payload sent when a work order is deleted from the Praxedo user interface or the SOAP web service.","type":"object","required":["version","id","creationTime","eventType","subscriptionId","data"],"properties":{"version":{"type":"string","description":"Payload format version. Current version is `1`. Praxedo will try to maintain backward compatibility even if this version is deprecated in the future.","example":"1"},"id":{"type":"string","format":"uuid","description":"Unique id of the callback, even when a retry occurs.","example":"5c84b579-ae20-4e40-be1d-e8e57a96cb48"},"creationTime":{"type":"string","format":"date-time","description":"Time when the webhook event was received by the notification application and made ready to be sent. ISO 8601 / RFC 3339, UTC."},"eventType":{"type":"string","enum":["workorder.deletion"]},"subscriptionId":{"type":"string","description":"Id of the subscription that generated this callback.","example":"WEHS_251210151605_94OU25"},"data":{"type":"object","required":["deletedAt","workorderCode","workorderUuid","officeCode","actor"],"properties":{"deletedAt":{"type":"string","format":"date-time","description":"Time when the work order was deleted."},"workorderCode":{"type":"string","description":"Work order number."},"workorderUuid":{"type":"string","format":"uuid","description":"UUID of the work order, the same value used for the `businessEvent.extension.uuid` extension on `getEvents` and `searchEvents`."},"officeCode":{"type":"string","description":"Code of the office configured in Praxedo."},"actor":{"$ref":"#/components/schemas/WebhookActor"}}}}},"AssetUpsertEvent":{"title":"AssetUpsertEvent","description":"Callback payload sent when an asset is created or updated from the Praxedo interface, the SOAP/REST web services, or the mobile application. This event does not distinguish between an asset creation and an asset update — treat an asset code you don't recognize as a new creation.","type":"object","required":["version","id","creationTime","eventType","subscriptionId","data"],"properties":{"version":{"type":"string","description":"Payload format version. Current version is `1`. Praxedo will try to maintain backward compatibility even if this version is deprecated in the future.","example":"1"},"id":{"type":"string","format":"uuid","description":"Unique id of the callback, even when a retry occurs.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"creationTime":{"type":"string","format":"date-time","description":"Time when the webhook event was received by the notification application and made ready to be sent. ISO 8601 / RFC 3339, UTC."},"eventType":{"type":"string","enum":["asset.upsert"]},"subscriptionId":{"type":"string","description":"Id of the subscription that generated this callback.","example":"WEHS_251210151605_94OU25"},"data":{"type":"object","required":["updatedAt","assetCode","officeCode"],"properties":{"updatedAt":{"type":"string","format":"date-time","description":"Time when the asset was last updated."},"assetCode":{"type":"string","description":"Unique identifier for the asset. Use it with `getEquipements` or `Get Asset` to retrieve more detailed information.","example":"A-456"},"officeCode":{"type":"string","description":"Code of the office configured in Praxedo."},"actor":{"allOf":[{"$ref":"#/components/schemas/WebhookActor"}],"description":"Entity that triggered the notification. Unlike other events, `asset.upsert` does not reliably report the source of the trigger (Praxedo web UI vs. mobile app)."}}}}},"CallbackInformation":{"title":"CallbackInformation","type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","maxLength":2000,"description":"The callback endpoint to receive the webhook notifications.","example":"https://callback.example.com/webhooks"},"secret":{"type":"string","maxLength":512,"description":"The secret that will be included in the callback to verify authenticity."},"headers":{"type":"array","description":"Custom headers that will be included in the callback request.","items":{"$ref":"#/components/schemas/Header"}}}},"Header":{"title":"Header","type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":40,"pattern":"x-pxo-{custom_header_name}","description":"The name of the custom header to send in the callback. Must follow the pattern 'x-pxo-{custom_name}'. It is required if a header object is present in the `headers` array. The header name must be unique in the list."},"value":{"type":"string","maxLength":512,"description":"The value of the custom header to send with the callback."}}},"Status":{"title":"Status","description":"The status of the subscription.","type":"string","enum":["active","inactive"]},"ErrorResponse":{"description":"Error response containing an array of errors, and a unique reference error.","maxProperties":2,"minProperties":1,"required":["errorReference"],"type":"object","properties":{"errors":{"description":"Array of errors. Contains at least one element.","type":"array","items":{"$ref":"#/components/schemas/ErrorMessage"}},"errorReference":{"description":"Error unique reference. Communicated to support, this will help to locate the issue.","pattern":"[0-1a-z]","type":"string","examples":[{"errorReference":"abcdefghij0123456789"}]}},"examples":[{"errors":[{"code":"referentials.customer.name.mandatory","message":"Property name is required."}],"errorReference":"abcdefghij0123456789"}]},"ErrorMessage":{"description":"Contains code and message for error.","required":["code","message"],"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"examples":[{"code":"referentials.customer.name.mandatory","message":"Property name is required."},{"code":"referentials.customer.zipcode.length","message":"The zip code length must not exceed 20 characters."}]},"SchedulingResponse":{"description":"Scheduling data for a work order. Only returned when the work order status is SCHEDULED or later.","type":"object","required":["schedule"],"properties":{"schedule":{"$ref":"#/components/schemas/ScheduleData"},"customer":{"$ref":"#/components/schemas/CustomerScheduling"}},"examples":[{"schedule":{"timeWindow":{"startDate":"2026-04-10T09:00:00Z","endDate":"2026-04-10T10:00:00Z"},"fieldResources":{"mainResourceCode":"tech-55","technicianCrewCodes":["tech-88","tech-98"],"equipmentCrewCodes":["truck-04"]}},"customer":{"geolocation":{"lat":48.8566,"lng":2.3522},"appointment":{"date":"2026-04-10T10:00:00Z","slot":{"startDate":"2026-04-10T08:00:00Z","endDate":"2026-04-10T12:00:00Z"}}}}]},"ScheduleData":{"description":"Core scheduling block — time window and assigned field resources.","type":"object","required":["timeWindow","fieldResources"],"properties":{"timeWindow":{"$ref":"#/components/schemas/SchedulingTimeWindow"},"fieldResources":{"$ref":"#/components/schemas/FieldResources"}}},"SchedulingTimeWindow":{"description":"The time window during which the work order is planned to be executed. Both dates are in UTC, RFC 3339 format.","type":"object","required":["startDate","endDate"],"properties":{"startDate":{"type":"string","format":"date-time","description":"Scheduled start date-time of the work order, UTC date-time notation as defined by RFC 3339, section 5.6.","examples":["2026-04-10T09:00:00Z"]},"endDate":{"type":"string","format":"date-time","description":"Scheduled end date-time of the work order, UTC date-time notation as defined by RFC 3339, section 5.6.","examples":["2026-04-10T10:00:00Z"]}}},"FieldResources":{"description":"Field resources assigned to the work order. The main resource may be either a technician or a piece of equipment. Crew arrays are null when no additional resources are assigned.","type":"object","required":["mainResourceCode"],"properties":{"mainResourceCode":{"type":"string","description":"Business code of the main resource assigned to the work order. Can be a technician code or an equipment code.","examples":["tech-55"]},"technicianCrewCodes":{"type":"array","nullable":true,"description":"Business codes of the additional technicians assigned alongside the main resource. Null when no additional technicians are assigned.","items":{"type":"string"},"examples":[["tech-88","tech-98"]]},"equipmentCrewCodes":{"type":"array","nullable":true,"description":"Business codes of the equipment assigned alongside the main resource. Null when no equipment is assigned.","items":{"type":"string"},"examples":[["truck-04"]]}}},"CustomerScheduling":{"description":"Customer-facing scheduling information: geolocated intervention site and appointment details communicated to the customer. The entire object is null when no customer-facing data is available. Individual fields are also independently nullable.","type":"object","nullable":true,"properties":{"geolocation":{"$ref":"#/components/schemas/SchedulingGeolocation"},"appointment":{"$ref":"#/components/schemas/Appointment"}}},"SchedulingGeolocation":{"description":"GPS coordinates of the intervention site. Null when geolocation could not be determined.","type":"object","nullable":true,"required":["lat","lng"],"properties":{"lat":{"type":"number","format":"double","description":"Latitude of the intervention site.","examples":[48.8566]},"lng":{"type":"number","format":"double","description":"Longitude of the intervention site.","examples":[2.3522]}}},"Appointment":{"description":"Appointment details communicated to the customer. `date` and `slot` are independently nullable — one, both, or neither may be set depending on the scheduling configuration.","type":"object","nullable":true,"properties":{"date":{"type":"string","format":"date-time","nullable":true,"description":"Exact appointment date-time promised to the customer. Null if no precise appointment time was defined.","examples":["2026-04-10T10:00:00Z"]},"slot":{"$ref":"#/components/schemas/AppointmentSlot"}}},"AppointmentSlot":{"description":"Time slot communicated to the customer (e.g. \"morning\", \"afternoon\"). Null if no slot was defined.","type":"object","nullable":true,"required":["startDate","endDate"],"properties":{"startDate":{"type":"string","format":"date-time","description":"Start of the appointment slot, UTC date-time notation as defined by RFC 3339, section 5.6.","examples":["2026-04-10T08:00:00Z"]},"endDate":{"type":"string","format":"date-time","description":"End of the appointment slot, UTC date-time notation as defined by RFC 3339, section 5.6.","examples":["2026-04-10T12:00:00Z"]}}},"WorkOrderScheduleRequest":{"description":"Scheduling to apply to the work order. Every block is optional in the schema; which ones are mandatory depends on the work order status (see the operation description). Unknown properties are rejected.","type":"object","additionalProperties":false,"properties":{"schedulerRequirements":{"$ref":"#/components/schemas/WorkOrderScheduleRequirements"},"timeWindow":{"$ref":"#/components/schemas/WorkOrderScheduleTimeWindow"},"fieldResources":{"$ref":"#/components/schemas/WorkOrderScheduleFieldResources"}}},"WorkOrderScheduleRequirements":{"description":"How strictly the scheduling request is evaluated. When absent, every control is enforced.","type":"object","additionalProperties":false,"properties":{"skipControls":{"description":"Controls the caller opts out of. Absent or empty means every control is enforced.\n- `unavailabilityOverlap`: allow a time window overlapping an unavailability of an assigned resource.\n- `workOrderOverlap`: allow a time window where an assigned resource is already on another work order.\n- `slasRespect`: allow a time window outside the work order's SLA hours.\n- `appointmentRespect`: allow a time window outside the work order's customer appointment hours.\n- `inProgressStatus`: allow rescheduling a work order a technician has already started.\n- `all`: skip all the controls above (skills and characteristics are still checked).","type":"array","uniqueItems":true,"items":{"type":"string","enum":["unavailabilityOverlap","workOrderOverlap","slasRespect","appointmentRespect","inProgressStatus","all"]},"examples":[["workOrderOverlap","appointmentRespect"]]},"notificationSent":{"description":"Whether the assigned technician is notified. When absent, the technician is notified only if the work order is scheduled on the current day or earlier.","type":"boolean"}}},"WorkOrderScheduleTimeWindow":{"description":"Period the work order is scheduled over. Mandatory when the work order status is `qualified`, optional beyond.","oneOf":[{"$ref":"#/components/schemas/WorkOrderScheduleTimeRange"},{"$ref":"#/components/schemas/WorkOrderScheduleDayRange"}],"discriminator":{"propertyName":"scheduleMode","mapping":{"TIME_RANGE":"#/components/schemas/WorkOrderScheduleTimeRange","DAY_RANGE":"#/components/schemas/WorkOrderScheduleDayRange"}}},"WorkOrderScheduleTimeRange":{"description":"Time window bounded by two precise date-times.","type":"object","required":["scheduleMode","startDate","endDate"],"properties":{"scheduleMode":{"type":"string","const":"TIME_RANGE"},"startDate":{"description":"Start of the scheduling, date-time notation as defined by RFC 3339, section 5.6, with an offset. The offset is kept for display.","type":"string","format":"date-time","examples":["2026-04-10T10:00:00+02:00"]},"endDate":{"description":"End of the scheduling, RFC 3339 date-time with an offset. Must be strictly after `startDate`.","type":"string","format":"date-time","examples":["2026-04-10T12:00:00+02:00"]}}},"WorkOrderScheduleDayRange":{"description":"Time window covering whole days, without hours. Both days are inclusive: a single-day window spans that day from midnight to midnight in the given timezone.","type":"object","required":["scheduleMode","timezone","startDay","endDay"],"properties":{"scheduleMode":{"type":"string","const":"DAY_RANGE"},"timezone":{"description":"IANA timezone the days are expressed in.","type":"string","examples":["Europe/Paris"]},"startDay":{"description":"First day of the scheduling, RFC 3339 full-date.","type":"string","format":"date","examples":["2026-04-10"]},"endDay":{"description":"Last day of the scheduling, RFC 3339 full-date. Must be on or after `startDay`.","type":"string","format":"date","examples":["2026-04-11"]}}},"WorkOrderScheduleFieldResources":{"description":"Technicians and equipments to assign. Every code must belong to the office hierarchy of the OAuth2 application. An equipment cannot be scheduled without a technician.","type":"object","additionalProperties":false,"properties":{"reportFillerCode":{"description":"Business code of the technician responsible for filling the report. Mandatory when the work order status is `qualified`.","type":"string","examples":["tech-55"]},"mainResourceCode":{"description":"Business code of the main resource (technician or equipment) leading the work.","type":"string","examples":["tech-55"]},"technicianCrewCodes":{"description":"Business codes of the additional technicians.","type":"array","items":{"type":"string"},"examples":[["tech-88","tech-98"]]},"equipmentCrewCodes":{"description":"Business codes of the assigned equipments.","type":"array","items":{"type":"string"},"examples":[["truck-04"]]}}},"UsedItem":{"type":"object","required":["lineItemId","itemCode","billing","tracking","lastUpdate"],"properties":{"lineItemId":{"type":"string","format":"uuid","description":"Unique cart-line identifier. Stable across work order re-openings. Use for precise invoicing and reconciliation with expected items.","example":"80ae5498-6d98-45d0-be83-11748b49692a"},"itemCode":{"type":"string","description":"Code of the consumed item (catalogue or on-the-fly).","example":"PUMP-V3"},"agentCode":{"type":["string","null"],"description":"Code of the agent who declared this line (technician or web user).","example":"T_SMITH_04"},"billing":{"$ref":"#/components/schemas/UsedItemBilling"},"tracking":{"$ref":"#/components/schemas/UsedItemTracking"},"lastUpdate":{"type":"string","format":"date-time","description":"ISO 8601 UTC. Results sorted by this field, descending.","example":"2024-10-15T16:05:00Z"}}},"UsedItemBilling":{"type":"object","required":["invoiceMode","usedQuantity"],"properties":{"associatedSectionCode":{"type":["string","null"],"description":"Quotation section code. null if declared directly on the work order cart.","example":"REPLACEMENT_SECTION"},"invoiceMode":{"type":"string","enum":["EXTERNAL","INTERNAL"],"description":"EXTERNAL = customer invoice. INTERNAL = sub-contractor or internal cost.","example":"INTERNAL"},"name":{"type":["string","null"],"description":"Item display name.","example":"Pompe elec motron v3"},"reference":{"type":["string","null"],"description":"Item reference code.","example":"182DGH32"},"expectedQuantity":{"type":["number","null"],"format":"double","description":"Pre-ordered quantity. null if no expectation was set.","example":1},"usedQuantity":{"type":"number","format":"double","minimum":0,"description":"Actual quantity consumed.","example":1},"usedVatRate":{"type":["number","null"],"format":"double","description":"VAT rate (e.g. 0.20 for 20%). null if not declared.","example":0.2},"unitPrice":{"$ref":"#/components/schemas/UsedItemUnitPrice"}}},"UsedItemUnitPrice":{"type":"object","properties":{"catalogValue":{"type":["number","null"],"format":"double","description":"Catalogue unit price. null for on-the-fly items.","example":69},"associatedContract":{"type":["string","null"],"description":"Contract code that overrode the catalogue price. null if none applies.","example":2683},"value":{"type":["number","null"],"format":"double","description":"Effective unit price applied to this item line.","example":59},"currency":{"type":"string","description":"ISO 4217 currency code of the eTech account.","example":"USD"}}},"UsedItemTracking":{"type":"object","properties":{"serialNumber":{"type":["string","null"],"description":"Serial number. null if not tracked by serial number.","example":"SN-9982-XP"},"stockCode":{"type":["string","null"],"description":"Stock location code. null if not tracked by stock.","example":"STOCK-PARIS-03"}}},"UsedItemListResponse":{"type":"object","required":["data"],"description":"Paginated list of used items.","properties":{"continuationToken":{"type":["string","null"],"description":"Opaque token. Pass on next request. null means last page. Do not parse or construct.","example":"eyJsYXN0VXBkYXRlIjoiMjAyNC0xMC0xNVQxNjowNTowMFoifQ=="},"data":{"type":"array","items":{"$ref":"#/components/schemas/UsedItem"}}}},"WorkOrderNoteRequest":{"description":"Payload to create or update a note on a work order. One note per call. `content` must match `noteTypeCode`'s form configuration, and `coordinates` is required for call note categories.","type":"object","required":["noteTypeCode","content"],"properties":{"noteTypeCode":{"description":"Code of the note type, as configured in Praxedo. Represent category of the note (standard note or call note or custom note).","type":"string","example":"STANDNOTE"},"author":{"description":"Identifier of the author of the note (name, system...).","type":"string","example":"DHA"},"date":{"description":"ISO 8601 timestamp of the note. Must not be in the future.","type":"string","format":"date-time","example":"2025-11-05T14:32:00Z"},"coordinates":{"description":"Phone number of the caller. Required when the note type's category is `INCOMING_CALL` or `OUTGOING_CALL`. Optional for category `NOTE`.","type":"string","example":"+33612345678"},"content":{"$ref":"#/components/schemas/NoteContent"},"visibility":{"$ref":"#/components/schemas/NoteVisibility"}},"examples":[{"noteTypeCode":"STANDNOTE","author":"DHA","date":"2025-11-05T14:32:00Z","content":{"text":"Gate code is #9292"},"visibility":{"technician":true,"customerPortalUser":false}}]},"NoteContent":{"description":"Content of the note. Exactly one of `text` or `reportFields` must be supplied, depending on whether the note type has an associated form: `text` for note types without a form, `reportFields` for note types with a form.","oneOf":[{"$ref":"#/components/schemas/NoteTextContent"},{"$ref":"#/components/schemas/NoteReportFieldsContent"}]},"NoteTextContent":{"description":"Free-text content, used by note types without an associated form (standard notes and call notes).","type":"object","required":["text"],"properties":{"text":{"description":"Free-text content of the note.","type":"string","example":"Gate code is #9292"}},"examples":[{"text":"Gate code is #9292"},{"text":"Customer called to confirm appointment."}]},"NoteReportFieldsContent":{"description":"Form-field content, used by note types with an associated form.","type":"object","required":["reportFields"],"properties":{"reportFields":{"description":"Map of field values for the note type's associated form, keyed by field code — same shape as `customFields`. Each key is a field code; its value is an object with the single value property matching that field's configured type (`textValue`, `dropDownValue`, `booleanValue`, `numericValue`, `dateValue`, `timeValue`, or `urlValue`).","type":"object","additionalProperties":{"$ref":"#/components/schemas/ReportFieldValue"}}},"examples":[{"reportFields":{"REASON":{"dropDownValue":"Reschedule"},"CALLBACK_DATE":{"dateValue":"2025-12-01"},"CALLBACK_TIME":{"timeValue":52200},"CONTACT_NAME":{"textValue":"John Smith"},"VIP?":{"booleanValue":false},"PARTS_COUNT":{"numericValue":3},"PROCEDURE_LINK":{"urlValue":"https://intranet.acme.com/procedures/reschedule"}}}]},"ReportFieldValue":{"description":"Value for a single field of the note type's form, addressed by its field code (map key). The field's configured type in Praxedo determines which single value property must be set.","type":"object","properties":{"textValue":{"description":"Value for a Texte, Zone de texte, or Commentaire field.","type":"string","example":"John Smith"},"dropDownValue":{"description":"Value for a Liste déroulante field.","type":"string","example":"Reschedule"},"booleanValue":{"description":"Value for a Case à cocher oui/non field.","type":"boolean","example":false},"numericValue":{"description":"Value for a Numérique field.","type":"number","example":3},"dateValue":{"description":"Value for a Date field.","type":"string","format":"date","example":"2025-12-01"},"timeValue":{"description":"Value for a Heure field.","type":"string","format":"time","example":52200},"urlValue":{"description":"Value for a URL field.","type":"string","format":"uri","example":"https://intranet.acme.com/procedures/reschedule"}},"examples":[{"dropDownValue":"Reschedule"},{"dateValue":"2025-12-01"},{"textValue":"John Smith"},{"booleanValue":false},{"numericValue":3},{"timeValue":52200},{"urlValue":"https://intranet.acme.com/procedures/reschedule"}]},"NoteVisibility":{"description":"Determines who can see the note. If omitted entirely, visibility defaults are inherited from the note type configuration. If supplied, it fully overrides those defaults (no partial merge).","type":"object","properties":{"technician":{"description":"Whether the note is visible to the field technician.","type":"boolean","example":true},"customerPortalUser":{"description":"Whether the note is visible to the customer portal user.","type":"boolean","example":false}},"examples":[{"technician":true,"customerPortalUser":false},{"technician":false,"customerPortalUser":false}]},"WorkOrderFlagsRequest":{"description":"Payload to replace the full set of flags on a work order. The provided list fully overrides the existing flags. An empty array clears all flags.","type":"object","required":["flags"],"properties":{"flags":{"description":"Wrapper object for the set of flags to apply. The flag codes are provided in the `ids` array.","type":"object","required":["ids"],"properties":{"ids":{"description":"The complete set of flag ids to apply to the work order. Each flag id is an integer that is a power of 2. The list replaces any existing flags; an empty array clears all flags.","type":"array","minItems":0,"maxItems":32,"items":{"description":"A flag id, expressed as an integer that is a power of 2 (1, 2, 4, 8, 16...).","type":"integer"},"example":[1,2,4,8]}}}},"examples":[{"flags":{"ids":[1,2,4,8]}},{"flags":{"ids":[]}}]},"CharacteristicListResponse":{"required":["data"],"type":"object","properties":{"continuationToken":{"description":"Token that holds pagination information. Only sent if there are still pages of characteristics to be loaded.","type":["string","null"]},"data":{"description":"The list of characteristics.","type":"array","items":{"$ref":"#/components/schemas/Characteristic"}}}},"SkillListResponse":{"required":["data"],"type":"object","properties":{"continuationToken":{"description":"Token that holds pagination information. Only sent if there are still pages of skills to be loaded.","type":["string","null"]},"data":{"description":"The list of skills.","type":"array","items":{"$ref":"#/components/schemas/Skill"}}}},"ItemListResponse":{"required":["data"],"type":"object","properties":{"continuationToken":{"description":"Token that holds pagination information. Only sent if there are still pages of items to be loaded.","type":["string","null"]},"data":{"description":"The list of items.","type":"array","items":{"$ref":"#/components/schemas/Item"}}}},"WorkOrderProjectLinkRequest":{"description":"Work order to link to the project, its position among the project's jobs and its dependencies. Unknown properties are rejected.","type":"object","additionalProperties":false,"required":["type","code"],"properties":{"type":{"description":"Type of job linked. Only `workOrder` is supported (case insensitive).","type":"string","enum":["workOrder"]},"code":{"description":"Business code of the work order to link.","type":"string","examples":["WO-2026-00123"]},"insertion":{"$ref":"#/components/schemas/ProjectInsertion"}}},"ProjectInsertion":{"description":"Position of the work order among the project's jobs, and its dependencies. When absent, the work order is linked last, without dependency.","type":"object","additionalProperties":false,"properties":{"insertionMode":{"description":"How the position is expressed.","type":"string","default":"last","enum":["first","last","index","before","after"]},"position":{"description":"Zero-based position among the project's jobs (phases, tasks and work orders). Required by `index`, ignored otherwise. A position past the last job places the work order last.","type":"integer","minimum":0,"examples":[3]},"relativePosition":{"description":"Job to sit before or after, required by `before` and `after`: the number of a task or work order, or the code of a phase. Must be a job of the project, other than the work order being linked.","type":"string","examples":["PHASE-1"]},"jobType":{"description":"What `relativePosition` names. Tasks and work orders may share a number within a project.","type":"string","default":"phase","enum":["task","workOrder","phase"]},"block":{"description":"Jobs of the project the linked work order blocks. Omitted or empty, no such dependency is created.","type":"array","items":{"$ref":"#/components/schemas/ProjectDependentJob"}},"isBlockedBy":{"description":"Jobs of the project that block the linked work order. Omitted or empty, no such dependency is created.","type":"array","items":{"$ref":"#/components/schemas/ProjectDependentJob"}}}},"ProjectDependentJob":{"description":"Task or work order of the project taking part in a dependency. Phases take no part in dependencies.","type":"object","additionalProperties":false,"required":["jobType","code"],"properties":{"jobType":{"description":"Whether `code` is the number of a task or of a work order.","type":"string","enum":["task","workOrder"]},"code":{"description":"Number of the task or work order.","type":"string","examples":["WO-2026-00124"]}}},"WorkOrderServiceOrderLinkRequest":{"description":"Work order to link to the service order and its position among the service order's work orders. Unknown properties are rejected.","type":"object","additionalProperties":false,"required":["code"],"properties":{"code":{"description":"Business code of the work order to link.","type":"string","examples":["WO-2026-00123"]},"insertion":{"$ref":"#/components/schemas/ServiceOrderInsertion"}}},"ServiceOrderInsertion":{"description":"Position of the work order among the service order's work orders. When absent, the work order is linked last.","type":"object","additionalProperties":false,"properties":{"insertionMode":{"description":"How the position is expressed.","type":"string","default":"last","enum":["first","last","index","before","after"]},"position":{"description":"Zero-based position among the service order's work orders. Required by `index`, ignored otherwise. Clamped to the bounds of the list.","type":"integer","examples":[2]},"relativePosition":{"description":"Business code of the work order to sit before or after, required by `before` and `after`. Must be a work order of the service order, other than the one being linked.","type":"string","examples":["WO-2026-00120"]}}},"CrewListResponse":{"description":"A page of crews active over the requested period.","type":"object","required":["data"],"properties":{"continuationToken":{"description":"Opaque pagination token. Pass it back as the `continuationToken` query parameter to get the next page. null means last page. Do not parse or construct it.","type":["string","null"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Crew"}}}},"Crew":{"description":"A crew, its main resource and its secondary resources, with their participation intervals.","type":"object","required":["mainResource","secondaryResources"],"properties":{"mainResource":{"$ref":"#/components/schemas/CrewMainResource"},"secondaryResources":{"$ref":"#/components/schemas/CrewSecondaryResources"}}},"CrewMainResource":{"description":"Resource carrying the crew. Its intervals are the crew's intervals.","type":"object","required":["code","type","intervals"],"properties":{"code":{"description":"Business code of the technician or equipment.","type":"string","examples":["T-DAVID"]},"type":{"description":"Kind of field resource.","type":"string","enum":["technician","equipment"]},"intervals":{"description":"Participation intervals, non-overlapping, sorted by start date.","type":"array","minItems":1,"items":{"$ref":"#/components/schemas/CrewInterval"}}}},"CrewSecondaryResources":{"description":"Resources working with the main resource, split by kind. Empty lists when none.","type":"object","required":["technicians","equipments"],"properties":{"technicians":{"type":"array","items":{"$ref":"#/components/schemas/CrewResource"}},"equipments":{"type":"array","items":{"$ref":"#/components/schemas/CrewResource"}}}},"CrewResource":{"description":"Secondary resource of a crew.","type":"object","required":["code","intervals"],"properties":{"code":{"description":"Business code of the technician or equipment.","type":"string","examples":["truck-04"]},"intervals":{"description":"Participation intervals, non-overlapping, sorted by start date, always within the main resource's intervals.","type":"array","minItems":1,"items":{"$ref":"#/components/schemas/CrewInterval"}}}},"CrewInterval":{"description":"Participation interval, half-open `[startDate, endDate)`, in UTC.","type":"object","required":["startDate","endDate"],"properties":{"startDate":{"description":"Interval start, inclusive. UTC date-time notation as defined by RFC 3339, section 5.6.","type":"string","format":"date-time","examples":["2026-09-21T06:00:00Z"]},"endDate":{"description":"Interval end, exclusive. null for an open-ended interval.","type":["string","null"],"format":"date-time","examples":["2026-09-26T00:00:00Z"]}}}},"examples":{"NewItemWithAllFields":{"value":{"name":"Wireless mouse","reference":"REF-WMOUSE-324","itemCategoryCode":"IT_ACCESSORIES","description":"Ergonomic wireless mouse with USB receiver.","barCode":"3614271234567","manufacturer":"Logitech","dimensions":1,"attributes":{"isGeneric":false,"isParentItem":false,"hasFixedQuantity":false,"availableOnMobile":true},"tracking":{"trackedInStock":true,"serialNumberFormat":"^SN[0-9]{8}$"},"billingParameters":{"invoiceMode":"INTERNAL","priceDetails":{"unitPrice":29.99,"vatRates":[0.2],"displayPriceOnMobile":true,"displayPriceOnWeb":"ALWAYS"}},"customFields":{"WARRANTY":{"textValue":"24 months"},"REFURBISHED":{"booleanValue":false},"SUPPLIER_LINK":{"urlValue":"https://www.logitech.com"}}}},"NewItemWithMandatoryFieldsOnly":{"value":{"name":"Ethernet cable","itemCategoryCode":"CABLES","dimensions":1,"attributes":{"isGeneric":false,"isParentItem":false,"hasFixedQuantity":false,"availableOnMobile":false},"tracking":{"trackedInStock":false},"billingParameters":{"invoiceMode":"EXTERNAL"}}},"UpdateItemWithAllFields":{"value":{"name":"Wireless mouse v2","reference":"REF-WMOUSE-324-V2","itemCategoryCode":"IT_ACCESSORIES","description":"Updated ergonomic wireless mouse with USB-C receiver.","barCode":"3614271234568","manufacturer":"Logitech","dimensions":1,"attributes":{"isGeneric":false,"isParentItem":false,"hasFixedQuantity":false,"availableOnMobile":true},"tracking":{"trackedInStock":true,"serialNumberFormat":"^SN[0-9]{8}$"},"billingParameters":{"invoiceMode":"INTERNAL","priceDetails":{"unitPrice":34.99,"vatRates":[0.2],"displayPriceOnMobile":true,"displayPriceOnWeb":"BY_PROFILE"}},"customFields":{"WARRANTY":{"textValue":"36 months"},"REFURBISHED":{"booleanValue":true},"SUPPLIER_LINK":{"urlValue":"https://www.logitech.com/v2"}}}},"UpdateItemWithMandatoryFieldsOnly":{"value":{"name":"Ethernet cable Cat6","itemCategoryCode":"CABLES","dimensions":1,"attributes":{"isGeneric":false,"isParentItem":false,"hasFixedQuantity":false,"availableOnMobile":false},"tracking":{"trackedInStock":false},"billingParameters":{"invoiceMode":"EXTERNAL"}}},"ItemWithNoUnitPrice":{"value":{"name":"Complimentary item","itemCategoryCode":"MISC","dimensions":1,"attributes":{"isGeneric":false,"isParentItem":false,"hasFixedQuantity":true,"availableOnMobile":false},"tracking":{"trackedInStock":false},"billingParameters":{"invoiceMode":"INTERNAL","priceDetails":{"unitPrice":null,"vatRates":null,"displayPriceOnMobile":null,"displayPriceOnWeb":null}}}},"ItemPutBadRequestMissingCode":{"value":{"errors":[{"code":"businessOrganization.item.code.mandatory","message":"Missing code in path."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"ItemPutBadRequestMissingName":{"value":{"errors":[{"code":"businessOrganization.item.name.mandatory","message":"Property name is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingItemCategoryCode":{"value":{"errors":[{"code":"businessOrganization.item.itemcategorycode.mandatory","message":"Property itemCategoryCode is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingDimensions":{"value":{"errors":[{"code":"businessOrganization.item.dimensions.mandatory","message":"Property dimensions is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingAttributes":{"value":{"errors":[{"code":"businessOrganization.item.attributes.mandatory","message":"Property attributes is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingIsGeneric":{"value":{"errors":[{"code":"businessOrganization.item.isgeneric.mandatory","message":"Property attributes.isGeneric is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingIsParentItem":{"value":{"errors":[{"code":"businessOrganization.item.isparentitem.mandatory","message":"Property attributes.isParentItem is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingHasFixedQuantity":{"value":{"errors":[{"code":"businessOrganization.item.hasfixedquantity.mandatory","message":"Property attributes.hasFixedQuantity is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingAvailableOnMobile":{"value":{"errors":[{"code":"businessOrganization.item.availableonmobile.mandatory","message":"Property attributes.availableOnMobile is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingBillingParameters":{"value":{"errors":[{"code":"businessOrganization.item.billingparameters.mandatory","message":"Property billingParameters is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingInvoiceMode":{"value":{"errors":[{"code":"businessOrganization.item.invoicemode.mandatory","message":"Property invoiceMode is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestNameTooLong":{"value":{"errors":[{"code":"businessOrganization.item.name.length","message":"The name length must not exceed 256 characters."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestReferenceTooLong":{"value":{"errors":[{"code":"businessOrganization.item.reference.length","message":"The reference length must not exceed 256 characters."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestDescriptionTooLong":{"value":{"errors":[{"code":"businessOrganization.item.description.length","message":"The description length must not exceed 10000 characters."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestBarCodeTooLong":{"value":{"errors":[{"code":"businessOrganization.item.barcode.length","message":"The barCode length must not exceed 100 characters."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestManufacturerTooLong":{"value":{"errors":[{"code":"businessOrganization.item.manufacturer.length","message":"The manufacturer length must not exceed 100 characters."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestSerialNumberFormatTooLong":{"value":{"errors":[{"code":"businessOrganization.item.serialnumberformat.length","message":"The serialNumberFormat length must not exceed 100 characters."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidIsGeneric":{"value":{"errors":[{"code":"businessOrganization.item.isgeneric.invalid","message":"Invalid value for attributes.isGeneric. Allowed values are: true, false."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidIsParentItem":{"value":{"errors":[{"code":"businessOrganization.item.isparentitem.invalid","message":"Invalid value for attributes.isParentItem. Allowed values are: true, false."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidHasFixedQuantity":{"value":{"errors":[{"code":"businessOrganization.item.hasfixedquantity.invalid","message":"Invalid value for attributes.hasFixedQuantity. Allowed values are: true, false."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidAvailableOnMobile":{"value":{"errors":[{"code":"businessOrganization.item.availableonmobile.invalid","message":"Invalid value for attributes.availableOnMobile. Allowed values are: true, false."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidTrackedInStock":{"value":{"errors":[{"code":"businessOrganization.item.trackedinstock.invalid","message":"Invalid value for tracking.trackedInStock. Allowed values are: true, false."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidDisplayPriceOnMobile":{"value":{"errors":[{"code":"businessOrganization.item.displaypriceonmobile.invalid","message":"Invalid value for displayPriceOnMobile. Allowed values are: true, false."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidDimensions":{"value":{"errors":[{"code":"businessOrganization.item.dimensions.invalid","message":"Invalid value for dimensions. Allowed values are: 1, 2, 3."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidInvoiceMode":{"value":{"errors":[{"code":"businessOrganization.item.invoicemode.invalid","message":"Invalid value for invoiceMode. Allowed values are: INTERNAL, EXTERNAL."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidDisplayPriceOnWeb":{"value":{"errors":[{"code":"businessOrganization.item.displaypriceonweb.invalid","message":"Invalid value for displayPriceOnWeb. Allowed values are: ALWAYS, BY_PROFILE."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidVatRate":{"value":{"errors":[{"code":"businessOrganization.item.vatrates.invalid","message":"Invalid value for vatRates. Each rate must be between 0 and 0.99999."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestItemCategoryUnknown":{"value":{"errors":[{"code":"businessOrganization.item.itemcategory.unknown","message":"The item category 'DUMMY' is unknown."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"ItemPutBadRequestVatRatesNotNullWhenNoPrice":{"value":{"errors":[{"code":"businessOrganization.item.vatrates.forbidden","message":"When unitPrice is 0 or null, vatRates must be null."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestDisplayPriceOnMobileNotNullWhenNoPrice":{"value":{"errors":[{"code":"businessOrganization.item.displaypriceonmobile.forbidden","message":"When unitPrice is 0 or null, displayPriceOnMobile must be null."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestDisplayPriceOnWebNotNullWhenNoPrice":{"value":{"errors":[{"code":"businessOrganization.item.displaypriceonweb.forbidden","message":"When unitPrice is 0 or null, displayPriceOnWeb must be null."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingDisplayPriceOnWeb":{"value":{"errors":[{"code":"businessOrganization.item.displaypriceonweb.mandatory","message":"Property displayPriceOnWeb is required when unitPrice is greater than 0."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestMissingDisplayPriceOnMobile":{"value":{"errors":[{"code":"businessOrganization.item.displaypriceonmobile.mandatory","message":"Property displayPriceOnMobile is required when unitPrice is greater than 0."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestDisplayPriceOnMobileConflict":{"value":{"errors":[{"code":"businessOrganization.item.displaypriceonmobile.conflict","message":"Property displayPriceOnMobile cannot be true when availableOnMobile is false."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestInvalidJSON":{"value":{"errors":[{"code":"businessOrganization.item.invalid.json","message":"Invalid Json format."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestDuplicatedField":{"value":{"errors":[{"code":"businessOrganization.item.invalid.json","message":"Duplicate field 'name'."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemPutBadRequestUnknownField":{"value":{"errors":[{"code":"businessOrganization.item.field.unknown","message":"The field 'foo_bar' is unknown. Please correct your JSON request."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"ItemGetBadRequestMissingCode":{"value":{"errors":[{"code":"businessOrganization.item.code.mandatory","message":"Missing code in path."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"ItemGetNotFound":{"value":{"errors":[{"code":"businessOrganization.items.code.unknown","message":"The item WMOUSE_324 does not exist."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"SkillBodyExample1":{"value":{"name":"Fiber Optic Splicing Certified"}},"SkillBodyExample2":{"value":{"name":"HVAC System Repair"}},"NewCustomerWithAllFields":{"value":{"name":"New Customer","addressDetails":{"address":"28 Rue de Mogador","zipCode":"75009","city":"Paris","country":"FR"},"contact":{"name":"Jean Du Jardin","details":[{"type":"Mobile","description":"Personal mobile number","value":"+608012601"},{"type":"Email","description":"Work email","value":"john.doe@company.com"},{"type":"Phone","description":"","value":"987654321"},{"type":"Fax","description":"Office fax","value":"+1122334455"}]},"description":"New Customer Description","officeCode":"ac81fde","customFields":{"textCustomFieldCode":{"textValue":"I am a text field"},"checkBoxCustomFieldCode":{"booleanValue":true},"dateCustomFieldCode":{"dateValue":"2024-12-25"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-25T12:15"},"timeCustomFieldCode":{"timeValue":44100},"dropDownCustomFieldCode":{"dropDownValue":"I am a drop down text"},"urlCustomFieldCode":{"urlValue":"https://www.praxedo.fr/"},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"NewCustomerWithMandatoryFieldsOnly":{"value":{"name":"New Customer","addressDetails":{"city":"Paris"},"officeCode":"ac81fde","customFields":{"mandatoryTextCustomFieldCode":{"textValue":"I am a text field"}}}},"UpdateCustomerWithAllFields":{"value":{"name":"Customer to update","addressDetails":{"address":"1 Rue d'Aubervilliers","zipCode":"75019","city":"Paris","country":"FR"},"contact":{"name":"Jean Du Jardin","details":[{"type":"Mobile","description":"Personal mobile number","value":"+7234567890"},{"type":"Email","description":"Work email","value":"john.doe@company.com"},{"type":"Phone","description":"","value":"987654321"},{"type":"Fax","description":"Office fax","value":"+1122334455"}]},"description":"Update customer description","officeCode":"ac81fde","customFields":{"textCustomFieldCode":{"textValue":"I am a text field"},"checkBoxCustomFieldCode":{"booleanValue":true},"dateCustomFieldCode":{"dateValue":"2024-12-25"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-25T12:15"},"timeCustomFieldCode":{"timeValue":44100},"dropDownCustomFieldCode":{"dropDownValue":"I am a drop down text"},"urlCustomFieldCode":{"urlValue":"https://www.praxedo.fr/"},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"UpdateCustomerWithMandatoryFieldsOnly":{"value":{"name":"Customer name to update","addressDetails":{"city":"Paris"},"officeCode":"ac81fde","customFields":{"mandatoryTextCustomFieldCode":{"textValue":"I am a text field"}}}},"NewSubCustomer":{"value":{"name":"New sub customer","parentCustomerCode":"a56tgj89","addressDetails":{"address":"87 rue Assas","zipCode":"75006","city":"Paris","country":"FR"},"contact":{"name":"Louis Julien","details":[{"type":"Mobile","description":"Personal mobile number","value":"+7234567890"},{"type":"Email","description":"Work email","value":"louis.julien@company.com"},{"type":"Phone","description":"","value":"0143263361"},{"type":"Fax","description":"Office fax","value":"+1122334455"}]},"description":"New sub customer description","officeCode":"df89edd","customFields":{"textCustomFieldCode":{"textValue":"I am a text field"},"checkBoxCustomFieldCode":{"booleanValue":true},"dateCustomFieldCode":{"dateValue":"2024-12-25"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-25T12:15"},"timeCustomFieldCode":{"timeValue":44100},"dropDownCustomFieldCode":{"dropDownValue":"I am a drop down text"},"urlCustomFieldCode":{"urlValue":"https://www.praxedo.fr/"},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"NewRootSiteWithAllFields":{"value":{"name":"New Site","customerCode":"CUSTOMER01","location":{"addressDetails":{"address":"28 Rue de Mogador","zipCode":"75009","city":"Paris","country":"FR"},"geolocation":{"latitude":48.8567,"longitude":2.3508}},"contact":{"name":"Jane Doe","details":[{"type":"Mobile","description":"Personal mobile number","value":"+7234567890"},{"type":"Email","description":"Work email","value":"john.doe@company.com"},{"type":"Phone","description":"","value":987654321},{"type":"Fax","description":"Office fax","value":"+1122334455"}]},"description":"New Site Description","officeCode":"ac81fde","customFields":{"textCustomFieldCode":{"textValue":"I am a text field"},"checkBoxCustomFieldCode":{"booleanValue":true},"dateCustomFieldCode":{"dateValue":"2024-12-25"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-25T12:15"},"timeCustomFieldCode":{"timeValue":44100},"dropDownCustomFieldCode":{"dropDownValue":"I am a drop down text"},"urlCustomFieldCode":{"urlValue":"https://www.praxedo.fr/"},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"NewSiteWithMandatoryFieldsOnly":{"value":{"name":"New Site","customerCode":"CUSTOMER01","location":{"addressDetails":{"address":"28 Rue de Mogador","city":"Paris"}},"officeCode":"ac81fde","customFields":{"mandatoryTextCustomFieldCode":{"textValue":"I am a text field"}}}},"UpdateSiteWithAllFields":{"value":{"name":"Site to update","customerCode":"CUSTOMER01","parentSiteCode":"SITE_0","location":{"addressDetails":{"address":"89 rue de la Victoire","zipCode":"75009","city":"Paris","country":"FR"},"geolocation":{"latitude":0,"longitude":0}},"contact":{"name":"Jane Doe","details":[{"type":"Mobile","description":"Personal mobile number","value":"+7234567890"},{"type":"Email","description":"Work email","value":"john.doe@company.com"},{"type":"Phone","description":"","value":987654321},{"type":"Fax","description":"Office fax","value":"+1122334455"}]},"description":"Update Site Description","officeCode":"ac81fde","customFields":{"textCustomFieldCode":{"textValue":"I am a text field"},"checkBoxCustomFieldCode":{"booleanValue":true},"dateCustomFieldCode":{"dateValue":"2024-12-25"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-25T12:15"},"timeCustomFieldCode":{"timeValue":44100},"dropDownCustomFieldCode":{"dropDownValue":"I am a drop down text"},"urlCustomFieldCode":{"urlValue":"https://www.praxedo.fr/"},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"UpdateSiteWithMandatoryFieldsOnly":{"value":{"name":"New Site","customerCode":"CUSTOMER02","location":{"addressDetails":{"address":"89 rue de la Victoire","city":"Paris"}},"officeCode":"ac81fde","customFields":{"mandatoryTextCustomFieldCode":{"textValue":"I am a text field"}}}},"NewSubSite":{"value":{"name":"New sub site","customerCode":"CUSTOMER02","parentSiteCode":"SITE_0","location":{"addressDetails":{"address":"106 rue de la Fayette","zipCode":"75010","city":"Paris","country":"FR"},"geolocation":{"latitude":0,"longitude":0}},"contact":{"name":"David Smith","details":[{"type":"Mobile","description":"Personal mobile number","value":"+7234567890"},{"type":"Email","description":"Work email","value":"louis.julien@company.com"},{"type":"Phone","description":"","value":"0143263361"},{"type":"Fax","description":"Office fax","value":"+1122334455"}]},"description":"New sub site description","officeCode":"df89edd","customFields":{"textCustomFieldCode":{"textValue":"I am a text field"},"checkBoxCustomFieldCode":{"booleanValue":true},"dateCustomFieldCode":{"dateValue":"2024-12-25"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-25T12:15"},"timeCustomFieldCode":{"timeValue":44100},"dropDownCustomFieldCode":{"dropDownValue":"I am a drop down text"},"urlCustomFieldCode":{"urlValue":"https://www.praxedo.fr/"},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"NewAssetWithAllFields":{"value":{"label":"Fridge RC400","siteCode":"MCDOPA75009","assetTypeCode":"FRIDGE","officeCode":"OFFICE_PARIS","description":"Fridge RC400 for restauration","commissioning":{"startDate":"2021-06-08","status":"ACTIVE"},"customFields":{"textCustomFieldCode":{"textValue":"24 months"},"checkBoxCustomFieldCode":{"booleanValue":true},"dropDownCustomFieldCode":{"dropDownValue":"High"},"urlCustomFieldCode":{"urlValue":"https://asset-manual.com"},"dateCustomFieldCode":{"dateValue":"2024-12-25"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-25T10:00"},"timeCustomFieldCode":{"timeValue":36000},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"NewAssetWithMandatoryFieldsOnly":{"value":{"label":"Motor RC129","siteCode":"SITE_001","assetTypeCode":"MOTOR","customFields":{"mandatoryTextCustomFieldCode":{"textValue":"Mandatory field value"}}}},"UpdateAssetWithAllFields":{"value":{"label":"Updated Fridge RC400","siteCode":"MCDOPA75009","assetTypeCode":"FRIDGE","officeCode":"OFFICE_PARIS","description":"Fridge RC400 for restauration","commissioning":{"startDate":"2021-05-08","status":"ACTIVE"},"customFields":{"textCustomFieldCode":{"textValue":"24 months"},"checkBoxCustomFieldCode":{"booleanValue":true},"dropDownCustomFieldCode":{"dropDownValue":"High"},"urlCustomFieldCode":{"urlValue":"https://asset-manual.com"},"dateCustomFieldCode":{"dateValue":"2024-12-25"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-25T10:00"},"timeCustomFieldCode":{"timeValue":36000},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"UpdateAssetWithMandatoryFieldsOnly":{"value":{"label":"Updated Basic Asset","siteCode":"SITE_001","assetTypeCode":"BASIC","customFields":{"mandatoryTextCustomFieldCode":{"textValue":"Updated mandatory value"}}}},"NewSubAsset":{"value":{"label":"Sub asset","siteCode":"FACTORY_SITE","assetTypeCode":"PTO","officeCode":"MAINTENANCE_OFFICE","parentAssetCode":"BOX","description":"Sub component of telecom installation","commissioning":{"startDate":"2023-03-20","status":"ACTIVE"},"customFields":{"textCustomFieldCode":{"textValue":"SN123456789"},"checkBoxCustomFieldCode":{"booleanValue":false},"dropDownCustomFieldCode":{"dropDownValue":"Low"},"urlCustomFieldCode":{"urlValue":"https://sub-asset-doc.com"},"dateCustomFieldCode":{"dateValue":"2024-11-01"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-15T09:00"},"timeCustomFieldCode":{"timeValue":32400},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"SubscriptionRequest":{"value":[{"callback":{"url":"https://callback.example.com/webhooks","secret":"z0nstsmkmrvve4nzc26pu3ky80zsdorlh","headers":[{"name":"x-pxo-custom_header_name_1","value":"value of the custom header 1"},{"name":"x-pxo-custom_header_name_2","value":"value of the custom header 2"}]},"eventTypes":[{"name":"workorder.deletion"}]}]},"SubscriptionRequestNoSecret":{"value":[{"callback":{"url":"https://callback.example.com/webhooks"},"eventTypes":[{"name":"workorder.deletion"}]}]},"SubscriptionRequestNoCustomHeaders":{"value":[{"callback":{"url":"https://callback.example.com/webhooks","secret":"z0nstsmkmrvve4nzc26pu3ky80zsdorlh"},"eventTypes":[{"name":"workorder.deletion"}]}]},"SubscriptionSuccessfullyCreated":{"summary":"Subscription created successfully","value":[{"id":"abcdefghijklmnopqrstuvwxyz","eventTypes":[{"name":"workorder.deletion"}]}]},"EmptyListSubscriptions":{"summary":"Empty subscription list","value":{"subscriptions":[]}},"ListSubscriptions":{"summary":"Subscription list successfully retrieved","value":{"subscriptions":[{"id":"1","status":"ACTIVE","callback":{"url":"https://callback.example.com/webhooks","secret":"z0nstsmkmrvve4nzc26pu3ky80zsdorlh","headers":[{"name":"x-pxo-custom_header_name_1","value":"value of the custom header 1"},{"name":"x-pxo-custom_header_name_2","value":"value of the custom header 2"}]},"eventTypes":[{"name":"workorder.validation"},{"name":"workorder.deletion"},{"name":"asset.upsert"}]},{"id":"2","status":"INACTIVE","callback":{"url":"https://callback.example.com/webhooks","headers":[]},"eventTypes":[{"name":"workorder.deletion"}]}]}},"WorkOrderValidationEvent":{"summary":"Work order validation callback","value":{"version":"1","id":"5c84b579-ae20-4e40-be1d-e8e57a96cb48","creationTime":"2025-08-08T09:34:00.768098881Z","eventType":"workorder.validation","subscriptionId":"WEHS_251210151605_94OU25","data":{"validatedAt":"2025-08-08T09:33:59.436326071Z","workorderCode":"00091","workorderUuid":"bd5917fa-3c70-490c-911f-c95aa02e6df4","officeCode":"00091","actor":{"type":"webUser","identifier":"user@company.com"}}}},"WorkOrderDeletionEvent":{"summary":"Work order deletion callback","value":{"version":"1","id":"5c84b579-ae20-4e40-be1d-e8e57a96cb48","creationTime":"2025-08-08T09:34:00.768098881Z","eventType":"workorder.deletion","subscriptionId":"WEHS_251210151605_94OU25","data":{"deletedAt":"2025-08-08T09:33:59.436326071Z","workorderCode":"00091","workorderUuid":"bd5917fa-3c70-490c-911f-c95aa02e6df4","officeCode":"00091","actor":{"type":"webUser","identifier":"user@company.com"}}}},"AssetUpsertEvent":{"summary":"Asset upsert callback","value":{"version":"1","id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","creationTime":"2025-09-17T17:17:35.000000000Z","eventType":"asset.upsert","subscriptionId":"WEHS_251210151605_94OU25","data":{"updatedAt":"2025-09-17T17:17:35.000000000Z","assetCode":"A-456","officeCode":"Office-1","actor":{"type":"webUser","identifier":"user@company.com"}}}},"ListEmptyResponse":{"value":{"continuationToken":null,"data":[]}},"ItemWithCustomFields":{"value":{"itemCode":"WMOUSE_324","name":"Wireless mouse","itemCategoryCode":"IT_ACCESSORIES","dimensions":1,"attributes":{"isGeneric":false,"isParentItem":false,"hasFixedQuantity":false,"availableOnMobile":true},"tracking":{"trackedInStock":true},"billingParameters":{"invoiceMode":"INTERNAL"},"customFields":{"WARRANTY":{"textValue":"24 months"},"REFURBISHED":{"booleanValue":false},"SUPPLIER_LINK":{"urlValue":"https://www.logitech.com"}},"lastUpdate":"2025-11-09T23:30:00Z"}},"ItemListWithMorePagesResponse":{"value":{"continuationToken":"c2FqZGhmYmtrMzQ1YiBrZiA5MyBrYmdrcTg3MjMgazg5bm4gICAwNCAgbmVpcnQ4NzkzbiBnb3A4NA==","data":[{"itemCode":"WMOUSE_324","name":"Wireless mouse","reference":21348146,"itemCategoryCode":"PHERIPHERICS","description":"Wireless mouse for PCs","barCode":"032160165400","manufacturer":"Asus","dimensions":1,"attributes":{"isGeneric":true,"isParentItem":false,"hasFixedQuantity":true,"availableOnMobile":true},"tracking":{"trackedInStock":true,"serialNumberFormat":null},"billingParameters":{"priceDetails":{"unitPrice":22.9,"vatRates":[0.09,0.12,0.19],"displayPriceOnMobile":true,"displayPriceOnWeb":"ALWAYS"},"invoiceMode":"EXTERNAL"},"customFields":{"WARRANTY":{"textValue":"24 months"},"REFURBISHED":{"booleanValue":false},"SUPPLIER_LINK":{"urlValue":"https://www.logitech.com"}},"lastUpdate":"2025-11-09T23:30:00Z"},{"itemCode":"KEYBOARD_012","name":"Gaming keyboard","reference":null,"itemCategoryCode":"PHERIPHERICS","description":null,"manufacturer":"Asus","barCode":null,"dimensions":3,"attributes":{"isGeneric":false,"isParentItem":false,"isFixedQuantity":true,"isAvailableOnMobileDevices":true},"tracking":{"trackedInStock":true,"serialNumberFormat":"^SN2024-ALPHA-[0-9]{5}$"},"billingParameters":{"priceDetails":null,"invoiceMode":"INTERNAL"},"lastUpdate":"2025-10-12T09:00:00Z"}]}},"ItemListLastPageResponse":{"value":{"continuationToken":null,"data":[{"itemCode":"USB_STICK_32GB","name":"USB Stick","reference":null,"itemCategoryCode":"PHERIPHERICS","description":"USB Stick with 32 GB RAM","barCode":"34756834569","manufacturer":"LG","dimensions":1,"attributes":{"isGeneric":false,"isParentItem":false,"hasFixedQuantity":false,"availableOnMobile":true},"tracking":{"trackedInStock":false,"serialNumberFormat":"^[A-Z]{3}-[0-9]{3}-[A-Z]{3}\u0026"},"billingParameters":{"priceDetails":false,"invoiceMode":"INTERNAL"},"lastUpdate":"2025-11-19T15:00:50Z"}]}},"CharacteristicListWithMorePagesResponse":{"value":{"continuationToken":"c2FqZGhmYmtrMzQ1YiBrZiA5MyBrYmdrcTg3MjMgazg5bm4gICAwNCAgbmVpcnQ4NzkzbiBnb3A4NA==","data":[{"characteristicCode":"CRANE_20M","name":"Crane 20M","lastUpdate":"2025-11-09T23:30:00Z"},{"characteristicCode":"CRANE_30M","name":"Crane 30M","lastUpdate":"2025-11-09T23:30:00Z"},{"characteristicCode":"CRANE_ELEC","name":"Electric crane","lastUpdate":"2025-11-09T23:30:00Z"},{"characteristicCode":"CRANE_THERM","name":"Thermic crane","lastUpdate":"2025-11-09T23:30:00Z"}]}},"CharacteristicListLastPageResponse":{"value":{"continuationToken":null,"data":[{"characteristicCode":"CRANE_20M","name":"Crane 20M","lastUpdate":"2025-11-09T23:30:00Z"},{"characteristicCode":"CRANE_30M","name":"Crane 30M","lastUpdate":"2025-11-09T23:30:00Z"},{"characteristicCode":"CRANE_ELEC","name":"Electric crane","lastUpdate":"2025-11-09T23:30:00Z"},{"characteristicCode":"CRANE_THERM","name":"Thermic crane","lastUpdate":"2025-11-09T23:30:00Z"}]}},"SkillListWithMorePagesResponse":{"value":{"continuationToken":"c2FqZGhmYmtrMzQ1YiBrZiA5MyBrYmdrcTg3MjMgazg5bm4gICAwNCAgbmVpcnQ4NzkzbiBnb3A4NA==","data":[{"skillCode":"Fiber","name":"FTTH","lastUpdate":"2025-11-09T23:30:00Z"},{"skillCode":"HIGH","name":"High","lastUpdate":"2025-11-09T23:30:00Z"},{"skillCode":"HV","name":"High voltage","lastUpdate":"2025-11-09T23:30:00Z"},{"skillCode":"LV","name":"Low voltage","lastUpdate":"2025-11-09T23:30:00Z"}]}},"SkillListLastPageResponse":{"value":{"continuationToken":null,"data":[{"skillCode":"Fiber","name":"FTTH","lastUpdate":"2025-11-09T23:30:00Z"},{"skillCode":"HIGH","name":"High","lastUpdate":"2025-11-09T23:30:00Z"},{"skillCode":"HV","name":"High voltage","lastUpdate":"2025-11-09T23:30:00Z"},{"skillCode":"LV","name":"Low voltage","lastUpdate":"2025-11-09T23:30:00Z"}]}},"CustomerWithMandatoryFieldsOnly":{"value":{"customerCode":"customer-b0ee57c9","parentCustomerCode":null,"name":"Customer name","addressDetails":{"address":null,"zipCode":null,"city":"Paris","country":null},"contact":null,"description":null,"officeCode":"office-ac81dkl","customFields":{"textCustomFieldCode":{"textValue":"Value of mandatory custom field"},"urlCustomFieldCode":{"urlValue":null},"dateCustomFieldCode":{"dateValue":null}},"lastUpdate":"2024-09-12T13:00:27Z"}},"CustomerWithoutCustomFieldsDefined":{"value":{"customerCode":"customer-b0ee57c9","parentCustomerCode":null,"name":"Customer name","addressDetails":{"address":null,"zipCode":null,"city":"Paris","country":null},"contact":null,"description":null,"officeCode":"office-ac81dkl","customFields":{},"lastUpdate":"2024-09-12T13:00:27Z"}},"CustomerWithAllFieldsDefined":{"value":{"customerCode":"customer-b0ee57c9","name":"Super Customer","parentCustomerCode":null,"addressDetails":{"address":"10 Boulevard Raspail","zipCode":"75007","city":"Paris","country":"FR"},"contact":{"name":"Jean Du Jardin","details":[{"type":"Mobile","description":"Personal mobile number","value":"+7234567890"},{"type":"Email","description":"Work email","value":"jean.dujardin@company.com"},{"type":"Phone","description":"","value":987654321},{"type":"Fax","description":"Office fax","value":"+1122334455"}]},"description":"Super customer description","officeCode":"office-ac81dkl","customFields":{"checkBoxCustomFieldCode":{"booleanValue":true},"dateCustomFieldCode":{"dateValue":"2024-12-11"},"dropDownCustomFieldCode":{"dropDownValue":"Option selected for drop down field"}},"lastUpdate":"2024-09-12T13:00:27Z"}},"SubCustomerWithMandatoryFieldsOnly":{"value":{"customerCode":"customer-bbcdef123","name":"Sub customer","parentCustomerCode":"customer-a0ee57c9","addressDetails":{"address":null,"zipCode":null,"city":"Paris","country":null},"contact":null,"description":null,"officeCode":"office-ac81dkl","customFields":{"textCustomFieldCode":{"textValue":null},"dateCustomFieldCode":{"dateValue":null}},"lastUpdate":"2024-09-12T13:00:27Z"}},"SubCustomerWithAllFieldsDefined":{"value":{"customerCode":"customer-bbcdef123","name":"Super sub customer","parentCustomerCode":"customer-a0ee57c9","addressDetails":{"address":"10 Boulevard Raspail","zipCode":"75007","city":"Paris","country":"FR"},"contact":{"name":"Rommain Duris","details":[{"type":"Mobile","description":"Personal mobile number","value":"+7234567890"},{"type":"Email","description":"Work email","value":"romain.duris@company.com"},{"type":"Phone","description":"","value":987654321},{"type":"Fax","description":"Office fax","value":"+1122334455"}]},"description":"Super sub customer description","officeCode":"office-ac81dkl","customFields":{"dropDownCustomFieldCode":{"dropDownValue":"Drop down text value"},"urlCustomFieldCode":{"urlValue":"https://www.domain.fr/"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-11-13T12:15"}},"lastUpdate":"2024-09-12T13:00:27Z"}},"CustomerWithCustomFields":{"value":{"customerCode":"customer-ksahf34h","parentCustomerCode":null,"name":"Customer with custom data","addressDetails":{"address":null,"zipCode":null,"city":"Nice","country":null},"contact":null,"description":null,"officeCode":"office-ksah8671","customFields":{"textCustomFieldCode":{"textValue":"Value of text field"},"checkboxCustomFieldCode":{"booleanValue":true},"dropDownCustomFieldCode":{"dropDownValue":"Option selected in drop down field"},"urlCustomFieldCode":{"urlValue":"https://www.domain.fr/link"},"dateCustomFieldCode":{"dateValue":"2024-12-11"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-11T15:30"},"timeCustomFieldCode":{"timeValue":55800},"gpsCustomFieldCode":{"gpsValue":{"latitude":34.293,"longitude":132.321}}},"lastUpdate":"2024-12-11T16:50:00Z"}},"SiteWithMandatoryFieldsOnly":{"value":{"siteCode":"site-123456","name":"Site Chatelet","customerCode":"customer-b0ee57c9","parentSiteCode":null,"officeCode":"PARIS","description":null,"location":{"addressDetails":{"address":"23 Rue des Lombards","zipCode":null,"city":"Paris","country":null},"geolocation":null},"contact":null,"lastUpdate":"2024-09-12T13:00:27Z"}},"SiteWithAllFieldsDefined":{"value":{"siteCode":"site-123456","name":"Site Chatelet","customerCode":"customer-b0ee57c9","parentSiteCode":null,"officeCode":"PARIS","description":"Super site description","location":{"addressDetails":{"address":"23 Rue des Lombards","zipCode":"75004","city":"Paris","country":"FR"},"geolocation":{"latitude":48.875567,"longitude":2.331379}},"contact":{"name":"Jean Du Jardin","details":[{"type":"Mobile","description":"Personal mobile number","value":"+7234567890"},{"type":"Email","description":"Work email","value":"john.doe@company.com"}]},"customFields":{"textCustomFieldCode":{"textValue":"Code of gate 1234#"},"checkBoxCustomFieldCode":{"booleanValue":true},"dateCustomFieldCode":{"dateValue":"2024-11-13"},"timeCustomFieldCode":{"timeValue":44100},"dropDownCustomFieldCode":{"dropDownValue":"VIP"}},"lastUpdate":"2024-09-12T13:00:27Z"}},"SubSiteWithMandatoryFieldsOnly":{"value":{"siteCode":"site-123456","name":"Site Chatelet","customerCode":"customer-b0ee57c9","parentSiteCode":"site-1","officeCode":"PARIS","description":null,"location":{"addressDetails":{"address":"23 Rue des Lombards","zipCode":null,"city":"Paris","country":null},"geolocation":null},"contact":null,"lastUpdate":"2024-09-12T13:00:27Z"}},"SubSiteWithAllFieldsDefined":{"value":{"siteCode":"site-123456","name":"Site Chatelet","customerCode":"customer-b0ee57c9","parentSiteCode":"site-1","officeCode":"PARIS","description":"A super sub site","location":{"addressDetails":{"address":"23 Rue des Lombards","zipCode":"75004","city":"Paris","country":"FR"},"geolocation":{"latitude":48.875567,"longitude":2.331379}},"contact":{"name":"Jean Du Jardin","details":[{"type":"Mobile","description":"Personal mobile number","value":"+1234567890"},{"type":"Email","description":"Work email","value":"john.doe@company.com"}]},"customFields":{"timeCustomFieldCode":{"timeValue":44100},"dropDownCustomFieldCode":{"dropDownValue":"Code of gate 1234#"},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}},"urlCustomFieldCode":{"urlValue":"https://www.praxedo.fr/"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-11-13T12:15"}},"lastUpdate":"2024-09-12T13:00:27Z"}},"SiteWithCustomFields":{"value":{"siteCode":"site-123456","name":"Site Chatelet","customerCode":"customer-b0ee57c9","officeCode":"office-123456","location":{"addressDetails":{"address":"23 Rue des Lombards","city":"Paris"}},"customFields":{"checkBoxCustomFieldCode":{"booleanValue":true},"timeCustomFieldCode":{"timeValue":44100},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}},"urlCustomFieldCode":{"urlValue":"https://www.praxedo.fr/"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-11-13T12:15"}},"lastUpdate":"2024-09-12T13:00:27Z"}},"AssetWithMandatoryFieldsOnly":{"value":{"assetCode":"MOTOR_001","label":"Motor dyson","customerCode":"LISI","siteCode":"LISI_VERNON","assetTypeCode":"MOTOR","lastUpdate":"2024-09-12T13:00:27Z"}},"AssetWithoutCustomFieldsDefined":{"value":{"assetCode":"MOTOR_001","label":"Motor dyson","customerCode":"LISI","siteCode":"LISI_VERNON","assetTypeCode":"MOTOR","officeCode":"IDF","description":"Electrical motor for factory engines","commissioning":{"startDate":"2024-01-15","status":"ACTIVE"},"lastUpdate":"2024-09-12T13:00:27Z"}},"AssetWithAllFieldsDefined":{"value":{"assetCode":"PTO_8273","label":"PTO_8273DUJAR","customerCode":"CUSTOMER_001","siteCode":"SITE-28E82","assetTypeCode":"PTO","officeCode":"PARIS","parentAssetCode":"BOX","description":"PTO of Mr Dujardin","commissioning":{"startDate":"2021-06-08","status":"INACTIVE"},"lastUpdate":"2024-09-12T13:00:27Z","customFields":{"textCustomFieldCode":{"textValue":"24 months"},"checkBoxCustomFieldCode":{"booleanValue":true},"dropDownCustomFieldCode":{"dropDownValue":"High"},"urlCustomFieldCode":{"urlValue":"https://asset-manual.com"},"dateCustomFieldCode":{"dateValue":"2024-12-25"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-25T10:00"},"timeCustomFieldCode":{"timeValue":36000},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"SubAssetWithMandatoryFieldsOnly":{"value":{"assetCode":"SUB_001","label":"Sub Component","customerCode":"CUSTOMER_001","siteCode":"SITE_001","assetTypeCode":"COMPONENT","parentAssetCode":"MAIN_001","lastUpdate":"2024-09-12T13:00:27Z"}},"SubAssetWithAllFieldsDefined":{"value":{"assetCode":"PUMP_001","label":"Water Pump System","customerCode":"CUSTOMER_001","siteCode":"FACTORY_SITE","assetTypeCode":"PUMP","officeCode":"MAINTENANCE_OFFICE","parentAssetCode":"WATER_SYSTEM","description":"Primary water pump for cooling system","commissioning":{"startDate":"2023-03-20","status":"ACTIVE"},"lastUpdate":"2024-09-12T13:00:27Z","customFields":{"textCustomFieldCode":{"textValue":"SN123456789"},"checkBoxCustomFieldCode":{"booleanValue":false},"dropDownCustomFieldCode":{"dropDownValue":"Low"},"urlCustomFieldCode":{"urlValue":"https://sub-asset-doc.com"},"dateCustomFieldCode":{"dateValue":"2024-11-01"},"dateTimeCustomFieldCode":{"dateTimeValue":"2024-12-15T09:00"},"timeCustomFieldCode":{"timeValue":32400},"gpsCustomFieldCode":{"gpsValue":{"longitude":48.8567,"latitude":2.3508}}}}},"CustomerGetBadRequestMissingCode":{"value":{"errors":[{"code":"referentials.customer.code.mandatory","message":"Missing code in path."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"CustomerPutBadRequestMissingAddressDetails":{"value":{"errors":[{"code":"referentials.customer.addressdetails.mandatory","message":"Property addressDetails is required."}],"errorReference":"88Hb11d0ae8145aa9b106b049091b371"}},"CustomerPutBadRequestMissingCity":{"value":{"errors":[{"code":"referentials.customer.city.mandatory","message":"Property city is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"CustomerPutBadRequestMissingCode":{"value":{"errors":[{"code":"referentials.customer.code.mandatory","message":"Missing code in path."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"CustomerPutBadRequestMissingName":{"value":{"errors":[{"code":"referentials.customer.name.mandatory","message":"Property name is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"CustomerPutBadRequestMissingCustomField":{"value":{"errors":[{"code":"referentials.customer.custom.field.mandatory","message":"Custom field 'custom_foo_bar' is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"CustomerPutBadRequestInvalidJSON":{"value":{"errors":[{"code":"referentials.customer.invalid.json","message":"Invalid Json format."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"CustomerPutBadRequestDuplicatedField":{"value":{"errors":[{"code":"referentials.customer.invalid.json","message":"Duplicate field 'name'."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"CustomerPutBadRequestUnknownField":{"value":{"errors":[{"code":"referentials.customer.field.unknown","message":"The field 'foo_bar' is unknown. Please correct your JSON request."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"CustomerPutBadRequestOfficeUnknown":{"value":{"errors":[{"code":"referentials.customer.office.unknown","message":"The organizational unit 'DUMMY' is unknown."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"CustomerPutBadRequestParentCustomerUnknown":{"value":{"errors":[{"code":"referentials.customer.parent.unknown","message":"The parent customer 'DUMMY' is unknown."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"CustomerPutBadRequestParentCustomerIdentical":{"value":{"errors":[{"code":"referentials.customer.parent.identical","message":"The customer cannot be its own parent."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"CustomerPutBadRequestParentCustomerChild":{"value":{"errors":[{"code":"referentials.customer.office.hierarchy.error","message":"The customer parent is also a child of the customer."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"CustomerPutBadRequestHierarchyLevels":{"value":{"errors":[{"code":"referentials.customer.office.hierarchy.error","message":"Hierarchy contains 10 or more levels."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"CustomerNotFoundResponse":{"value":{"errors":[{"code":"referentials.customer.not.found","message":"Customer not found."}],"errorReference":"6ef95ca524154a35bcc21e0d482bd07b"}},"SiteGetBadRequestMissingCode":{"value":{"errors":[{"code":"referentials.site.code.mandatory","message":"Missing code in path."}],"errorReference":"779b11d0ae8145aa9b106b049091b972"}},"SitePutBadRequestMissingAddressDetails":{"value":{"errors":[{"code":"referentials.site.addressdetails.mandatory","message":"Property addressDetails is required."}],"errorReference":"88Hb11d0ae8145aa9b106b049091b371"}},"SitePutBadRequestMissingCity":{"value":{"errors":[{"code":"referentials.site.city.mandatory","message":"Property city is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"SitePutBadRequestMissingCode":{"value":{"errors":[{"code":"referentials.site.code.mandatory","message":"Missing code in path"}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"SitePutBadRequestMissingName":{"value":{"errors":[{"code":"referentials.site.name.mandatory","message":"Property name is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"SitePutBadRequestMissingCustomer":{"value":{"errors":[{"code":"referentials.site.customer.mandatory","message":"Property customer is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"SitePutBadRequestMissingCustomField":{"value":{"errors":[{"code":"referentials.site.custom.field.mandatory","message":"Custom field 'custom_foo_bar' is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"SitePutBadRequestInvalidJSON":{"value":{"errors":[{"code":"referentials.site.invalid.json","message":"Invalid Json format."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"SitePutBadRequestDuplicatedField":{"value":{"errors":[{"code":"referentials.site.invalid.json","message":"Duplicate field 'name'."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"SitePutBadRequestUnknownField":{"value":{"errors":[{"code":"referentials.site.field.unknown","message":"The field 'foo_bar' is unknown. Please correct your JSON request."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"SitePutBadRequestOfficeUnknown":{"value":{"errors":[{"code":"referentials.site.office.unknown","message":"The organizational unit 'DUMMY' is unknown."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"SitePutBadRequestCustomerUnknown":{"value":{"errors":[{"code":"referentials.site.customer.unknown","message":"The customer 'DUMMY' is unknown."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"SitePutBadRequestParentSiteUnknown":{"value":{"errors":[{"code":"referentials.site.parent.unknown","message":"The parent site 'DUMMY' is unknown."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"SitePutBadRequestParentSiteIdentical":{"value":{"errors":[{"code":"referentials.site.parent.identical","message":"The site cannot be its own parent."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"SitePutBadRequestParentSiteChild":{"value":{"errors":[{"code":"referentials.site.hierarchy.error","message":"The site parent is also a child of the site."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"SitePutBadRequestHierarchyLevels":{"value":{"errors":[{"code":"referentials.site.office.hierarchy.error","message":"Hierarchy contains 10 or more levels."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"SiteNotFoundResponse":{"value":{"errors":[{"code":"referentials.site.not.found","message":"Site not found."}],"errorReference":"7gf95ca524154a35bcc21e0d482bd567hg"}},"CustomerNotFoundInSiteResponse":{"value":{"errors":[{"code":"referentials.customer.not.found","message":"Customer not found."}],"errorReference":"8ef95ca524154a35bcc21e0d482bd0fg8"}},"AssetGetBadRequestMissingCode":{"value":{"errors":[{"code":"referentials.asset.code.mandatory","message":"Missing code in path."}],"errorReference":"779b11d0ae8145aa9b106b049091b972"}},"AssetNotFoundResponse":{"value":{"errors":[{"code":"referentials.asset.code.notfound","message":"Asset with code 'ASSET_001' not found."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"MissingRequestBody":{"value":[{"errors":[{"code":"subscription.missing.body","message":"The request body is mandatory."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"MissingPropertyCallback":{"value":[{"errors":[{"code":"subscription.property.missing","message":"The callback property is mandatory."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"MissingPropertyCallbackUrl":{"value":[{"errors":[{"code":"subscription.property.missing","message":"The callback.url property is mandatory."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"MissingPropertyEventTypes":{"value":[{"errors":[{"code":"subscription.property.missing","message":"The eventTypes property is mandatory."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"EventTypesEmptyList":{"value":[{"errors":[{"code":"subscription.eventtypes.size","message":"The eventTypes list cannot be empty."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"EventTypesTooManyElements":{"value":[{"errors":[{"code":"subscription.eventtypes.size","message":"The eventTypes list cannot exceed 3 elements."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"EventTypesWrongEventType":{"value":[{"errors":[{"code":"subscription.eventtypes.invalid","message":"The eventType 'DUMMY' is not valid."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"CallbackWrongUrlFormat":{"value":[{"errors":[{"code":"subscription.callback.format","message":"The format of property callback.url is not valid. It should be a secure url."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"CallbackUrlMaxLength":{"value":[{"errors":[{"code":"subscription.callback.format","message":"The property callback.url should not exceed 2000 characters."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"CallbackSecretMaxLength":{"value":[{"errors":[{"code":"subscription.callback.format","message":"The property callback.secret should not exceed 512 characters."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"CallbackHeaderNameLength":{"value":[{"errors":[{"code":"subscription.callback.format","message":"The property callback.headers.name should not exceed 40 characters."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"CallbackHeaderValueLength":{"value":[{"errors":[{"code":"subscription.callback.format","message":"The property callback.headers.value should not exceed 512 characters."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"CallbackHeaderNameFormat":{"value":[{"errors":[{"code":"subscription.callback.format","message":"The format of property callback.headers.name is invalid. It should be 'x-pxo-{custom_name}'"}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"CallbackHeaderNameMissing":{"value":[{"errors":[{"code":"subscription.property.missing","message":"The name of property callback.headers.name is missing."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"CallbackHeaderNameDuplicate":{"value":[{"errors":[{"code":"subscription.callback.format","message":"The property callback.headers has duplicate names."}],"errorReference":"abcdefghijklmnopqrstuvwxyz0123456789"}]},"MaximumSubscriptionsReached":{"summary":"Subscription limit reached for the user","value":[{"errors":[{"code":"subscription.max.size","message":"Maximum of subscription reached."}],"errorReference":"f1028f99811b422eb21f5ff176664069"}]},"DiagnosticStandardNoteRequest":{"summary":"Standard free-text note","value":{"noteTypeCode":"STANDNOTE","author":"DHA","date":"2025-11-05T14:32:00Z","content":{"text":"Gate code is #9292"},"visibility":{"technician":true,"customerPortalUser":false}}},"DiagnosticIncomingCallNoteRequest":{"summary":"Incoming call note (coordinates required)","value":{"noteTypeCode":"INC","author":"DHA","date":"2025-11-05T14:32:00Z","coordinates":"+33612345678","content":{"text":"Customer called to confirm appointment."},"visibility":{"technician":false,"customerPortalUser":false}}},"DiagnosticOutgoingCallNoteRequest":{"summary":"Outgoing call note (coordinates required)","value":{"noteTypeCode":"OUT","author":"DHA","date":"2025-11-05T16:05:00Z","coordinates":"+33698765432","content":{"text":"Called customer back to reschedule the visit to next Tuesday."},"visibility":{"technician":true,"customerPortalUser":false}}},"DiagnosticReportBasedNoteCreateRequest":{"summary":"Report-based note - creation, one item per field type","value":{"noteTypeCode":"NFORM","author":"DHA","date":"2025-11-05T14:32:00Z","content":{"reportFields":{"REASON":{"dropDownValue":"Reschedule"},"CALLBACK_DATE":{"dateValue":"2025-12-01"},"CALLBACK_TIME":{"timeValue":52200},"CONTACT_NAME":{"textValue":"John Smith"},"VIP?":{"booleanValue":false},"PARTS_COUNT":{"numericValue":3},"PROCEDURE_LINK":{"urlValue":"https://intranet.acme.com/procedures/reschedule"}}},"visibility":{"technician":true,"customerPortalUser":false}}},"DiagnosticReportBasedNoteUpdateRequest":{"summary":"Report-based note - update of an existing note's status field","value":{"noteTypeCode":"NFORM","author":"DHA","date":"2025-11-06T09:12:00Z","content":{"reportFields":{"REASON":{"dropDownValue":"Resolved"},"CONTACT_NAME":{"textValue":"John Smith"}}},"visibility":{"technician":true,"customerPortalUser":false}}},"DiagnosticNotePutBadRequestMissingWoCodeInPath":{"value":{"errors":[{"code":"diagnostic.workorders.code.mandatory","message":"Missing code in path."}],"errorReference":"abcdefghij0123456789"}},"DiagnosticNotePutBadRequestMissingNoteCodeInPath":{"value":{"errors":[{"code":"diagnostic.workorders.note.code.mandatory","message":"Missing code in path."}],"errorReference":"abcdefghij0123456789"}},"DiagnosticNotePutBadRequestUnknownWorkOrder":{"value":{"errors":[{"code":"diagnostic.workorders.code.unknown","message":"The work order [WO-2025-004821] is unknown. It don't exisits or it is outside oauth2 hierarchy."}],"errorReference":"123e4567-e89b-12d3-a456-426614174000"}},"DiagnosticNotePutBadRequestUnknownNoteTypeCode":{"value":{"errors":[{"code":"diagnostic.workorders.note.noteTypeCode.unknown","message":"The note type code [NFORM] is unknown."}],"errorReference":"223e4567-e89b-12d3-a456-426614174001"}},"DiagnosticNotePutBadRequestUnknownReportFieldCode":{"value":{"errors":[{"code":"diagnostic.workorders.note.content.reportFields.code.unknown","message":"The report fields code [BUDGET] us unknown."}],"errorReference":"323e4567-e89b-12d3-a456-426614174002"}},"DiagnosticNotePutBadRequestDateFormat":{"value":{"errors":[{"code":"diagnostic.workorders.note.date.format","message":"Date don't respect expected format."}],"errorReference":"423e4567-e89b-12d3-a456-426614174003"}},"DiagnosticNotePutBadRequestReportFieldValueFormat":{"value":{"errors":[{"code":"diagnostic.workorders.note.content.reportFields.value.format","message":"The report fields [PARTS_COUNT] value don't respect expected format."}],"errorReference":"523e4567-e89b-12d3-a456-426614174004"}},"DiagnosticNotePutBadRequestMissingNoteTypeCode":{"value":{"errors":[{"code":"diagnostic.workorders.note.noteTypeCode.mandatory","message":"Property noteTypeCode is required."}],"errorReference":"623e4567-e89b-12d3-a456-426614174005"}},"DiagnosticNotePutBadRequestMissingContent":{"value":{"errors":[{"code":"diagnostic.workorders.note.content.mandatory","message":"Property content is required."}],"errorReference":"723e4567-e89b-12d3-a456-426614174006"}},"DiagnosticNotePutBadRequestMissingContentText":{"value":{"errors":[{"code":"diagnostic.workorders.note.content.text.mandatory","message":"Property content.text is required for standard notes."}],"errorReference":"823e4567-e89b-12d3-a456-426614174007"}},"DiagnosticNotePutBadRequestMissingContentReportFields":{"value":{"errors":[{"code":"diagnostic.workorders.note.content.reportFields.mandatory","message":"Property content.reportFields is required for custom notes."}],"errorReference":"923e4567-e89b-12d3-a456-426614174008"}},"DiagnosticNotePutBadRequestMissingContentFieldsMandatory":{"value":{"errors":[{"code":"diagnostic.workorders.note.content.fields.mandatory","message":"Fields [code] is required for custom notes."}],"errorReference":"923e4567-e89b-12d3-a456-426614175838"}},"DiagnosticNotePutBadRequestMissingCoordinates":{"value":{"errors":[{"code":"diagnostic.workorders.note.coordinates.mandatory","message":"Property coordinates is required for call notes."}],"errorReference":"a23e4567-e89b-12d3-a456-426614174009"}},"DiagnosticNotePutBadRequestDateInFuture":{"value":{"errors":[{"code":"diagnostic.workorders.note.date.futur","message":"A date cannot be set in the futur"}],"errorReference":"b23e4567-e89b-12d3-a456-426614174010"}},"DiagnosticNotePutBadRequestInvalidJSON":{"value":{"errors":[{"code":"diagnostic.workorders.note.invalid.json","message":"Invalid Json format."}],"errorReference":"c23e4567-e89b-12d3-a456-426614174011"}},"DiagnosticSetWorkOrderFlagsRequest":{"summary":"Replace the work order flags with a new set","value":{"flags":{"ids":[1,2,4,8]}}},"DiagnosticClearWorkOrderFlagsRequest":{"summary":"Clear all flags on the work order","value":{"flags":{"ids":[]}}},"DiagnosticFlagsPutBadRequestUnknownWorkOrder":{"value":{"errors":[{"code":"diagnostic.workorders.code.unknown","message":"The work order [WO-2025-004821] is unknown. It don't exisits or it is outside oauth2 hierarchy."}],"errorReference":"123e4567-e89b-12d3-a456-426614174000"}},"DiagnosticFlagsPutBadRequestUnknownFlagCode":{"value":{"errors":[{"code":"diagnostic.workorders.flags.code.unknown","message":"The flag code [16] is unknown."}],"errorReference":"223e4567-e89b-12d3-a456-426614174001"}},"DiagnosticFlagsPutBadRequestMissingWoCodeInPath":{"value":{"errors":[{"code":"diagnostic.workorders.code.mandatory","message":"Missing code in path."}],"errorReference":"323e4567-e89b-12d3-a456-426614174002"}},"DiagnosticFlagsPutBadRequestMissingFlags":{"value":{"errors":[{"code":"diagnostic.workorders.flags.mandatory","message":"Property flags is required."}],"errorReference":"423e4567-e89b-12d3-a456-426614174003"}},"DiagnosticFlagsPutBadRequestFlagsFormat":{"value":{"errors":[{"code":"diagnostic.workorders.flags.format","message":"Each flag must be an integer that is a power of 2."}],"errorReference":"523e4567-e89b-12d3-a456-426614174004"}},"DiagnosticFlagsPutBadRequestInvalidJSON":{"value":{"errors":[{"code":"diagnostic.workorders.invalid.json","message":"Invalid Json format."}],"errorReference":"623e4567-e89b-12d3-a456-426614174005"}},"SlotSearchMinimal":{"summary":"Minimal — appointment date, work order type and postal address only","value":{"endCustomer":{"need":{"workOrder":{"code":"MAINTENANCE"},"dispatchLocation":{"address":"28 rue de Mogador, 75009 Paris"}},"availabilities":{"appointmentDate":"2026-11-03T08:00:00Z"}}}},"SlotSearchWithRequirements":{"summary":"Over a set of time ranges, with a geographic location, a duration/skill override and an office filter","value":{"endCustomer":{"need":{"workOrder":{"code":"FIBER_INSTALL","overrides":{"duration":"PT1H30M","skillsRequirement":{"additionalSkills":[{"code":"FIBER","constraint":"MANDATORY"}]}}},"dispatchLocation":{"coordinates":{"latitude":48.8755905,"longitude":2.3287881}}},"availabilities":{"ranges":[{"start":"2026-11-03T07:00:00Z","end":"2026-11-03T17:00:00Z"},{"start":"2026-11-04T07:00:00Z","end":"2026-11-04T12:00:00Z"}]}},"schedulerRequirements":{"fieldResourceWorkingFor":{"offices":[{"code":"PARIS_NORD"}],"childrenOfficesIncluded":true},"workingHours":{"ignoreFieldResourceBreak":false}}}},"SlotSearchWithConfiguration":{"summary":"Over a multi-day range, limiting result size and using a sampling policy","value":{"endCustomer":{"need":{"workOrder":{"code":"MAINTENANCE"},"dispatchLocation":{"address":"1 Place de la Comedie, 34000 Montpellier"}},"availabilities":{"ranges":[{"start":"2026-11-10T08:00:00Z","end":"2026-11-14T18:00:00Z"}]}},"slotSearchConfiguration":{"searchSize":{"maximumSlotNumber":100},"servedSlots":{"perTimeInterval":"BEST"},"mustExplainResults":false}}},"SlotSearchIgnoreCapacityModel":{"summary":"Ignore the field resources' capacity model when computing the slots","value":{"endCustomer":{"need":{"workOrder":{"code":"MAINTENANCE"},"dispatchLocation":{"address":"28 rue de Mogador, 75009 Paris"}},"availabilities":{"ranges":[{"start":"2026-11-03T07:00:00Z","end":"2026-11-03T17:00:00Z"}]}},"schedulerRequirements":{"workingHours":{"ignoreFieldResourceCapacityModel":true}}}},"SchedulingScheduleTimeRangeRequest":{"summary":"Time range, report filler, main resource, technician and equipment crew","value":{"schedulerRequirements":{"notificationSent":true},"timeWindow":{"scheduleMode":"TIME_RANGE","startDate":"2026-04-10T10:00:00+02:00","endDate":"2026-04-10T12:00:00+02:00"},"fieldResources":{"reportFillerCode":"tech-55","mainResourceCode":"tech-55","technicianCrewCodes":["tech-88","tech-98"],"equipmentCrewCodes":["truck-04"]}}},"SchedulingScheduleDayRangeRequest":{"summary":"Several whole days, report filler, main resource and crew","value":{"schedulerRequirements":{"notificationSent":false},"timeWindow":{"scheduleMode":"DAY_RANGE","timezone":"Europe/Paris","startDay":"2026-04-10","endDay":"2026-04-11"},"fieldResources":{"reportFillerCode":"tech-55","mainResourceCode":"tech-55","technicianCrewCodes":["tech-88","tech-98"],"equipmentCrewCodes":["truck-04"]}}},"SchedulingScheduleSingleDayRequest":{"summary":"One day, without hours","value":{"timeWindow":{"scheduleMode":"DAY_RANGE","timezone":"Europe/Paris","startDay":"2026-04-10","endDay":"2026-04-10"},"fieldResources":{"reportFillerCode":"tech-55"}}},"SchedulingScheduleMandatoryFieldsRequest":{"summary":"Minimal payload for a qualified work order","value":{"timeWindow":{"scheduleMode":"TIME_RANGE","startDate":"2026-04-10T08:00:00Z","endDate":"2026-04-10T10:00:00Z"},"fieldResources":{"reportFillerCode":"tech-55"}}},"SchedulingScheduleSkipControlsRequest":{"summary":"Reschedule an in-progress work order over another work order and outside the appointment","value":{"schedulerRequirements":{"skipControls":["inProgressStatus","workOrderOverlap","appointmentRespect"],"notificationSent":true},"timeWindow":{"scheduleMode":"TIME_RANGE","startDate":"2026-04-10T14:00:00+02:00","endDate":"2026-04-10T16:00:00+02:00"},"fieldResources":{"reportFillerCode":"tech-55","mainResourceCode":"tech-55"}}},"SchedulingScheduleFieldResourcesOnlyRequest":{"summary":"Change the main resource only, keep the time window","value":{"fieldResources":{"mainResourceCode":"tech-42"}}},"SchedulingScheduleEmptyRequest":{"summary":"Leave the scheduling untouched","value":{}},"SchedulingSchedulePutBadRequestUnknownWorkOrder":{"value":{"errors":[{"code":"scheduling.workorders.code.unknown","message":"The work order [WO-2026-00123] is unknown. It doesn't exist or it is outside the authorized hierarchy"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestUnknownTechnician":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldResources.technicianCrew.unknown","message":"The technician [tech-88] is unknown or outside the authorized hierarchy"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestUnknownEquipment":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldResources.equipmentCrew.unknown","message":"The equipment [truck-04] is unknown or outside the authorized hierarchy"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestUnknownMainResource":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldResources.mainResource.unknown","message":"The field resource [tech-42] is neither a known technician nor a known equipment, or is outside the authorized hierarchy"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestMissingWoCodeInPath":{"value":{"errors":[{"code":"scheduling.workorders.code.mandatory","message":"Missing code in path."}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestInvalidUuid":{"value":{"errors":[{"code":"scheduling.workorder.uuid.invalid","message":"Invalid work order UUID format"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestInvalidJSON":{"value":{"errors":[{"code":"scheduling.workorders.schedule.invalid.json","message":"Invalid Json format."}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestMissingTimeWindow":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timewindow.mandatory","message":"A time window is required to schedule a qualified work order"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestMissingReportFiller":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldResources.reportFiller.mandatory","message":"A report filler is required to schedule a qualified work order"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestEquipmentWithoutTechnician":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldResources.technicianCrew.mandatory","message":"Equipment cannot be scheduled without a technician"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestScheduleModeInvalid":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timewindow.scheduleMode.mandatory","message":"Property timeWindow.scheduleMode must be TIME_RANGE or DAY_RANGE."}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestUnknownSkipControl":{"value":{"errors":[{"code":"scheduling.workorders.schedule.schedulerRequirements.skipControls.unknown","message":"Unknown skipControls value [ignoreSkills]."}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestDateFormat":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timewindow.dates.format","message":"Date [10/04/2026] don't respect expected format."}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestDateOrder":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timewindow.dates.order","message":"The end of the time window must be strictly after its start"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestNegativeDuration":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timewindow.duration.negative","message":"The computed duration is negative"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestDurationExceeded":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timewindow.duration.exceeded","message":"The requested slot exceeds the maximum allowed scheduling duration"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestStartExceeded":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timewindow.start.exceeded","message":"The requested start date is beyond the maximum allowed horizon"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestWorkingHoursViolation":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timewindow.workinghours.violation","message":"The requested time window falls outside the technician's working hours"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestTourExceedsWorkingDay":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timewindow.workinghours.violation","message":"The resulting tour exceeds the technician's working day"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestSubscriptionInvalid":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldresources.subscription.invalid","message":"An assigned field resource subscription is missing or terminated"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestOfficeMismatch":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldresources.office.mismatch","message":"An assigned field resource does not belong to the expected office hierarchy"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestSkillMissing":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldresources.skill.missing","message":"The assigned crew does not hold a skill required by the work order"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestCharacteristicsMissing":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldresources.characteristics.missing","message":"The assigned equipment does not hold a characteristic required by the work order"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestStatusInvalid":{"value":{"errors":[{"code":"scheduling.workorders.schedule.status.invalid","message":"The work order [WO-2026-00123] cannot be scheduled in its current status"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestRejected":{"value":{"errors":[{"code":"scheduling.workorders.schedule.rejected","message":"Message raised by the scheduling engine for a rule not listed above."}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestTechnicianWorkOrderOverlap":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldresources.techniciancrew.workorderoverlap","message":"Another work order is already scheduled on this time window"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestEquipmentWorkOrderOverlap":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldresources.equipmentcrew.workOrderoverlap","message":"A machine is already scheduled on another work order for this time window"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestTechnicianUnavailable":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldresources.techniciancrew.timeoverlap","message":"A technician is unavailable for this time window"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestEquipmentUnavailable":{"value":{"errors":[{"code":"scheduling.workorders.schedule.fieldresources.equipmentcrew.timeoverlap","message":"A machine is unavailable for this time window"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestSlasViolation":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timeWindow.slas.violation","message":"The requested time window falls outside the work order's SLA hours"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"SchedulingSchedulePutBadRequestAppointmentViolation":{"value":{"errors":[{"code":"scheduling.workorders.schedule.timeWindow.appointment.violation","message":"The requested time window falls outside the work order's appointment hours"}],"errorReference":"723e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkLastRequest":{"summary":"Link the work order after every job of the project","value":{"type":"workOrder","code":"WO-2026-00123","insertion":{"insertionMode":"last"}}},"ProjectManagementProjectLinkAtIndexRequest":{"summary":"Link the work order at the 4th position (zero-based index 3)","value":{"type":"workOrder","code":"WO-2026-00123","insertion":{"insertionMode":"index","position":3}}},"ProjectManagementProjectLinkAfterTaskRequest":{"summary":"Link the work order after a task of the project","value":{"type":"workOrder","code":"WO-2026-00123","insertion":{"insertionMode":"after","relativePosition":"12333","jobType":"task"}}},"ProjectManagementProjectLinkBeforePhaseRequest":{"summary":"Link the work order before a phase of the project","value":{"type":"workOrder","code":"WO-2026-00123","insertion":{"insertionMode":"before","relativePosition":"PHASE-1"}}},"ProjectManagementProjectLinkWithDependenciesRequest":{"summary":"Link the work order first, blocking a task and blocked by another work order","value":{"type":"workOrder","code":"WO-2026-00123","insertion":{"insertionMode":"first","block":[{"jobType":"task","code":"0003"}],"isBlockedBy":[{"jobType":"workOrder","code":"WO-2026-00124"}]}}},"ProjectManagementProjectLinkMandatoryFieldsRequest":{"summary":"Link the work order last, without dependency","value":{"type":"workOrder","code":"WO-2026-00123"}},"ProjectManagementServiceOrderLinkLastRequest":{"summary":"Link the work order after every work order of the service order","value":{"code":"WO-2026-00123"}},"ProjectManagementServiceOrderLinkFirstRequest":{"summary":"Link the work order before every work order of the service order","value":{"code":"WO-2026-00123","insertion":{"insertionMode":"first"}}},"ProjectManagementServiceOrderLinkAtIndexRequest":{"summary":"Link the work order at the 3rd position (zero-based index 2)","value":{"code":"WO-2026-00123","insertion":{"insertionMode":"index","position":2}}},"ProjectManagementServiceOrderLinkAfterRequest":{"summary":"Link the work order after another work order of the service order","value":{"code":"WO-2026-00123","insertion":{"insertionMode":"after","relativePosition":"WO-2026-00120"}}},"ProjectManagementProjectLinkBadRequestUnknownProject":{"value":{"errors":[{"code":"projectmanagement.project.code.unknown","message":"The project PRJ-2026-0007 is unknown. It doesn't exist or it is outside oauth2 hierarchy."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestUnknownWorkOrder":{"value":{"errors":[{"code":"projectmanagement.project.job.code.unknown","message":"The work order WO-2026-00123 is unknown. It doesn't exist or it is outside oauth2 hierarchy."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestAmbiguousWorkOrder":{"value":{"errors":[{"code":"projectmanagement.workorder.code.ambiguous","message":"Several work orders carry the code WO-2026-00123."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestUnknownRelativePosition":{"value":{"errors":[{"code":"projectmanagement.insertion.relativePosition.unknown","message":"The job 12333 is not one of the jobs the project holds."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestSelfRelativePosition":{"value":{"errors":[{"code":"projectmanagement.insertion.relativePosition.unknown","message":"The work order WO-2026-00123 cannot be positioned relative to itself."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestUnknownBlock":{"value":{"errors":[{"code":"projectmanagement.project.block.code.unknown","message":"A job named in insertion.block is not one of the jobs the project holds."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestUnknownIsBlockedBy":{"value":{"errors":[{"code":"projectmanagement.project.isBlockedBy.code.unknown","message":"A job named in insertion.isBlockedBy is not one of the jobs the project holds."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestMissingProjectCode":{"value":{"errors":[{"code":"projectmanagement.project.code.mandatory","message":"Missing project code in path."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestMissingType":{"value":{"errors":[{"code":"projectmanagement.project.job.type.mandatory","message":"Property type is required."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestUnknownType":{"value":{"errors":[{"code":"projectmanagement.project.job.type.unknown","message":"The type 'task' is unknown. Only 'workorder' is supported."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestMissingCode":{"value":{"errors":[{"code":"projectmanagement.project.job.code.mandatory","message":"Property code is required."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestUnknownInsertionMode":{"value":{"errors":[{"code":"projectmanagement.insertion.insertionMode.unknown","message":"The insertion mode 'middle' is unknown."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestMissingPosition":{"value":{"errors":[{"code":"projectmanagement.insertion.position.mandatory","message":"Property insertion.position is required when insertion.insertionMode is 'index'."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestNegativePosition":{"value":{"errors":[{"code":"projectmanagement.insertion.position.invalid","message":"Property insertion.position cannot be negative."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestMissingRelativePosition":{"value":{"errors":[{"code":"projectmanagement.insertion.relativePosition.mandatory","message":"Property insertion.relativePosition is required when insertion.insertionMode is 'after'."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestUnknownJobType":{"value":{"errors":[{"code":"projectmanagement.insertion.jobType.unknown","message":"The job type 'milestone' is unknown."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestMissingBlockCode":{"value":{"errors":[{"code":"projectmanagement.project.block.code.mandatory","message":"Property code is required on every insertion.block entry."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestMissingBlockJobType":{"value":{"errors":[{"code":"projectmanagement.project.block.jobType.mandatory","message":"Property jobType is required on every insertion.block entry."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestUnknownBlockJobType":{"value":{"errors":[{"code":"projectmanagement.project.block.jobType.unknown","message":"The job type 'phase' is unknown. Use 'task' or 'workOrder'."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestMissingIsBlockedByCode":{"value":{"errors":[{"code":"projectmanagement.project.isBlockedBy.code.mandatory","message":"Property code is required on every insertion.isBlockedBy entry."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestMissingIsBlockedByJobType":{"value":{"errors":[{"code":"projectmanagement.project.isBlockedBy.jobType.mandatory","message":"Property jobType is required on every insertion.isBlockedBy entry."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestUnknownIsBlockedByJobType":{"value":{"errors":[{"code":"projectmanagement.project.isBlockedBy.jobType.unknown","message":"The job type 'phase' is unknown. Use 'task' or 'workOrder'."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestInvalidJSON":{"value":{"errors":[{"code":"projectmanagement.invalid.json","message":"Invalid Json format."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestUnknownField":{"value":{"errors":[{"code":"projectmanagement.field.unknown","message":"The field 'priority' is unknown. Please correct your JSON request."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestOfficeConflict":{"value":{"errors":[{"code":"projectmanagement.project.office.conflict","message":"The project must be in equal or higher hierarchy of work order."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestStatusConflict":{"value":{"errors":[{"code":"projectmanagement.project.status.conflict","message":"The project is completed, and takes no more work on."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestCurrentProjectStatusConflict":{"value":{"errors":[{"code":"projectmanagement.workorder.currentproject.status.conflict","message":"The project the work order currently sits in is completed, and will not let it go."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestDependencyOfficeConflict":{"value":{"errors":[{"code":"projectmanagement.project.block.office.conflict","message":"Dependencies can only be declared on a project filed on the office of the calling application or one of its descendants."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestDependencyCycle":{"value":{"errors":[{"code":"projectmanagement.project.block.dependency.cycle","message":"The requested dependency would create a cycle between the project's jobs."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestDependencyOverlap":{"value":{"errors":[{"code":"projectmanagement.project.block.dependency.overlap","message":"The requested dependency is not allowed: the blocked job would have to start before the blocking one can."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementProjectLinkBadRequestRuleViolated":{"value":{"errors":[{"code":"projectmanagement.rule.violated","message":"The operation was refused by a business rule."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementRouteServiceOrderLinkBadRequestUnknownRouteServiceOrder":{"value":{"errors":[{"code":"projectmanagement.routeserviceorder.code.unknown","message":"The service order SO-2026-0042 is unknown. It doesn't exist or it is outside oauth2 hierarchy."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementRouteServiceOrderLinkBadRequestUnknownWorkOrder":{"value":{"errors":[{"code":"projectmanagement.routeserviceorder.workorder.code.unknown","message":"The work order WO-2026-00123 is unknown. It doesn't exist or it is outside oauth2 hierarchy."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestUnknownRelativePosition":{"value":{"errors":[{"code":"projectmanagement.insertion.relativePosition.unknown","message":"The work order WO-2026-00120 is not one of the work orders the service order carries."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestSelfRelativePosition":{"value":{"errors":[{"code":"projectmanagement.insertion.relativePosition.unknown","message":"The work order WO-2026-00123 cannot be positioned relative to itself."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestMissingServiceOrderCode":{"value":{"errors":[{"code":"projectmanagement.serviceorder.code.mandatory","message":"Missing service order code in path."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementRouteServiceOrderLinkBadRequestMissingCode":{"value":{"errors":[{"code":"projectmanagement.routeserviceorder.workorder.code.mandatory","message":"Property code is required."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestUnknownInsertionMode":{"value":{"errors":[{"code":"projectmanagement.insertion.insertionMode.unknown","message":"The insertion mode 'middle' is unknown."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestMissingPosition":{"value":{"errors":[{"code":"projectmanagement.insertion.position.mandatory","message":"Property insertion.position is required when insertion.insertionMode is 'index'."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestMissingRelativePosition":{"value":{"errors":[{"code":"projectmanagement.insertion.relativePosition.mandatory","message":"Property insertion.relativePosition is required when insertion.insertionMode is 'after'."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestInvalidJSON":{"value":{"errors":[{"code":"projectmanagement.invalid.json","message":"Invalid Json format."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestUnknownField":{"value":{"errors":[{"code":"projectmanagement.field.unknown","message":"The field 'type' is unknown. Please correct your JSON request."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementRouteServiceOrderLinkBadRequestOfficeConflict":{"value":{"errors":[{"code":"projectmanagement.routeserviceorder.office.conflict","message":"The parent must be in equal or higher hierarchy of work order."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementRouteServiceOrderLinkBadRequestStatusConflict":{"value":{"errors":[{"code":"projectmanagement.routeserviceorder.status.conflict","message":"The service order is completed or higher, and takes no more work on."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementRouteServiceOrderLinkBadRequestFull":{"value":{"errors":[{"code":"projectmanagement.routeserviceorder.full","message":"The service order already carries the maximum number of work orders."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementRouteServiceOrderLinkBadRequestWorkOrderStatusConflict":{"value":{"errors":[{"code":"projectmanagement.routeserviceorder.workorder.status.conflict","message":"The work order status does not allow it to join this service order."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementRouteServiceOrderLinkBadRequestTeamConflict":{"value":{"errors":[{"code":"projectmanagement.routeserviceorder.team.conflict","message":"Work order team don't match the service order one."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestCurrentServiceOrderConflict":{"value":{"errors":[{"code":"projectmanagement.workorder.currentserviceorder.conflict","message":"The service order the work order currently sits in is completed or higher, and will not let it go."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestCurrentServiceOrderStatusConflict":{"value":{"errors":[{"code":"projectmanagement.workorder.currentserviceorder.status.conflict","message":"The work order is completed or higher, and the route service order it currently sits in will not let it go."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestCurrentServiceOrderNotLinked":{"value":{"errors":[{"code":"projectmanagement.workorder.currentserviceorder.notlinked","message":"The work order is not carried by the service order it is being taken out of."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementServiceOrderLinkBadRequestRuleViolated":{"value":{"errors":[{"code":"projectmanagement.rule.violated","message":"The operation was refused by a business rule."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementStandardServiceOrderLinkBadRequestUnknownStandardServiceOrder":{"value":{"errors":[{"code":"projectmanagement.standardserviceorder.code.unknown","message":"The service order SO-2026-0043 is unknown. It doesn't exist or it is outside oauth2 hierarchy."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementStandardServiceOrderLinkBadRequestUnknownWorkOrder":{"value":{"errors":[{"code":"projectmanagement.standardserviceorder.workorder.code.unknown","message":"The work order WO-2026-00123 is unknown. It doesn't exist or it is outside oauth2 hierarchy."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementStandardServiceOrderLinkBadRequestMissingCode":{"value":{"errors":[{"code":"projectmanagement.standardserviceorder.workorder.code.mandatory","message":"Property code is required."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementStandardServiceOrderLinkBadRequestOfficeConflict":{"value":{"errors":[{"code":"projectmanagement.standardserviceorder.office.conflict","message":"The parent must be in equal or higher hierarchy of work order."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementStandardServiceOrderLinkBadRequestStatusConflict":{"value":{"errors":[{"code":"projectmanagement.standardserviceorder.status.conflict","message":"The service order is completed or higher, and takes no more work on."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}},"ProjectManagementStandardServiceOrderLinkBadRequestFull":{"value":{"errors":[{"code":"projectmanagement.standardserviceorder.full","message":"The service order already carries the maximum number of work orders."}],"errorReference":"823e4567-e89b-12d3-a456-426614174000"}}},"responses":{"200_fieldTracking_positions":{"description":"OK - List of technician positions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PositionListResponse"},"examples":{"Positions with more pages":{"value":{"continuationToken":"c2FqZGhmYmtrMzQ1YiBrZiA5MyBrYmdrcTg3MjMgazg5bm4gICAwNCAgbmVpcnQ4NzkzbiBnb3A4NA==","data":[{"latitude":48.8566,"longitude":2.3522,"timestamp":"2025-10-25T08:05:00Z"},{"latitude":48.8571,"longitude":2.3535,"timestamp":"2025-10-25T08:06:42Z"},{"latitude":48.8583,"longitude":2.3549,"timestamp":"2025-10-25T08:08:15Z"},{"latitude":48.8597,"longitude":2.3561,"timestamp":"2025-10-25T08:10:30Z"},{"latitude":48.8597,"longitude":2.3562,"timestamp":"2025-10-25T08:12:05Z"}]}},"Last page":{"value":{"continuationToken":null,"data":[{"latitude":48.8602,"longitude":2.357,"timestamp":"2025-10-25T08:14:00Z"},{"latitude":48.8605,"longitude":2.3575,"timestamp":"2025-10-25T08:16:20Z"},{"latitude":48.8608,"longitude":2.358,"timestamp":"2025-10-25T08:18:45Z"},{"latitude":48.861,"longitude":2.3583,"timestamp":"2025-10-25T08:20:10Z"},{"latitude":48.8612,"longitude":2.3585,"timestamp":"2025-10-25T08:22:30Z"}]}},"Empty result":{"value":{"continuationToken":null,"data":[]}}}}}},"200_fieldTracking_activities":{"description":"OK - List of work order activities.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityListResponse"}}}},"400_fieldTracking_bad_request":{"description":"Bad Request - continuation token error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Invalid continuation token":{"value":{"errors":[{"code":"fieldTracking.continuationToken.invalid","message":"The provided continuation token does not respect the expected format."}],"errorReference":"59ddc09a23159395367307ab95b1c41a"}}}}}},"404_fieldTracking_technician_not_found":{"description":"Not Found - Technician not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"404 Work order not found":{"value":{"errors":[{"code":"fieldTracking.technician.notfound","message":"Technician with code 'UNKNOWN_TECH' not found."}],"errorReference":"a745dc4c5a2b473aaf8ce94c9260aa8f"}}}}}},"404_fieldTracking_workOrder_not_found":{"description":"Not Found - Work order not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"404 Work order not found":{"value":{"errors":[{"code":"fieldTracking.workOrder.notfound","message":"Work order not found"}],"errorReference":"a745dc4c5a2b473aaf8ce94c9260aa8f"}}}}}},"200_staff_characteristics":{"description":"A list of characteristics.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacteristicListResponse"},"examples":{"A list which has more pages to be loaded":{"$ref":"#/components/examples/CharacteristicListWithMorePagesResponse"},"The last page of a list":{"$ref":"#/components/examples/CharacteristicListLastPageResponse"},"Empty list":{"$ref":"#/components/examples/ListEmptyResponse"}}}}},"200_staff_skills":{"description":"A list of skills.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillListResponse"},"examples":{"A list which has more pages to be loaded":{"$ref":"#/components/examples/SkillListWithMorePagesResponse"},"The last page of a list":{"$ref":"#/components/examples/SkillListLastPageResponse"},"Empty list":{"$ref":"#/components/examples/ListEmptyResponse"}}}}},"201_staff_skill_created":{"content":{"application/json":{"examples":{"Skill created":{"value":""}}}},"description":"Skill created."},"204_staff_skill_updated":{"content":{"application/json":{"examples":{"Skill updated":{"value":""}}}},"description":"Skill updated."},"400_staff_bad_request":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Invalid continuation token":{"value":{"errors":[{"code":"referentials.continuationToken.invalid","message":"The provided continuation token does not respect the expected format."}],"errorReference":"59ddc09a23159395367307ab95b1c41a"}}}}},"description":"Bad Request - invalid continuation token."},"400_staff_skill_bad_request":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing code in path":{"value":{"errors":[{"code":"staff.skill.code.mandatory","message":"Missing code in path."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Code exceeding limit":{"value":{"errors":[{"code":"staff.skill.code.length","message":"The code length must not exceed 10 characters."}],"errorReference":"a569b11d0ae8145aa9b106b049091b371"}},"Name exceeding limit":{"value":{"errors":[{"code":"staff.skill.name.length","message":"The name length must not exceed 30 characters."}],"errorReference":"k899b11d0ae8145aa9b106b049091b371"}},"Name Missing":{"value":{"errors":[{"code":"staff.skill.name.mandatory","message":"Property name is required."}],"errorReference":"k899b11d0ae8145aa9b106b049091b371"}}}}},"description":"Bad Request - validation errors."},"200_referentials_customer":{"description":"Customer found successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"},"examples":{"Customer with mandatory fields only defined":{"$ref":"#/components/examples/CustomerWithMandatoryFieldsOnly"},"Customer without custom fields defined":{"$ref":"#/components/examples/CustomerWithoutCustomFieldsDefined"},"Customer with all fields defined":{"$ref":"#/components/examples/CustomerWithAllFieldsDefined"},"Sub Customer with mandatory fields only defined":{"$ref":"#/components/examples/SubCustomerWithMandatoryFieldsOnly"},"Sub Customer with all fields defined":{"$ref":"#/components/examples/SubCustomerWithAllFieldsDefined"},"Customer with custom fields":{"$ref":"#/components/examples/CustomerWithCustomFields"}}}}},"201_referentials_customer_created":{"content":{"application/json":{"examples":{"Customer created":{"value":""}}}},"description":"Customer created."},"204_referentials_customer_updated":{"content":{"application/json":{"examples":{"Customer updated":{"value":""}}}},"description":"Customer updated."},"400_referentials_customer_get_bad_request":{"description":"Bad Request - validation errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing code in path":{"$ref":"#/components/examples/CustomerGetBadRequestMissingCode"}}}}},"400_referentials_customer_put_bad_request":{"description":"Bad Request - Validation errors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing addressDetails property":{"$ref":"#/components/examples/CustomerPutBadRequestMissingAddressDetails"},"Missing city property":{"$ref":"#/components/examples/CustomerPutBadRequestMissingCity"},"Missing code in path":{"$ref":"#/components/examples/CustomerPutBadRequestMissingCode"},"Missing name property":{"$ref":"#/components/examples/CustomerPutBadRequestMissingName"},"Missing mandatory custom field":{"$ref":"#/components/examples/CustomerPutBadRequestMissingCustomField"},"Invalid JSON":{"$ref":"#/components/examples/CustomerPutBadRequestInvalidJSON"},"Duplicated field":{"$ref":"#/components/examples/CustomerPutBadRequestDuplicatedField"},"Unknown field":{"$ref":"#/components/examples/CustomerPutBadRequestUnknownField"},"Office unknown":{"$ref":"#/components/examples/CustomerPutBadRequestOfficeUnknown"},"Parent customer unknown":{"$ref":"#/components/examples/CustomerPutBadRequestParentCustomerUnknown"},"Parent customer identical":{"$ref":"#/components/examples/CustomerPutBadRequestParentCustomerIdentical"},"Parent customer child of the customer":{"$ref":"#/components/examples/CustomerPutBadRequestParentCustomerChild"},"Too many hierarchy levels":{"$ref":"#/components/examples/CustomerPutBadRequestHierarchyLevels"}}}}},"404_referentials_customer_not_found":{"description":"Customer not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Customer not found":{"$ref":"#/components/examples/CustomerNotFoundResponse"}}}}},"200_referentials_site":{"description":"Site found successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Site"},"examples":{"A site with mandatory fields only defined":{"$ref":"#/components/examples/SiteWithMandatoryFieldsOnly"},"A site with all fields defined":{"$ref":"#/components/examples/SiteWithAllFieldsDefined"},"A Sub Site with mandatory fields only defined":{"$ref":"#/components/examples/SubSiteWithMandatoryFieldsOnly"},"A Sub Site with all fields defined":{"$ref":"#/components/examples/SubSiteWithAllFieldsDefined"},"A site with custom fields":{"$ref":"#/components/examples/SiteWithCustomFields"}}}}},"201_referentials_site_created":{"content":{"application/json":{"examples":{"Site created":{"value":""}}}},"description":"Site created."},"204_referentials_site_updated":{"content":{"application/json":{"examples":{"Site updated":{"value":""}}}},"description":"Site updated."},"400_referentials_site_get_bad_request":{"description":"Bad Request - validation errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing site code in request":{"$ref":"#/components/examples/SiteGetBadRequestMissingCode"}}}}},"400_referentials_site_put_bad_request":{"description":"Bad Request - validation errors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing addressDetails property":{"$ref":"#/components/examples/SitePutBadRequestMissingAddressDetails"},"Missing city property":{"$ref":"#/components/examples/SitePutBadRequestMissingCity"},"Missing code in path":{"$ref":"#/components/examples/SitePutBadRequestMissingCode"},"Missing name property":{"$ref":"#/components/examples/SitePutBadRequestMissingName"},"Missing customer property":{"$ref":"#/components/examples/SitePutBadRequestMissingCustomer"},"Missing mandatory custom field":{"$ref":"#/components/examples/SitePutBadRequestMissingCustomField"},"Invalid JSON":{"$ref":"#/components/examples/SitePutBadRequestInvalidJSON"},"Duplicated field":{"$ref":"#/components/examples/SitePutBadRequestDuplicatedField"},"Unknown field":{"$ref":"#/components/examples/SitePutBadRequestUnknownField"},"Office unknown":{"$ref":"#/components/examples/SitePutBadRequestOfficeUnknown"},"Customer unknown":{"$ref":"#/components/examples/SitePutBadRequestCustomerUnknown"},"Parent site unknown":{"$ref":"#/components/examples/SitePutBadRequestParentSiteUnknown"},"Parent site identical":{"$ref":"#/components/examples/SitePutBadRequestParentSiteIdentical"},"Parent site child of the site":{"$ref":"#/components/examples/SitePutBadRequestParentSiteChild"},"Too many hierarchy levels":{"$ref":"#/components/examples/SitePutBadRequestHierarchyLevels"}}}}},"404_referentials_site_not_found":{"description":"Customer or Site not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Site not found":{"$ref":"#/components/examples/SiteNotFoundResponse"},"Customer Not Found":{"$ref":"#/components/examples/CustomerNotFoundInSiteResponse"}}}}},"200_referentials_asset":{"description":"Asset found successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"},"examples":{"Asset with mandatory fields only defined":{"$ref":"#/components/examples/AssetWithMandatoryFieldsOnly"},"Asset without custom fields defined":{"$ref":"#/components/examples/AssetWithoutCustomFieldsDefined"},"Asset with all fields defined":{"$ref":"#/components/examples/AssetWithAllFieldsDefined"},"Sub Asset with mandatory fields only defined":{"$ref":"#/components/examples/SubAssetWithMandatoryFieldsOnly"},"Sub Asset with all fields defined":{"$ref":"#/components/examples/SubAssetWithAllFieldsDefined"}}}}},"400_referentials_asset_get_bad_request":{"description":"Bad Request - validation errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing site code in request":{"$ref":"#/components/examples/AssetGetBadRequestMissingCode"}}}}},"404_referentials_asset_not_found":{"description":"Asset not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Asset not found":{"$ref":"#/components/examples/AssetNotFoundResponse"}}}}},"200_businessOrganization_items":{"description":"A list of items.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemListResponse"},"examples":{"A list which has more pages to be loaded":{"$ref":"#/components/examples/ItemListWithMorePagesResponse"},"The last page of a list":{"$ref":"#/components/examples/ItemListLastPageResponse"},"Empty list":{"$ref":"#/components/examples/ListEmptyResponse"}}}}},"400_businessOrganization_items_bad_request":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Invalid continuation token":{"value":{"errors":[{"code":"referentials.continuationToken.invalid","message":"The provided continuation token does not respect the expected format."}],"errorReference":"59ddc09a23159395367307ab95b1c41a"}}}}},"description":"Bad Request - invalid continuation token."},"200_businessOrganization_item":{"description":"Item found successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Item"},"examples":{"Item with custom fields":{"$ref":"#/components/examples/ItemWithCustomFields"}}}}},"201_businessOrganization_item_created":{"content":{"application/json":{"examples":{"Item created":{"value":""}}}},"description":"Item created."},"204_businessOrganization_item_updated":{"content":{"application/json":{"examples":{"Item updated":{"value":""}}}},"description":"Item updated."},"400_businessOrganization_item_get_bad_request":{"description":"Bad Request - validation errors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing code in path":{"$ref":"#/components/examples/ItemGetBadRequestMissingCode"}}}}},"400_businessOrganization_item_put_bad_request":{"description":"Bad Request - validation errors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing code in path":{"$ref":"#/components/examples/ItemPutBadRequestMissingCode"},"Missing name property":{"$ref":"#/components/examples/ItemPutBadRequestMissingName"},"Missing itemCategoryCode property":{"$ref":"#/components/examples/ItemPutBadRequestMissingItemCategoryCode"},"Missing dimensions property":{"$ref":"#/components/examples/ItemPutBadRequestMissingDimensions"},"Missing attributes property":{"$ref":"#/components/examples/ItemPutBadRequestMissingAttributes"},"Missing attributes.isGeneric property":{"$ref":"#/components/examples/ItemPutBadRequestMissingIsGeneric"},"Missing attributes.isParentItem property":{"$ref":"#/components/examples/ItemPutBadRequestMissingIsParentItem"},"Missing attributes.hasFixedQuantity property":{"$ref":"#/components/examples/ItemPutBadRequestMissingHasFixedQuantity"},"Missing attributes.availableOnMobile property":{"$ref":"#/components/examples/ItemPutBadRequestMissingAvailableOnMobile"},"Missing billingParameters property":{"$ref":"#/components/examples/ItemPutBadRequestMissingBillingParameters"},"Missing invoiceMode property":{"$ref":"#/components/examples/ItemPutBadRequestMissingInvoiceMode"},"Name too long":{"$ref":"#/components/examples/ItemPutBadRequestNameTooLong"},"Reference too long":{"$ref":"#/components/examples/ItemPutBadRequestReferenceTooLong"},"Description too long":{"$ref":"#/components/examples/ItemPutBadRequestDescriptionTooLong"},"BarCode too long":{"$ref":"#/components/examples/ItemPutBadRequestBarCodeTooLong"},"Manufacturer too long":{"$ref":"#/components/examples/ItemPutBadRequestManufacturerTooLong"},"Serial number format too long":{"$ref":"#/components/examples/ItemPutBadRequestSerialNumberFormatTooLong"},"Invalid isGeneric value":{"$ref":"#/components/examples/ItemPutBadRequestInvalidIsGeneric"},"Invalid isParentItem value":{"$ref":"#/components/examples/ItemPutBadRequestInvalidIsParentItem"},"Invalid hasFixedQuantity value":{"$ref":"#/components/examples/ItemPutBadRequestInvalidHasFixedQuantity"},"Invalid availableOnMobile value":{"$ref":"#/components/examples/ItemPutBadRequestInvalidAvailableOnMobile"},"Invalid trackedInStock value":{"$ref":"#/components/examples/ItemPutBadRequestInvalidTrackedInStock"},"Invalid displayPriceOnMobile value":{"$ref":"#/components/examples/ItemPutBadRequestInvalidDisplayPriceOnMobile"},"Invalid dimensions value":{"$ref":"#/components/examples/ItemPutBadRequestInvalidDimensions"},"Invalid invoiceMode value":{"$ref":"#/components/examples/ItemPutBadRequestInvalidInvoiceMode"},"Invalid displayPriceOnWeb value":{"$ref":"#/components/examples/ItemPutBadRequestInvalidDisplayPriceOnWeb"},"Invalid vatRate value":{"$ref":"#/components/examples/ItemPutBadRequestInvalidVatRate"},"Item category unknown":{"$ref":"#/components/examples/ItemPutBadRequestItemCategoryUnknown"},"VatRates not null when unitPrice is zero or null":{"$ref":"#/components/examples/ItemPutBadRequestVatRatesNotNullWhenNoPrice"},"DisplayPriceOnMobile not null when unitPrice is zero or null":{"$ref":"#/components/examples/ItemPutBadRequestDisplayPriceOnMobileNotNullWhenNoPrice"},"DisplayPriceOnWeb not null when unitPrice is zero or null":{"$ref":"#/components/examples/ItemPutBadRequestDisplayPriceOnWebNotNullWhenNoPrice"},"Missing displayPriceOnMobile when unitPrice is greater than zero":{"$ref":"#/components/examples/ItemPutBadRequestMissingDisplayPriceOnMobile"},"DisplayPriceOnMobile true when availableOnMobile false":{"$ref":"#/components/examples/ItemPutBadRequestDisplayPriceOnMobileConflict"},"Missing displayPriceOnWeb when unitPrice is greater than zero":{"$ref":"#/components/examples/ItemPutBadRequestMissingDisplayPriceOnWeb"},"Invalid JSON":{"$ref":"#/components/examples/ItemPutBadRequestInvalidJSON"},"Duplicated field":{"$ref":"#/components/examples/ItemPutBadRequestDuplicatedField"},"Unknown field":{"$ref":"#/components/examples/ItemPutBadRequestUnknownField"}}}}},"404_businessOrganization_item_not_found":{"description":"Not Found - The item code does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Item code unknown":{"$ref":"#/components/examples/ItemGetNotFound"}}}}},"200_scheduling_workOrder":{"description":"OK – Scheduling data for the requested work order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulingResponse"},"examples":{"Full scheduling data":{"summary":"Work order fully scheduled with crew and customer appointment","value":{"schedule":{"timeWindow":{"startDate":"2026-04-10T09:00:00Z","endDate":"2026-04-10T10:00:00Z"},"fieldResources":{"mainResourceCode":"tech-55","technicianCrewCodes":["tech-88","tech-98"],"equipmentCrewCodes":["truck-04"]}},"customer":{"geolocation":{"lat":48.8566,"lng":2.3522},"appointment":{"date":"2026-04-10T10:00:00Z","slot":{"startDate":"2026-04-10T08:00:00Z","endDate":"2026-04-10T12:00:00Z"}}}}},"Solo technician, no appointment":{"summary":"Work order assigned to a single technician, no customer appointment","value":{"schedule":{"timeWindow":{"startDate":"2026-04-10T14:00:00Z","endDate":"2026-04-10T16:00:00Z"},"fieldResources":{"mainResourceCode":"tech-55","technicianCrewCodes":null,"equipmentCrewCodes":null}},"customer":{"geolocation":{"lat":48.8566,"lng":2.3522},"appointment":null}}},"Main resource is equipment, no geolocation":{"summary":"Equipment-led work order, geolocation unavailable, slot only","value":{"schedule":{"timeWindow":{"startDate":"2026-04-11T08:00:00Z","endDate":"2026-04-11T09:30:00Z"},"fieldResources":{"mainResourceCode":"truck-04","technicianCrewCodes":["tech-55"],"equipmentCrewCodes":null}},"customer":{"geolocation":null,"appointment":{"date":null,"slot":{"startDate":"2026-04-11T08:00:00Z","endDate":"2026-04-11T12:00:00Z"}}}}},"No customer data":{"summary":"Scheduled work order with no customer-facing data","value":{"schedule":{"timeWindow":{"startDate":"2026-04-12T10:00:00Z","endDate":"2026-04-12T11:00:00Z"},"fieldResources":{"mainResourceCode":"tech-55","technicianCrewCodes":null,"equipmentCrewCodes":null}},"customer":null}}}}}},"400_scheduling_workOrder_bad_request":{"description":"Bad Request – The request is structurally invalid. For the `uuid:` variant, this is returned when the provided value is not a valid UUID format.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Invalid UUID format":{"summary":"Returned on the uuid variant when the value is not a valid UUID","value":{"errors":[{"code":"scheduling.workorder.uuid.invalid","message":"The value 'not-a-uuid' is not a valid UUID."}],"errorReference":"abcdefghij0123456789"}}}}}},"404_scheduling_workOrder_not_found":{"description":"Not Found – Work order does not exist, or exists but is not yet scheduled (status ≤ PRE-SCHEDULED).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Work order not found":{"value":{"errors":[{"code":"scheduling.workorder.notfound","message":"Work order with code 'WO-2026-00123' not found."}],"errorReference":"abcdefghij0123456789"}},"Work order not yet scheduled":{"value":{"errors":[{"code":"scheduling.workorder.notscheduled","message":"Work order with code 'WO-2026-00123' is not yet scheduled."}],"errorReference":"abcdefghij0123456789"}}}}}},"201_scheduling_schedule_created":{"description":"Work order scheduled for the first time.","content":{"application/json":{"examples":{"Work order scheduled":{"value":""}}}}},"204_scheduling_schedule_updated":{"description":"Scheduling of an already scheduled work order updated.","content":{"application/json":{"examples":{"Scheduling updated":{"value":""}}}}},"400_scheduling_schedule_bad_request":{"description":"Bad Request - validation or business rule error.\nErrors listed under \"Control conflicts\" can be bypassed with `schedulerRequirements.skipControls`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Unknown work order":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestUnknownWorkOrder"},"Unknown technician":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestUnknownTechnician"},"Unknown equipment":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestUnknownEquipment"},"Unknown main resource":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestUnknownMainResource"},"Missing wo code in path":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestMissingWoCodeInPath"},"Invalid UUID format":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestInvalidUuid"},"Invalid JSON, duplicated or unknown field":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestInvalidJSON"},"Missing time window (qualified work order)":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestMissingTimeWindow"},"Missing report filler (qualified work order)":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestMissingReportFiller"},"Equipment scheduled without technician":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestEquipmentWithoutTechnician"},"Missing or invalid schedule mode":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestScheduleModeInvalid"},"Unknown skipControls value":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestUnknownSkipControl"},"Missing or invalid date, day or timezone":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestDateFormat"},"Invalid date order":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestDateOrder"},"Negative duration":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestNegativeDuration"},"Maximum duration exceeded":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestDurationExceeded"},"Maximum start date exceeded":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestStartExceeded"},"Working hours violated":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestWorkingHoursViolation"},"Tour exceeds working day":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestTourExceedsWorkingDay"},"Resource subscription invalid":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestSubscriptionInvalid"},"Resource office hierarchy mismatch":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestOfficeMismatch"},"Skill missing":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestSkillMissing"},"Characteristics missing":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestCharacteristicsMissing"},"Work order status invalid":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestStatusInvalid"},"Scheduling rejected (other rule)":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestRejected"},"Technician work order overlap (workOrderOverlap)":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestTechnicianWorkOrderOverlap"},"Machine work order overlap (workOrderOverlap)":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestEquipmentWorkOrderOverlap"},"Technician unavailable (unavailabilityOverlap)":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestTechnicianUnavailable"},"Machine unavailable (unavailabilityOverlap)":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestEquipmentUnavailable"},"SLA hours violated (slasRespect)":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestSlasViolation"},"Appointment hours violated (appointmentRespect)":{"$ref":"#/components/examples/SchedulingSchedulePutBadRequestAppointmentViolation"}}}}},"200_fieldService_usedItems":{"description":"OK - Paginated list of used items on the work order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsedItemListResponse"},"examples":{"First page with continuation token":{"value":{"continuationToken":"eyJsYXN0VXBkYXRlIjoiMjAyNC0xMC0xNVQxNjowNTowMFoifQ==","data":[{"lineItemId":"80ae5498-6d98-45d0-be83-11748b49692a","itemCode":"PUMP-V3","agentCode":"T_SMITH_04","billing":{"associatedSectionCode":"REPLACEMENT_SECTION","invoiceMode":"INTERNAL","name":"Pompe elec motron v3","reference":"182DGH32","expectedQuantity":1,"usedQuantity":1,"usedVatRate":0.2,"unitPrice":{"catalogValue":69,"associatedContract":2683,"value":59,"currency":"USD"}},"tracking":{"serialNumber":"SN-9982-XP","stockCode":null},"lastUpdate":"2024-10-15T16:05:00Z"}]}},"Last page - no continuation token":{"value":{"continuationToken":null,"data":[{"lineItemId":"ffffffff-0000-0000-0000-000000000001","itemCode":"JOINT-50MM","agentCode":"T_MARTIN_07","billing":{"associatedSectionCode":null,"invoiceMode":"EXTERNAL","name":"Joint caoutchouc 50mm","reference":null,"expectedQuantity":null,"usedQuantity":3,"usedVatRate":null,"unitPrice":{"catalogValue":null,"associatedContract":null,"value":4.5,"currency":"EUR"}},"tracking":{"serialNumber":null,"stockCode":"STOCK-PARIS-03"},"lastUpdate":"2024-10-14T09:10:00Z"}]}},"Empty list":{"value":{"continuationToken":null,"data":[]}}}}}},"400_fieldService_usedItems_bad_request":{"description":"Bad Request - validation error or invalid continuation token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Invalid continuation token":{"value":{"errors":[{"code":"fieldService.continuationToken.invalid","message":"The provided continuation token does not respect the expected format."}],"errorReference":"59ddc09a23159395367307ab95b1c41a"}},"pageSize exceeded":{"value":{"errors":[{"code":"fieldService.pageSize.exceeded","message":"pageSize must not exceed 200."}],"errorReference":"223e4567-e89b-12d3-a456-426614174001"}}}}}},"404_fieldService_workOrder_not_found":{"description":"Not Found - Work order not found or outside caller's org unit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"404 Work order not found":{"value":{"errors":[{"code":"fieldService.workOrder.notfound","message":"Work order not found."}],"errorReference":"a745dc4c5a2b473aaf8ce94c9260aa8f"}}}}}},"400_diagnostic_note_bad_request":{"description":"Bad Request - validation errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing wo code in path":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestMissingWoCodeInPath"},"Missing note code in path":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestMissingNoteCodeInPath"},"Unknown work order":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestUnknownWorkOrder"},"Unknown note type code":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestUnknownNoteTypeCode"},"Unknown report field code":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestUnknownReportFieldCode"},"Date format":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestDateFormat"},"Report field value format":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestReportFieldValueFormat"},"Missing note type code":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestMissingNoteTypeCode"},"Missing content":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestMissingContent"},"Missing content.text":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestMissingContentText"},"Missing content.reportFields":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestMissingContentReportFields"},"Missing content.fields.mandatory":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestMissingContentFieldsMandatory"},"Missing coordinates":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestMissingCoordinates"},"Date in the future":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestDateInFuture"},"Invalid JSON":{"$ref":"#/components/examples/DiagnosticNotePutBadRequestInvalidJSON"}}}}},"201_diagnostic_note_created":{"description":"Note created.","content":{"application/json":{"examples":{"Note created":{"value":""}}}}},"204_diagnostic_note_updated":{"description":"Note updated.","content":{"application/json":{"examples":{"Note updated":{"value":""}}}}},"204_diagnostic_flags_updated":{"description":"Flags updated.","content":{"application/json":{"examples":{"Flags updated":{"value":""}}}}},"400_diagnostic_flags_bad_request":{"description":"Bad Request - validation errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Unknown work order":{"$ref":"#/components/examples/DiagnosticFlagsPutBadRequestUnknownWorkOrder"},"Unknown flag code":{"$ref":"#/components/examples/DiagnosticFlagsPutBadRequestUnknownFlagCode"},"Missing wo code in path":{"$ref":"#/components/examples/DiagnosticFlagsPutBadRequestMissingWoCodeInPath"},"Missing flags":{"$ref":"#/components/examples/DiagnosticFlagsPutBadRequestMissingFlags"},"Flags format":{"$ref":"#/components/examples/DiagnosticFlagsPutBadRequestFlagsFormat"},"Invalid JSON":{"$ref":"#/components/examples/DiagnosticFlagsPutBadRequestInvalidJSON"}}}}},"201_referentials_asset_created":{"description":"Asset created.","content":{"application/json":{"examples":{"Asset created":{"value":""}}}}},"204_referentials_asset_updated":{"description":"Asset updated.","content":{"application/json":{"examples":{"Asset updated":{"value":""}}}}},"400_referentials_asset_put_bad_request":{"description":"Bad Request - validation errors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing label property":{"value":{"errors":[{"code":"referentials.customers.asset.label.mandatory","message":"Property label is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"Missing site code":{"value":{"errors":[{"code":"referentials.customers.asset.sitecode.mandatory","message":"Property siteCode is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"Missing asset type code":{"value":{"errors":[{"code":"referentials.customers.asset.assettypecode.mandatory","message":"Property assetTypeCode is required."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"Missing code in path":{"value":{"errors":[{"code":"referentials.customers.asset.code.mandatory","message":"Missing code in path."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Invalid JSON":{"value":{"errors":[{"code":"referentials.customers.asset.invalid.json","message":"Invalid Json format."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"Duplicated field":{"value":{"errors":[{"code":"referentials.customers.asset.invalid.json","message":"Duplicate field 'label'."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"Unknown field":{"value":{"errors":[{"code":"referentials.customers.asset.field.unknown","message":"The field 'foo_bar' is unknown. Please correct your JSON request."}],"errorReference":"d3c79ddca4f9413cad99dc934cc7d0aa"}},"Office unknown":{"value":{"errors":[{"code":"referentials.customers.asset.office.unknown","message":"The organizational unit 'DUMMY' is unknown."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Office Not Descendant of User's Office":{"value":{"errors":[{"code":"referentials.customers.asset.office.user.hierarchy.error","message":"The office is not a descendant of the user's one."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Office Not Descendant of Site's Office":{"value":{"errors":[{"code":"referentials.customers.asset.office.site.hierarchy.error","message":"The office is not a descendant of the site's one."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Office Not Descendant of Parent Asset's Office":{"value":{"errors":[{"code":"referentials.customers.asset.office.parent.hierarchy.error","message":"The office is not a descendant of the parent asset's one."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Incompatible parent asset office with site office":{"value":{"errors":[{"code":"referentials.customers.asset.parent.site.mismatch","message":"The parent asset 'parentAssetCode' does not belong to the site 'siteCode'."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Moving a parent asset":{"value":{"errors":[{"code":"referentials.customers.asset.with.child.cannot.be.moved","message":"The asset 'assetCode' has child assets and cannot be moved. A specific transferAsset endpoint will be developed to transfer the site, office and parentAsset of an asset with children."}],"errorReference":"f27b6e670c3d404e48095900660dbf128a05"}},"Site unknown":{"value":{"errors":[{"code":"referentials.customers.asset.site.unknown","message":"The site 'DUMMY' is unknown."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Asset type unknown":{"value":{"errors":[{"code":"referentials.customers.asset.assettype.unknown","message":"The asset type 'DUMMY' is unknown."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Parent asset unknown":{"value":{"errors":[{"code":"referentials.customers.asset.parent.unknown","message":"The parent asset 'DUMMY' is unknown."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Parent asset identical":{"value":{"errors":[{"code":"referentials.customers.asset.parent.identical","message":"The asset cannot be its own parent."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Parent asset child of the asset":{"value":{"errors":[{"code":"referentials.customers.asset.hierarchy.error","message":"The asset parent is also a child of the asset."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}},"Too many hierarchy levels":{"value":{"errors":[{"code":"referentials.customers.asset.hierarchy.error","message":"Hierarchy contains 10 or more levels."}],"errorReference":"669b11d0ae8145aa9b106b049091b371"}}}}}},"200_rostering_slots":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotSearchResult"}}}},"400_rostering_slots_bad_request":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessErrorCode"}}}},"201_webhooks_subscription_created":{"description":"Subscription successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionCreationResponse"},"examples":{"SubscriptionSuccessfullyCreated":{"$ref":"#/components/examples/SubscriptionSuccessfullyCreated"}}}}},"400_webhooks_subscription_bad_request":{"description":"The subscription creation request is not correctly formatted.\nSubscription not created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"MissingRequestBody":{"$ref":"#/components/examples/MissingRequestBody"},"MissingPropertyCallback":{"$ref":"#/components/examples/MissingPropertyCallback"},"MissingPropertyCallbackUrl":{"$ref":"#/components/examples/MissingPropertyCallbackUrl"},"MissingPropertyEventTypes":{"$ref":"#/components/examples/MissingPropertyEventTypes"},"EventTypesEmptyList":{"$ref":"#/components/examples/EventTypesEmptyList"},"EventTypesTooManyElements":{"$ref":"#/components/examples/EventTypesTooManyElements"},"EventTypesWrongEventType":{"$ref":"#/components/examples/EventTypesWrongEventType"},"CallbackWrongUrlFormat":{"$ref":"#/components/examples/CallbackWrongUrlFormat"},"CallbackUrlMaxLength":{"$ref":"#/components/examples/CallbackUrlMaxLength"},"CallbackSecretMaxLength":{"$ref":"#/components/examples/CallbackSecretMaxLength"},"CallbackHeaderNameLength":{"$ref":"#/components/examples/CallbackHeaderNameLength"},"CallbackHeaderValueLength":{"$ref":"#/components/examples/CallbackHeaderValueLength"},"CallbackHeaderNameFormat":{"$ref":"#/components/examples/CallbackHeaderNameFormat"},"CallbackHeaderNameMissing":{"$ref":"#/components/examples/CallbackHeaderNameMissing"},"CallbackHeaderNameDuplicate":{"$ref":"#/components/examples/CallbackHeaderNameDuplicate"}}}}},"422_webhooks_subscription_unprocessable":{"description":"Syntax is correct, but unable to create the given subscription.\nSubscription not created.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"MaximumSubscriptionsReached":{"$ref":"#/components/examples/MaximumSubscriptionsReached"}}}}},"200_webhooks_subscriptions":{"description":"Subscription's list successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionListResponse"},"examples":{"List of Subscriptions":{"$ref":"#/components/examples/ListSubscriptions"},"Empty list of Subscriptions":{"$ref":"#/components/examples/EmptyListSubscriptions"}}}}},"200_webhooks_subscription_deleted":{"description":"Subscription successfully deleted"},"404_webhooks_subscription_not_found":{"description":"Subscription not found"},"204_projectManagement_workOrder_linked":{"description":"Work order linked to its parent, or moved to the requested position.","content":{"application/json":{"examples":{"Work order linked":{"value":""}}}}},"400_projectManagement_project_bad_request":{"description":"Bad Request - validation or business rule error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Unknown project":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownProject"},"Unknown work order":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownWorkOrder"},"Ambiguous work order code":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestAmbiguousWorkOrder"},"Unknown relative position":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownRelativePosition"},"Work order positioned relative to itself":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestSelfRelativePosition"},"Unknown job in block":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownBlock"},"Unknown job in isBlockedBy":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownIsBlockedBy"},"Missing project code in path":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestMissingProjectCode"},"Missing type":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestMissingType"},"Unknown type":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownType"},"Missing work order code":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestMissingCode"},"Unknown insertion mode":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownInsertionMode"},"Missing position (index mode)":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestMissingPosition"},"Negative position":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestNegativePosition"},"Missing relative position (before / after mode)":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestMissingRelativePosition"},"Unknown insertion job type":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownJobType"},"Missing code in block":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestMissingBlockCode"},"Missing jobType in block":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestMissingBlockJobType"},"Unknown jobType in block":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownBlockJobType"},"Missing code in isBlockedBy":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestMissingIsBlockedByCode"},"Missing jobType in isBlockedBy":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestMissingIsBlockedByJobType"},"Unknown jobType in isBlockedBy":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownIsBlockedByJobType"},"Invalid JSON or wrong field type":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestInvalidJSON"},"Unknown field":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestUnknownField"},"Project office conflict":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestOfficeConflict"},"Project completed":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestStatusConflict"},"Current project completed":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestCurrentProjectStatusConflict"},"Dependencies not allowed on this project office":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestDependencyOfficeConflict"},"Dependency cycle":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestDependencyCycle"},"Dependency overlap":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestDependencyOverlap"},"Other business rule":{"$ref":"#/components/examples/ProjectManagementProjectLinkBadRequestRuleViolated"}}}}},"400_projectManagement_routeServiceOrder_bad_request":{"description":"Bad Request - validation or business rule error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Unknown route service order":{"$ref":"#/components/examples/ProjectManagementRouteServiceOrderLinkBadRequestUnknownRouteServiceOrder"},"Unknown work order":{"$ref":"#/components/examples/ProjectManagementRouteServiceOrderLinkBadRequestUnknownWorkOrder"},"Unknown relative position":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestUnknownRelativePosition"},"Work order positioned relative to itself":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestSelfRelativePosition"},"Missing service order code in path":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestMissingServiceOrderCode"},"Missing work order code":{"$ref":"#/components/examples/ProjectManagementRouteServiceOrderLinkBadRequestMissingCode"},"Unknown insertion mode":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestUnknownInsertionMode"},"Missing position (index mode)":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestMissingPosition"},"Missing relative position (before / after mode)":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestMissingRelativePosition"},"Invalid JSON or wrong field type":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestInvalidJSON"},"Unknown field":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestUnknownField"},"Service order office conflict":{"$ref":"#/components/examples/ProjectManagementRouteServiceOrderLinkBadRequestOfficeConflict"},"Service order completed or validated":{"$ref":"#/components/examples/ProjectManagementRouteServiceOrderLinkBadRequestStatusConflict"},"Service order full":{"$ref":"#/components/examples/ProjectManagementRouteServiceOrderLinkBadRequestFull"},"Work order not qualified":{"$ref":"#/components/examples/ProjectManagementRouteServiceOrderLinkBadRequestWorkOrderStatusConflict"},"Work order team conflict":{"$ref":"#/components/examples/ProjectManagementRouteServiceOrderLinkBadRequestTeamConflict"},"Current service order completed":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestCurrentServiceOrderConflict"},"Work order completed in its current route":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestCurrentServiceOrderStatusConflict"},"Work order not carried by its current service order":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestCurrentServiceOrderNotLinked"},"Other business rule":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestRuleViolated"}}}}},"400_projectManagement_standardServiceOrder_bad_request":{"description":"Bad Request - validation or business rule error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Unknown standard service order":{"$ref":"#/components/examples/ProjectManagementStandardServiceOrderLinkBadRequestUnknownStandardServiceOrder"},"Unknown work order":{"$ref":"#/components/examples/ProjectManagementStandardServiceOrderLinkBadRequestUnknownWorkOrder"},"Unknown relative position":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestUnknownRelativePosition"},"Work order positioned relative to itself":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestSelfRelativePosition"},"Missing service order code in path":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestMissingServiceOrderCode"},"Missing work order code":{"$ref":"#/components/examples/ProjectManagementStandardServiceOrderLinkBadRequestMissingCode"},"Unknown insertion mode":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestUnknownInsertionMode"},"Missing position (index mode)":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestMissingPosition"},"Missing relative position (before / after mode)":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestMissingRelativePosition"},"Invalid JSON or wrong field type":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestInvalidJSON"},"Unknown field":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestUnknownField"},"Service order office conflict":{"$ref":"#/components/examples/ProjectManagementStandardServiceOrderLinkBadRequestOfficeConflict"},"Service order completed or validated":{"$ref":"#/components/examples/ProjectManagementStandardServiceOrderLinkBadRequestStatusConflict"},"Service order full":{"$ref":"#/components/examples/ProjectManagementStandardServiceOrderLinkBadRequestFull"},"Current service order completed":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestCurrentServiceOrderConflict"},"Work order completed in its current route":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestCurrentServiceOrderStatusConflict"},"Work order not carried by its current service order":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestCurrentServiceOrderNotLinked"},"Other business rule":{"$ref":"#/components/examples/ProjectManagementServiceOrderLinkBadRequestRuleViolated"}}}}},"200_rostering_crews":{"description":"OK – Crews active over the requested period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrewListResponse"},"examples":{"A list which has more pages":{"summary":"Full page, a continuation token is returned","value":{"continuationToken":"eyJsYXN0SW5kZXgiOnsic3RhcnREYXRlIjoiMjAyNi0wOS0yM1QwNjowMDowMFoiLCJjcmV3SWQiOjEwNTA2MH19","data":[{"mainResource":{"code":"T-LEA","type":"technician","intervals":[{"startDate":"2026-09-21T06:00:00Z","endDate":"2026-09-23T00:00:00Z"}]},"secondaryResources":{"technicians":[{"code":"T-DUBOIS","intervals":[{"startDate":"2026-09-21T06:00:00Z","endDate":"2026-09-23T00:00:00Z"}]}],"equipments":[{"code":"truck-04","intervals":[{"startDate":"2026-09-21T06:00:00Z","endDate":"2026-09-23T00:00:00Z"}]}]}},{"mainResource":{"code":"T-DAVID","type":"technician","intervals":[{"startDate":"2026-09-23T06:00:00Z","endDate":"2026-09-26T00:00:00Z"}]},"secondaryResources":{"technicians":[],"equipments":[{"code":"truck-04","intervals":[{"startDate":"2026-09-23T06:00:00Z","endDate":"2026-09-24T00:00:00Z"},{"startDate":"2026-09-25T06:00:00Z","endDate":"2026-09-26T00:00:00Z"}]}]}}]}},"The last page":{"summary":"Equipment-led crew with an open-ended interval, no more pages","value":{"continuationToken":null,"data":[{"mainResource":{"code":"crane-02","type":"equipment","intervals":[{"startDate":"2026-09-22T06:00:00Z","endDate":null}]},"secondaryResources":{"technicians":[{"code":"T-MARTIN","intervals":[{"startDate":"2026-09-22T06:00:00Z","endDate":"2026-10-01T00:00:00Z"}]}],"equipments":[]}}]}},"Empty list":{"value":{"continuationToken":null,"data":[]}}}}}},"400_rostering_crews_bad_request":{"description":"Bad Request - invalid query parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"Missing period":{"value":{"errors":[{"code":"rostering.crews.period.missing","message":"startDate and endDate are mandatory"}],"errorReference":"923e4567-e89b-12d3-a456-426614174000"}},"Invalid period (format or order)":{"value":{"errors":[{"code":"rostering.crews.period.invalid","message":"startDate and endDate must be ISO 8601 dates, and endDate must be after startDate"}],"errorReference":"923e4567-e89b-12d3-a456-426614174000"}},"Period too long":{"value":{"errors":[{"code":"rostering.crews.period.tooLong","message":"The requested period cannot exceed one year"}],"errorReference":"923e4567-e89b-12d3-a456-426614174000"}},"Invalid size":{"value":{"errors":[{"code":"rostering.crews.size.invalid","message":"size must be a positive integer"}],"errorReference":"923e4567-e89b-12d3-a456-426614174000"}},"Invalid continuation token":{"value":{"errors":[{"code":"rostering.crews.continuationToken.invalid","message":"The continuation token is malformed or expired"}],"errorReference":"923e4567-e89b-12d3-a456-426614174000"}}}}}},"401_unauthorized":{"description":"Unauthorized - authentication issue.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"401 Unauthorized":{"value":{"errors":[{"code":"unauthorized.nocredentials","message":"No credentials."}],"errorReference":"f939c6b8c15045c9a70f500fdb570555"}},"401 Bad credentials":{"value":{"errors":[{"code":"unauthorized.badcredentials","message":"Bad Credentials."}],"errorReference":"f1028f99811b422eb21f5ff176664069"}}}}}},"403_forbidden":{"description":"Forbidden - not enough rights.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"403 Access forbiden":{"value":{"errors":[{"code":"access.forbiden","message":"You don't have the rights to access this resource."}],"errorReference":"a745dc4c5a2b473aaf8ce94c9260aa8f"}}}}}},"429_too_many_requests":{"description":"Too Many Requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"429 Too many requests":{"value":{"errors":[{"code":"ratelimiter.toomanyrequest","message":"Rejected because of the rate limit definition."}],"errorReference":"973326230a3f44daba6cc34a5939b4fb"}}}}}},"500_internal_server_error":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"500 Internal server error":{"value":{"errors":[{"code":"internal.server.error","message":"Something went wrong."}],"errorReference":"6377010431314bf6b0b95ec4d32ddae0"}}}}}}}}}