openapi: 3.0.0 info: title: Opendock Nova API Documentation Appointments Carrier API description: "## Welcome to Opendock Nova!\n\n#### What is Opendock Nova?\n\nOpendock is an online dock appointment scheduling tool. Facilities such as warehouses, distribution centers, and\nmanufacturing plants use it to organize their docks and schedule appointments for outbound pickups and inbound\ndeliveries.\nYou can read all our knowledge base\narticles [here.](https://community.loadsmart.com/hc/en-us/sections/24987828169619-Opendock-Nova-Warehouse-API)\n\nWe now provide an SSO option for User Authentication. Read\nthe [docs here.](https://community.loadsmart.com/hc/en-us/articles/14944624317075-Single-Sign-On-SSO-SAML-2-0)\n\n---\n\n## Our APIs\n\nWe have 3 main APIs:\n\n- REST API called _Neutron_ for performing standard HTTP operations.\n- Real-time API called _Subspace_ for receiving streaming events whenever objects are Created/Updated/Deleted.\n- A **\"Reference Number Validation\"** aka \"PO Validation\" _protocol_ for validating PO numbers (or similar) before an\n appointment is scheduled. Detailed documentation for it can be found\n here: [PO/Ref Number Validation Implementation](https://community.loadsmart.com/hc/en-us/articles/14946368437907-PO-Ref-Number-Validation-Implementation)\n\n---\n\n## Neutron - REST API\n\nAll endpoints are listed below. Depending on your User Role, some may be forbidden. Almost all endpoints expect a simple\nJWT token to be set in the `Authorization: Bearer` HTTP header. Read more about Bearer\ntokens [here](https://swagger.io/docs/specification/authentication/bearer-authentication/).\n\n### Base URL\n\nThe base URL is the same as it is for this document (look at the current URL in your browser's address bar). For\nexample, our production Neutron Base URL is [https://neutron.opendock.com](https://neutron.opendock.com).\n\n### Authentication\n\nTo start, call the `POST /auth/login` endpoint to exchange your user credentials (email + password) for a simple JWT\ntoken. If you don't have an account yet, reach out to your account admin or contact us for further help.\n\nIf login is successful, the response will be a JWT token to use as your `Bearer` header as described above.\n\nThe JWT expiration time depends on your User Role as well as other factors. You may base64-decode your JWT token to view\nmore technical details about it.\n\n#### Test it:\n\nTo test that your auth headers are set correctly, call the `GET /auth/me` endpoint. It will return a JSON payload with\nyour User information.\n\n---\n\n## Subspace - Real-time Streaming API\n\nSubspace is a _read-only_ API that allows your system to recieve streaming real-time information about changes to your\nAppointments, Warehouses, Docks, etc.\n\nUsing Subspace you can implement a \"push\"-based approach to your integration instead of relying only on \"poll\"-ing\nmethods (which can be inefficient).\n\nSubpsace is based on the famous [`socket.io`](https://socket.io/) library.\n\n### Choosing a socket.io Client\n\nThe socket.io project provides a JavaScript client library that works in the browser as well as NodeJS. However there\nare also client implementations in many other languages including C#, Java, Python, and Go, so you should select the\nappropriate client for your project. A good overview of socket.io and a list of client implementations can be found\nhere: [Socket.IO Introduction](https://socket.io/docs/v4/)\n\n**NOTE:** Currently Opendock uses socket.io server **v4.x** so please make sure to select an appropriate socket.io\nclient version that is protocol compatible.\n\n### Connecting and Authentication\n\nThe base connection URL is the same as the base URL for Neutron above, except with the word \"subspace\" instead of \"\nneutron\". For example, our production Subspace connection URL\nis [wss://subspace.opendock.com](wss://subspace.opendock.com).\n\nFor convenience, the same JWT token obtained from the Neutron `/auth/login` endpoint above is used for Subspace\nauthentication.\n\nConnecting and Authenticating are done in a single operation: simply connect to the following `wss` URL:\n\n```\n?token=\n```\n\nThat can be a little confusing to parse. Here's a real-life example connection string:\n\n```\nwss://subspace.opendock.com?token=eyJhbGciOiJIUzI1Ni...(full token continues)\n```\n\n**NOTE:** Currently Opendock only supports the `websocket` transport, so you must specify this in your connection\nsettings.\n\nHere's an example of connecting to Subspace using the JavaScript client:\n\n```JavaScript\n// NOTE: we assume \"accessToken\" was already obtained earlier via a call to '/auth/login'.\nconst baseSubspaceUrl = 'wss://subspace.opendock.com';\nconst url = `${baseSubspaceUrl}?token=${accessToken}`;\nconst socket = io(url, { transports: ['websocket'] }); // Enforce 'websocket' transport only.\n```\n\n### Listening to events\n\nSubspace emits Create/Update/Delete events for each entity in your Org (Appointment, Warehouse, Dock, etc). Your event\nhandler for these events will receive a JSON object containing the details about the given entity.\n\nOnce your socket.io client instance is connected, you can listen for any of these events by constructing the appropriate\nevent string:\n\nEvent strings follow this pattern:\n\n```\n\"{EventType}-{EntityName}\"\n```\n\n`EventType` can be one of: `create`, `update`, or `delete`.\n\n`EntityName` can be any entity in our REST API, such as: `Appointment`, `Warehouse`, `Dock`, etc.\n\nSo for example, to listen to `create` events for `Appointment` entities you would use:\n\n```\n\"create-Appointment\"\n```\n\nOr to listen to `update` events for `Warehouse` entities you would use:\n\n```\n\"update-Warehouse\"\n```\n\n**NOTE:** The event types are lowercase, but the entity names are capitalized (event strings are case-sensitive).\n\nThere is also a `\"heartbeat\"` event that you can listen to, which will emit every 5 seconds with a timestamp and the\nNeutron API version. This can be helpful for ensuring that your connection to Subspace is working correctly.\n\n### Caveats and Limitations\n\nSubspace does not do any sort of \"catch-up\" or \"replay\" of events, you will only get the events that occur after you\nconnect to the socket.io server.\n\nIf your client loses connection for some time, the event messages will not be queued and delivered when you next\nconnect, you will simply start receiving new messages after the point in time that you connected.\n\nFor this reason, even when using Subspace, you may need to occasionally supplement with calls to our REST API (ie.\ngetAll) to fetch entities and keep in sync with the data in Opendock, depending on your needs.\n\n### Example: Listening for Heartbeat\n\nThis event handler will get called periodically with the \"heartbeat\" information:\n\n```JavaScript\nsocket.on('heartbeat', (data) => {\n console.log(data);\n});\n```\n\nThis will output something like:\n\n```JSON\n{\n now: '2022-09-15T20:02:20.015Z',\n version: {\n major: '2',\n minor: '5',\n patch: '16',\n commit: '4a443fb\\n'\n }\n}\n```\n\n### Example: Listening for Appointment Creation and Update\n\nIn this example, your event handler will get called whenever an Appointment\nis created in your Org:\n\n```JavaScript\nsocket.on('create-Appointment', (data) => {\n console.log('appt create:', data);\n});\n```\n\nThe `data` your event handler recieves will be a JSON object containing\nthe Appointment details, like this:\n\n```JSON\n{\n \"id\": \"9cd63603-a7ff-43c7-8183-befc19a7a81b\",\n \"createDateTime\": \"2022-07-29T06:49:20Z\",\n \"lastChangedDateTime\": \"2022-07-29T06:49:20Z\",\n \"isActive\": true,\n \"tags\": [],\n \"type\": \"Standard\",\n \"status\": \"Scheduled\",\n \"start\": \"2022-07-29T00:00:00+00:00\",\n \"end\": \"2022-07-29T01:30:00+00:00\",\n ...\n ...\n ...\n}\n```\n\nIf you also wanted to listen for any changes to existing Appointments\nyou could add another listener:\n\n```JavaScript\nsocket.on('create-Appointment', (data) => {\n console.log('appt create:', data);\n});\n\nsocket.on('update-Appointment', (data) => {\n console.log('appt update:', data);\n});\n```\n\nThe `update-Appointment` event handler will receive a similar JSON object\ncontaining the most up-to-date details of the Appointment that was\njust updated.\n\n---\n\n## Nestjsx/Crud\n\n[NestJSX/Crud](https://github.com/nestjsx/crud/wiki/Requests#search) is a robust library designed for creating\nhigh-performance and scalable APIs. With NestJSX/Crud, API\nconsumers can take advantage of a flexible and intuitive approach to querying data.\n\nThis library streamlines the process of searching, sorting, and paginating data to cater to the exact requirements of\nthe API consumer. This feature saves valuable time by allowing the API consumer to bypass irrelevant data, ensuring only\nthe necessary data is obtained.\n\nNote: We encourage use of the `search` parameter (`s=...`), and do not allow use of the deprecated `filter` parameter.\n\n#### Search Examples\n\nFind all active Appointments created or updated since March 15th, 2023 at 8am MST (since created appts also have updated lastChangeDateTime)\n\n```\ns={\"lastChangedDateTime\":{\"$gt\":\"2023-03-15T08:00:00.000-07:00\"}}\n```\n\nFind all soft-deleted (inActive) appointments updated since a date/time (isActive:false indicates soft-deleted)\n\n```\ns={\"$and\":[{\"lastChangedDateTime\": {\"$gt\":\"2023-07-7T00:00:00.000Z\"}},{\"isActive\":false}]}\n```\n\nFind all appointments changed since a date time (both active and inactive).\nThis is useful for integration partners with recurring series who need to know future appointments in the series have been removed\n\n```\ns={\"$and\":[{\"lastChangedDateTime\": {\"$gt\":\"2023-07-7T00:00:00.000Z\"}},{\"$or\":[{\"isActive\":true},{\"isActive\":false}]}]}\n```\n\nFind all Appointment where the `tags` are empty\n\n```\ns={\"tags\": {\"$or\": {\"$isnull\": true, \"$eq\": \"{}\"}}}\n```\n\nFind all Appointments where it includes a tag of `Late`\n\n```\ns={\"tags\":{\"$contL\":\"Late\"}}\n```\n\nFind all appointments in `Scheduled` status set to start after March 15th, 2023 at 8am MST\n\n```\ns={\"$and\":[{\"status\":\"Scheduled\"},{\"start\":{\"$gt\":\"2023-03-15T08:00:00.000-07:00\"}}]}\n```\n\n#### Join examples (with Fields)\n\nTo return data from other tables without the need to make a secondary query, the API consumer can join specific tables\ntogether and request only the fields necessary.\n\nGet the appointment with the carrier and company. This will return a nested `User` with a nested `Company` in the result for\neach appointment.\nOrder matters here. You must first include `user` to get to `user.company`.\n\n```\njoin=user&join=user.company\n```\n\nTo get just the user's email and company's name, you can use the `||` operator.\nBecause `user.companyId = company.id` you must at least include `companyId` on `user`\n\n```\njoin=user||email,companyId&join=user.company||name\n```\n\n#### Other Examples\n\nTo get an appointment's refNumber (PO), start, lastChangedDateTime, and carrier company name\n\n```\ns={\"start\": {\"$gt\":\"2023-03-15T00:00:00.000Z\"}}&join=user||companyId&join=user.company||name&fields=refNumber,lastChangedDateTime,start\n```\n\n---\n" version: v4.144.0 - 39b4253 contact: {} servers: - url: https://neutron.opendock.com description: Production Server - url: https://neutron.staging.opendock.com description: Staging Server tags: - name: Carrier description: 'This API allows partners to request integration for Carriers and also manage Carrier''s information. The usage of this API is detailed at https://developer.loadsmart.com/carrier-integrations/how-tos/how-to-connect.html. To sum up how to integrate a Carrier, follow these steps: * `Search a carrier` by its MC# or DOT; * `Request Integration for a Carrier`; * Check the status by `Detail Carrier Integration Request status`; * Once the status is `ACCEPTED`, do requests on behalf of this carrier. ' paths: /api/v2/carrier/search: get: summary: Search a carrier tags: - Carrier security: - Application-JWT: - carrier_search description: 'Search a carrier by dot or mc ' parameters: - in: query name: mc schema: description: Carrier mc type: string format: integer required: false - in: query name: dot schema: description: Carrier dot type: string format: integer required: false responses: '200': description: Success content: application/json: schema: type: object properties: id: type: string name: type: string mc: type: string dot: type: string eligible: type: bool description: 'Flag that report if the Carrier is eligible to carry loads ' status: type: string enum: - NEW - PENDING - READY description: 'Onboarding process status: `NEW` means that Carrier is New `PENDING` means that Onboard Process is under review `READY` means that Carrier is successfully onboarded ' example: id: 9b739d7a-b4db-45f7-a61b-990c7ac77082 dot: '2953461' mc: '456' status: New eligible: false name: J R T TRANS CORP '400': description: Invalid parameters content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: missing_parameters: - query must have mc or dot fields '404': description: Carrier not found content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: object_not_found error_description: Object not found /api/v2/carrier/integrations: get: summary: List of integrations tags: - Carrier security: - Application-JWT: - carrier_read description: 'List the integrations that the intermediary have with loadsmart ' responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array description: An array of integrations items: type: object properties: id: type: string format: uuid count: type: integer next: type: string previous: type: string example: count: 2 next: null previous: null data: - id: f0c1b42c-9f8b-434e-9971-ae1c527e2680 - id: d11a1f7c-fad9-4ff9-b0ba-34fc93f63c3f /api/v2/carrier/integration-request: post: summary: Request Integration for a Carrier description: '3PP can integrate a carrier and create a Carrier Account ' security: - Application-JWT: - request_integration_write requestBody: required: true content: application/json: schema: type: object properties: carrier_id: type: string description: Carrier UUID maxLength: 255 owner: type: object description: Company main contact information. properties: first_name: type: string description: First Name maxLength: 255 last_name: type: string description: Last Name maxLength: 255 email: type: string description: Email Address maxLength: 255 phone_number: type: string pattern: \+\d{4,15} maxLength: 16 description: Phone number following the format [E.164](https://www.itu.int/rec/T-REC-E.164/) phone_number_extension: type: string description: Phone Number Extension maxLength: 255 required: - first_name - last_name - email required: - carrier_id example: carrier_id: 9f87d040-f843-42e7-887a-45bea55e76f3 owner: first_name: John last_name: Doe email: john.doe@email.com phone_number: '+1111111111' phone_number_extension: '123' responses: '200': description: Integration Request with same data already exists content: application/json: schema: type: object properties: id: type: string description: Unique Identifier of the Integration Request account_id: type: string description: Unique Identifier of the Account carrier: type: object properties: id: type: string description: Unique Identifier of the Carrier on Loadsmart mc: type: string description: Carrier Interstate Operating Authority (MC number) dot: type: string description: Carrier US DOT Number name: type: string description: Carrier legal name eligible: type: bool description: Flag that report if the Carrier is eligible to carry loads status: type: string enum: - New - Pending - Ready - Inactive description: Carrier status on Loadsmart status: type: string enum: - pending - accepted - rejected description: 'Status of the Integration Request - pending: waiting/under evaluation from Carrier owner and/or Loadsmart - accepted: Integration Request accepted - rejected: Integration Request rejected by Carrier owner and/or Loadsmart ' documents: type: array description: List of required documents and its status items: type: object properties: type: type: string description: Document type (Form W9, Insurance or Authority) status: type: string enum: - missing - under-review - accepted example: id: fe17b7e7-6453-4520-b99d-2d2b44972468 account_id: bc32c4d4-5732-7845-aa32-132cdab5467b carrier: id: 9f87d040-f843-42e7-887a-45bea55e76f3 mc: '12345' dot: '54321' name: John Doe Freights status: new eligible: false status: PENDING documents: - type: w9 status: missing - type: insurance status: under-review - type: authority status: accepted '201': description: Integration Request successfully created content: application/json: schema: type: object properties: id: type: string description: Unique Identifier of the Integration Request account_id: type: string description: Unique Identifier of the Account carrier: type: object properties: id: type: string description: Unique Identifier of the Carrier on Loadsmart mc: type: string description: Carrier Interstate Operating Authority (MC number) dot: type: string description: Carrier US DOT Number name: type: string description: Carrier legal name eligible: type: bool description: Flag that report if the Carrier is eligible to carry loads status: type: string enum: - New - Pending - Ready - Inactive description: Carrier status on Loadsmart status: type: string enum: - pending - accepted - rejected description: 'Status of the Integration Request - pending: waiting/under evaluation from Carrier owner and/or Loadsmart - accepted: Integration Request accepted - rejected: Integration Request rejected by Carrier owner and/or Loadsmart ' documents: type: array description: List of required documents and its status items: type: object properties: type: type: string description: Document type (Form W9, Insurance or Authority) status: type: string enum: - missing - under-review - accepted example: id: fe17b7e7-6453-4520-b99d-2d2b44972468 account_id: bc32c4d4-5732-7845-aa32-132cdab5467b carrier: id: 9f87d040-f843-42e7-887a-45bea55e76f3 mc: '12345' dot: '54321' name: John Doe Freights status: new eligible: false status: PENDING documents: - type: w9 status: missing - type: insurance status: under-review - type: authority status: accepted '404': description: Carrier not found content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: object_not_found error_description: Object not found '422': description: Integration already requested content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: invalid_data error_description: Can't create the object errors: field_name: - This field is required. other_field: - Expected string but received integer. tags: - Carrier get: summary: List Carrier Integration Request status description: 'List partner''s integration requests ' security: - Application-JWT: - request_integration_read responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array description: An array of integrations items: type: object properties: id: type: string description: Unique Identifier of the Integration Request carrier_id: type: string description: Unique Identifier of the Carrier on Loadsmart mc: type: string description: Carrier Interstate Operating Authority (MC number) dot: type: string description: Carrier US DOT Number name: type: string description: Carrier legal name status: type: string enum: - pending - accepted - rejected description: 'Status of the Integration Request - pending: waiting/under evaluation from Carrier owner and/or Loadsmart - accepted: Integration Request accepted - rejected: Integration Request rejected by Carrier owner and/or Loadsmart ' count: type: integer next: type: string previous: type: string example: count: 1 next: null previous: null data: - id: fe17b7e7-6453-4520-b99d-2d2b44972468 carrier_id: bc32c4d4-5732-7845-aa32-132cdab5467b mc: '12345' dot: '54321' name: John Doe Freights status: pending '404': description: No integration requests found content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: object_not_found error_description: Object not found tags: - Carrier /api/v2/carrier/integration-request/{id}: get: summary: Detail Carrier Integration Request status description: '3PP can check the Integrate Status of a Carrier ' security: - Application-JWT: - request_integration_read parameters: - in: path name: id schema: description: Unique Integration Request identifier type: string format: uuid required: true responses: '200': description: Success content: application/json: schema: type: object properties: id: type: string description: Unique Identifier of the Integration Request account_id: type: string description: Unique Identifier of the Account carrier: type: object properties: id: type: string description: Unique Identifier of the Carrier on Loadsmart mc: type: string description: Carrier Interstate Operating Authority (MC number) dot: type: string description: Carrier US DOT Number name: type: string description: Carrier legal name eligible: type: bool description: Flag that report if the Carrier is eligible to carry loads status: type: string enum: - New - Pending - Ready - Inactive description: Carrier status on Loadsmart status: type: string enum: - pending - accepted - rejected description: 'Status of the Integration Request - pending: waiting/under evaluation from Carrier owner and/or Loadsmart - accepted: Integration Request accepted - rejected: Integration Request rejected by Carrier owner and/or Loadsmart ' documents: type: array description: List of required documents and its status items: type: object properties: type: type: string description: Document type (Form W9, Insurance or Authority) status: type: string enum: - missing - under-review - accepted example: id: fe17b7e7-6453-4520-b99d-2d2b44972468 account_id: bc32c4d4-5732-7845-aa32-132cdab5467b carrier: id: 9f87d040-f843-42e7-887a-45bea55e76f3 mc: '12345' dot: '54321' name: John Doe Freights status: new eligible: false status: PENDING documents: - type: w9 status: missing - type: insurance status: under-review - type: authority status: accepted '404': description: Integrate Request not found content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: object_not_found error_description: Object not found tags: - Carrier /api/v2/carrier/documents: post: summary: Upload document description: Uploads Carrier related documents, such as Form W9, Insurance and security: - User-JWT: - carrier_write requestBody: required: true content: multipart/form-data: schema: type: object properties: document_type: type: string enum: - w9 - insurance - authority description: 'Type of document: `w9`: Form W9 `insurance`: Certificate of Insurance `authority`: Letter of Authority ' document: type: string format: binary responses: '200': description: File successfully uploaded content: application/json: schema: type: object properties: document_url: type: string description: File URL type: type: string enum: - w9 - insurance - authority description: 'Type of document: `w9`: Form W9 `insurance`: Certificate of Insurance `authority`: Letter of Authority ' verified: type: boolean description: File has been verified '422': description: Invalid or missing data content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: invalid_data error_description: Can't create the object errors: field_name: - This field is required. other_field: - Expected string but received integer. tags: - Carrier /api/v2/carrier/drivers: get: summary: List drivers tags: - Carrier description: List drivers for this carrier. security: - User-JWT: - carrier_read responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array description: List of drivers items: type: object properties: id: type: string description: Unique identifier for this driver format: uuid readOnly: true name: type: string description: Driver's full name phone_number: nullable: true type: string pattern: \+\d{4,15} maxLength: 16 description: Phone number following the format [E.164](https://www.itu.int/rec/T-REC-E.164/) sms_enabled: type: boolean description: If this driver can receive Loadsmart text messages default: true location: type: object description: Driver's last location readOnly: true required: - id - name count: type: integer description: The number of results in the payload. next: type: string format: uri description: An URL for the next result page. previous: type: string format: uri description: An URL for the previous result page. required: - data example: data: - id: a1336ea6-cf21-4515-a1fa-ab1d0153ef5b name: Doralin Secret phone_number: '+162331747869' sms_enabled: true location: null owner_operator_id: null - id: a392494b-50f7-47f3-8125-bbf63ba930fa name: Lorinda Jeyness phone_number: +171 588 992 8431 sms_enabled: false location: null owner_operator_id: c75077fa-de83-45eb-b95a-0eb1fd4a2d77 count: 2 next: null previous: null post: summary: Create driver tags: - Carrier security: - User-JWT: - carrier_write requestBody: required: true content: application/json: schema: type: object properties: id: type: string description: Unique identifier for this driver format: uuid readOnly: true name: type: string description: Driver's full name phone_number: nullable: true type: string pattern: \+\d{4,15} maxLength: 16 description: Phone number following the format [E.164](https://www.itu.int/rec/T-REC-E.164/) sms_enabled: type: boolean description: If this driver can receive Loadsmart text messages default: true location: type: object description: Driver's last location readOnly: true required: - id - name example: name: Zebulon Pighills phone_number: '+19772914537' sms_enabled: true responses: '201': description: Driver was created content: application/json: schema: type: object properties: data: type: object properties: id: type: string description: Unique identifier for this driver format: uuid readOnly: true name: type: string description: Driver's full name phone_number: nullable: true type: string pattern: \+\d{4,15} maxLength: 16 description: Phone number following the format [E.164](https://www.itu.int/rec/T-REC-E.164/) sms_enabled: type: boolean description: If this driver can receive Loadsmart text messages default: true location: type: object description: Driver's last location readOnly: true required: - id - name example: data: id: 9ba86ef0-7c8f-487e-a7f9-60515078d9a2 name: Zebulon Pighills phone_number: '+19772914537' sms_enabled: true location: null owner_operator_id: 13e32bca-178f-439c-b6e5-3348602f6b2c '422': description: Invalid or missing data content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: invalid_data error_description: Can't create the object errors: field_name: - This field is required. other_field: - Expected string but received integer. /api/v2/carrier/{driver_id}: get: summary: Retrieve driver tags: - Carrier security: - User-JWT: - carrier_read responses: '200': description: Success content: application/json: schema: type: object properties: data: type: object properties: id: type: string description: Unique identifier for this driver format: uuid readOnly: true name: type: string description: Driver's full name phone_number: nullable: true type: string pattern: \+\d{4,15} maxLength: 16 description: Phone number following the format [E.164](https://www.itu.int/rec/T-REC-E.164/) sms_enabled: type: boolean description: If this driver can receive Loadsmart text messages default: true location: type: object description: Driver's last location readOnly: true required: - id - name example: data: id: 9ba86ef0-7c8f-487e-a7f9-60515078d9a2 name: Zebulon Pighills phone_number: '+19772914537' sms_enabled: true location: null owner_operator_id: null '404': description: Driver not found content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: object_not_found error_description: Object not found put: summary: Update driver tags: - Carrier security: - User-JWT: - carrier_write requestBody: required: true content: application/json: schema: type: object properties: id: type: string description: Unique identifier for this driver format: uuid readOnly: true name: type: string description: Driver's full name phone_number: nullable: true type: string pattern: \+\d{4,15} maxLength: 16 description: Phone number following the format [E.164](https://www.itu.int/rec/T-REC-E.164/) sms_enabled: type: boolean description: If this driver can receive Loadsmart text messages default: true location: type: object description: Driver's last location readOnly: true required: - id - name example: name: Flobbidinous Floop phone_number: '+19772914537' responses: '201': description: Driver was updated content: application/json: schema: type: object properties: data: type: object properties: id: type: string description: Unique identifier for this driver format: uuid readOnly: true name: type: string description: Driver's full name phone_number: nullable: true type: string pattern: \+\d{4,15} maxLength: 16 description: Phone number following the format [E.164](https://www.itu.int/rec/T-REC-E.164/) sms_enabled: type: boolean description: If this driver can receive Loadsmart text messages default: true location: type: object description: Driver's last location readOnly: true required: - id - name example: data: id: 9ba86ef0-7c8f-487e-a7f9-60515078d9a2 name: Flobbidinous Floop phone_number: '+19772914537' sms_enabled: true location: null owner_operator_id: 13e32bca-178f-439c-b6e5-3348602f6b2c '404': description: Driver not found content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: object_not_found error_description: Object not found '422': description: Invalid or missing data content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: invalid_data error_description: Can't create the object errors: field_name: - This field is required. other_field: - Expected string but received integer. delete: summary: Delete a driver tags: - Carrier security: - User-JWT: - carrier_write responses: '204': description: Driver was deleted '404': description: Driver not found content: application/json: schema: type: object properties: error: type: string enum: - invalid_data error_description: type: string description: Description of what happened errors: type: object description: Object where each field is a key and the value is an array of errors required: - error - error_description example: error: object_not_found error_description: Object not found components: securitySchemes: bearer: scheme: bearer bearerFormat: JWT type: http