Loadsmart Load Offers API
This API allows third parties to search and accept available Offers. ## Webhook events There are few webhook events that can be triggered related to Load Offers API. The following example refers to the webhook events `load_carrier_bounced` and `load_cancelled`: ``` { "event": "load_carrier_bounced", "data": { "load_id": "2ed37107-ebe7-4a60-a20f-01d4e74355c8", "load": { "id": "2ed37107-ebe7-4a60-a20f-01d4e74355c8", "active_offer": { "id": "ccd37107-ebe7-4a60-a20f-01d4e74355c8", "price": 1234.56 }, "carrier": { "id": "89ef54c7-52d5-44a0-b94d-df41eb1aab15", "mc": 123456, "dot": 987654 }, "commodity": "BOTTLED WATER", "distance": 353.6, "equipment_type": "DRV", "requirements": { "beer": false, "chemicals": null, "ctpat": null, "food_grade": null, "frozen": null, "hazmat": null, "hvhr": null, "pharmaceuticals": null, "produce": null, "teams": null, "tsa": null, "twic": null, "vented_vans": null, }, "stops": [ { "address": "109 Poland Spring Dr", "city": "Poland", "country": "USA", "latitude": 44.031602, "longitude": -70.355065, "state": "ME", "type": "PU", "window_end": "2019-11-28T08:00:00+00:00", "window_start": "2019-11-28T06:00:00+00:00", "window_timezone": "America/New_York", "requirements": null, "facility_info": { "avg_time_spent":{ "pickup":40, "delivery": null }, "detention_rate": 4 } }, { "address": "6 Westbelt", "city": "Wayne", "country": "USA", "latitude": 40.900033, "longitude": -74.264872, "state": "NJ", "type": "DEL", "window_end": "2019-11-29T19:00:00+00:00", "window_start": "2019-11-29T17:00:00+00:00", "window_timezone": "America/New_York", "requirements": null, "facility_info": { "avg_time_spent":{ "pickup":null, "delivery": 20 }, "detention_rate": 9 } }, ], "numberweight": 45000.0, "dimensions": {"width": 8.00, "height": 9.00, "length": 54.00} "ref_number": "41324" } } } ``` The following example refers to the webhook events `offer_created` and `offer_removed`: ``` { "event": "offer_created", "data": { "offer": { "id": "ccd37107-ebe7-4a60-a20f-01d4e74355c8", "price": 1234.56, "load": { "equipment_type": "DRV", "commodity": "apples", "weight": 20000, "dimensions": {"width": 8.00, "height": 9.00, "length": 54.00} "distance": 50000, "stops": [ { "type": "PU", "address": "101 Collins Avenue", "city": "Miami Beach", "state": "FL", "country": "USA", "requirements": { "blind_bol": false, "drop_trailer": false, "heavy_scale_ticket": false, "light_scale_ticket": false }, "facility_info": { "avg_time_spent":{ "pickup":40, "delivery": null }, "detention_rate": 4 } "zipcode": "33139", "window_start": "2020-02-13T09:00:00", "window_end": "2018-02-13T11:00:00", "window_timezone": "America/New_York" }, { "type": "DEL", "address": "2022 Collins Avenue", "city": "Miami Beach", "state": "FL", "country": "USA", "requirements": { "blind_bol": false, "drop_trailer": false, "heavy_scale_ticket": false, "light_scale_ticket": false }, "facility_info": { "avg_time_spent":{ "pickup":null, "delivery": 20 }, "detention_rate": 9 } "window_start": "2018-02-14T16:00:00", "window_end": "2018-02-14T18:00:00", "window_timezone": "America/New_York" } ], "requirements": { "beer": false, "chemicals": false, "ctpat": false, "food_grade": false, "frozen": false, "hazmat": false, "hvhr": false, "pharmaceuticals": false, "produce": false, "teams": false, "tsa": false, "twic": false, "vented_vans": false }, "ref_number": "425631" }, "actions": { "redirect_url": "https://loadsmart.com/loads/#/eec5677f-883c-4696-b13b-7539fa98e098", "accept_url": "https://api.loadsmart.com/api/v2/load-offers/offers/ccd37107-ebe7-4a60-a20f-01d4e74355c8/accept" } } } } ```
Documentation
Specifications
Other Resources
openapi: 3.0.0
info:
title: Opendock Nova API Documentation Appointments Load Offers 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<Connection URL>?token=<JWT 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: Load Offers
description: "This API allows third parties to search and accept\navailable Offers.\n\n## Webhook events\n\nThere are few webhook events that can be triggered related to Load Offers API.\nThe following example refers to the webhook events `load_carrier_bounced` and `load_cancelled`:\n```\n{\n \"event\": \"load_carrier_bounced\",\n \"data\": {\n \"load_id\": \"2ed37107-ebe7-4a60-a20f-01d4e74355c8\",\n \"load\": {\n \"id\": \"2ed37107-ebe7-4a60-a20f-01d4e74355c8\",\n \"active_offer\": {\n \"id\": \"ccd37107-ebe7-4a60-a20f-01d4e74355c8\",\n \"price\": 1234.56\n },\n \"carrier\": {\n \"id\": \"89ef54c7-52d5-44a0-b94d-df41eb1aab15\",\n \"mc\": 123456,\n \"dot\": 987654\n },\n \"commodity\": \"BOTTLED WATER\",\n \"distance\": 353.6,\n \"equipment_type\": \"DRV\",\n \"requirements\": {\n \"beer\": false,\n \"chemicals\": null,\n \"ctpat\": null,\n \"food_grade\": null,\n \"frozen\": null,\n \"hazmat\": null,\n \"hvhr\": null,\n \"pharmaceuticals\": null,\n \"produce\": null,\n \"teams\": null,\n \"tsa\": null,\n \"twic\": null,\n \"vented_vans\": null,\n },\n \"stops\": [\n {\n \"address\": \"109 Poland Spring Dr\",\n \"city\": \"Poland\",\n \"country\": \"USA\",\n \"latitude\": 44.031602,\n \"longitude\": -70.355065,\n \"state\": \"ME\",\n \"type\": \"PU\",\n \"window_end\": \"2019-11-28T08:00:00+00:00\",\n \"window_start\": \"2019-11-28T06:00:00+00:00\",\n \"window_timezone\": \"America/New_York\",\n \"requirements\": null,\n \"facility_info\": {\n \"avg_time_spent\":{\n \"pickup\":40,\n \"delivery\": null\n },\n \"detention_rate\": 4\n }\n },\n {\n \"address\": \"6 Westbelt\",\n \"city\": \"Wayne\",\n \"country\": \"USA\",\n \"latitude\": 40.900033,\n \"longitude\": -74.264872,\n \"state\": \"NJ\",\n \"type\": \"DEL\",\n \"window_end\": \"2019-11-29T19:00:00+00:00\",\n \"window_start\": \"2019-11-29T17:00:00+00:00\",\n \"window_timezone\": \"America/New_York\",\n \"requirements\": null,\n \"facility_info\": {\n \"avg_time_spent\":{\n \"pickup\":null,\n \"delivery\": 20\n },\n \"detention_rate\": 9\n }\n },\n ],\n \"numberweight\": 45000.0,\n \"dimensions\": {\"width\": 8.00, \"height\": 9.00, \"length\": 54.00}\n \"ref_number\": \"41324\"\n }\n }\n}\n```\n\nThe following example refers to the webhook events `offer_created` and `offer_removed`:\n```\n{\n \"event\": \"offer_created\",\n \"data\": {\n \"offer\": {\n \"id\": \"ccd37107-ebe7-4a60-a20f-01d4e74355c8\",\n \"price\": 1234.56,\n \"load\": {\n \"equipment_type\": \"DRV\",\n \"commodity\": \"apples\",\n \"weight\": 20000,\n \"dimensions\": {\"width\": 8.00, \"height\": 9.00, \"length\": 54.00}\n \"distance\": 50000,\n \"stops\": [\n {\n \"type\": \"PU\",\n \"address\": \"101 Collins Avenue\",\n \"city\": \"Miami Beach\",\n \"state\": \"FL\",\n \"country\": \"USA\",\n \"requirements\": {\n \"blind_bol\": false,\n \"drop_trailer\": false,\n \"heavy_scale_ticket\": false,\n \"light_scale_ticket\": false\n },\n \"facility_info\": {\n \"avg_time_spent\":{\n \"pickup\":40,\n \"delivery\": null\n },\n \"detention_rate\": 4\n }\n \"zipcode\": \"33139\",\n \"window_start\": \"2020-02-13T09:00:00\",\n \"window_end\": \"2018-02-13T11:00:00\",\n \"window_timezone\": \"America/New_York\"\n },\n {\n \"type\": \"DEL\",\n \"address\": \"2022 Collins Avenue\",\n \"city\": \"Miami Beach\",\n \"state\": \"FL\",\n \"country\": \"USA\",\n \"requirements\": {\n \"blind_bol\": false,\n \"drop_trailer\": false,\n \"heavy_scale_ticket\": false,\n \"light_scale_ticket\": false\n },\n \"facility_info\": {\n \"avg_time_spent\":{\n \"pickup\":null,\n \"delivery\": 20\n },\n \"detention_rate\": 9\n }\n \"window_start\": \"2018-02-14T16:00:00\",\n \"window_end\": \"2018-02-14T18:00:00\",\n \"window_timezone\": \"America/New_York\"\n }\n ],\n \"requirements\": {\n \"beer\": false,\n \"chemicals\": false,\n \"ctpat\": false,\n \"food_grade\": false,\n \"frozen\": false,\n \"hazmat\": false,\n \"hvhr\": false,\n \"pharmaceuticals\": false,\n \"produce\": false,\n \"teams\": false,\n \"tsa\": false,\n \"twic\": false,\n \"vented_vans\": false\n },\n \"ref_number\": \"425631\"\n },\n \"actions\": {\n \"redirect_url\": \"https://loadsmart.com/loads/#/eec5677f-883c-4696-b13b-7539fa98e098\",\n \"accept_url\": \"https://api.loadsmart.com/api/v2/load-offers/offers/ccd37107-ebe7-4a60-a20f-01d4e74355c8/accept\"\n }\n }\n }\n}\n```\n"
paths:
/api/v2/load-offers/offers:
get:
summary: Search offers
tags:
- Load Offers
security:
- Application-JWT:
- load_offers_read
description: 'Search offers
'
parameters:
- in: query
name: alcohol
schema:
description: Show only loads that have/don't have alcoholic commodity (shows all loads if not informed)
type: string
format: boolean
required: false
- in: query
name: equipment_type
schema:
description: "The type of truck used to transport the load:\n * `DRV` - Dry van\n * `FBE` - Flatbed\n * `RFR` - Reefer\n * `CON` - Conestoga\n * `CUR` - Curtainside\n * `DDP` - Double drop\n * `IMC` - Intermodal\n * `SDK` - Step deck\n * `STK` - Straight truck\n * `LTL` - Less than truckload\n * `BLK` - Bulk\n * `TNK` - Tanker\n * `OTH` - Others\n\nRepeat the query string in order to search for multiple types at the same time, e.g: `?equipment_type=DRV&equipment_type=FBE`\n"
type: string
enum:
- DRV
- FBE
- RFR
- CON
- CUR
- DDP
- IMC
- SDK
- STK
- LTL
- BLK
- TNK
- OTH
required: false
- in: query
name: start_date
schema:
description: Date
type: string
format: YYYY-MM-DD
required: false
- in: query
name: end_date
schema:
description: Date
type: string
format: YYYY-MM-DD
required: false
- in: query
name: origin_lat
schema:
description: Origin latitude
type: number
required: false
- in: query
name: origin_lon
schema:
description: Origin longitude
type: number
required: false
- in: query
name: origin_radius
schema:
description: Radius for origin field (Miles)
type: number
format: integer
required: false
- in: query
name: destination_lat
schema:
description: Destination latitude
type: number
required: false
- in: query
name: destination_lon
schema:
description: Destination longitude
type: number
required: false
- in: query
name: destination_radius
schema:
description: Radius for destitation field (Miles)
type: number
format: integer
required: false
- in: query
name: mc
schema:
description: Carrier's MC number
type: string
required: false
- in: query
name: dot
schema:
description: Carrier's DOT number
type: string
required: false
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
count:
description: Number of objects found
type: number
format: integer
next:
description: URL for next page of results
type: string
format: url
previous:
description: URL for previous page of results
type: string
format: url
results:
type: array
items:
type: object
properties:
id:
type: string
description: Offer unique identifier (UUID)
price:
type: number
description: Offer price (USD)
load:
type: object
properties:
equipment_type:
type: string
enum:
- DRV
- FBE
- RFR
- CON
- CUR
- DDP
- IMC
- SDK
- STK
- LTL
- BLK
- TNK
- OTH
description: The type of truck used to transport the load. Allowed values are DRV (dry van), FBE (flatbed), RFR (reefer), CON (conestoga), CUR (curtainside), DDP (double drop), IMC (intermodal), SDK (step deck), STK (straight truck), LTL (less than truckload), BLK (bulk), TNK (tanker) and OTH for others.
commodity:
type: string
maxLength: 255
description: Name or description of the commodity that is being shipped.
weight:
type: number
minimum: 1
description: Weight of the cargo in pounds (lbs).
dimensions:
type: object
description: 'Dimensions of the cargo in feet (ft).
A `null` dimension means that the information is unavailable.
'
properties:
weight:
type: number
nullable: true
height:
type: number
nullable: true
width:
type: number
nullable: true
distance:
type: number
minimum: 1
description: Total distance of the shipment, in miles. This counts all stops.
stops:
type: array
items:
type: object
properties:
type:
type: string
enum:
- PU
- DEL
description: Type of the stop. Pickup (PU) or Delivery (DEL).
address:
type: string
city:
type: string
state:
type: string
pattern: ^[A-Z0-9]{1,3}$
description: 'Up to 3-alphanumeric characters representing state or equivalent administrative boundary,
from the second part of ISO 3166-2 code definition.
For example, Florida is FL, since its ISO 3166-2 is US-FL.
'
country:
type: string
pattern: ^[A-Z]{3}$
description: 3 letter country code (ISO-3166-1 alpha3).
latitude:
type: number
description: Latitude coordinate of the stop
longitude:
type: number
description: Longitude coordinate of the stop
zipcode:
type: string
description: Zipcode of the stop (first five digits)
window_start:
type: string
format: naive date-time
description: A datetime that represents the start of a time window for this stop (pickup or delivery). In local time.
window_end:
type: string
format: naive date-time
description: A datetime that represents the start of a time window for this stop (pickup or delivery). In local time.
window_timezone:
type: string
description: A timezone identifier for the stop.
requirements:
type: array
description: 'A list of requirements for the Stop, such as drop_trailer, etc.
'
facility_info:
type: object
description: Detention rate and average waiting time on the facility
properties:
avg_time_spent:
type: object
description: Average waiting on facility
properties:
pickup:
type: number
description: Average waiting time in minutes for pickup
delivery:
type: number
description: Average waiting time in minutes for delivery
detention_rate:
type: number
description: Facility detention rate (0 to 100)
requirements:
type: object
description: 'Requirements for the load
'
properties:
beer:
type: boolean
chemicals:
type: boolean
ctpat:
type: boolean
food_grade:
type: boolean
frozen:
type: boolean
hazmat:
type: boolean
hvhr:
type: boolean
pharmaceuticals:
type: boolean
produce:
type: boolean
teams:
type: boolean
tsa:
type: boolean
twic:
type: boolean
vented_vans:
type: boolean
ref_number:
type: string
description: Human readable Load reference number.
required:
- ref_number
- equipment_type
actions:
type: object
properties:
redirect_url:
type: string
description: URL of offer on Loadsmart website.
accept_url:
type: string
description: URL to accept the offer via API (must be a POST method).
example:
count: 2
next: null
previous: null
results:
- id: ccd37107-ebe7-4a60-a20f-01d4e74355c8
price: 1234.56
load:
equipment_type: DRV
commodity: apples
weight: 20000
dimensions:
width: 8
height: 8
length: 54
distance: 50000
stops:
- type: PU
address: 101 Collins Avenue
city: Miami Beach
state: FL
country: USA
latitude: 41.203996
longitude: -96.115593
requirements:
blind_bol: false
drop_trailer: false
heavy_scale_ticket: false
light_scale_ticket: false
facility_info:
avg_time_spent:
pickup: 40
delivery: 180
detention_rate: 4
zipcode: '33139'
window_start: 2020-02-13 09:00:00
window_end: 2018-02-13 11:00:00
window_timezone: America/New_York
- type: DEL
address: 2022 Collins Avenue
city: Miami Beach
state: FL
country: USA
latitude: 42.535793
longitude: -70.966568
requirements:
blind_bol: false
drop_trailer: false
heavy_scale_ticket: false
light_scale_ticket: false
facility_info:
avg_time_spent:
pickup: 20
delivery: 20
detention_rate: 0
window_start: 2018-02-14 16:00:00
window_end: 2018-02-14 18:00:00
window_timezone: America/New_York
requirements:
beer: false
chemicals: false
ctpat: false
food_grade: false
frozen: false
hazmat: false
hvhr: false
pharmaceuticals: false
produce: false
teams: false
tsa: false
twic: false
vented_vans:
# --- truncated at 32 KB (125 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/loadsmart/refs/heads/main/openapi/loadsmart-load-offers-api-openapi.yml