FRAYT · Schema
MatchStopResponse
Response schema showing the stop
CompanyLast Mile DeliveryLogisticsCouriersOn-Demand DeliveryShippingFreightSupply ChainTransportationThird Party LogisticsDelivery TrackingWebhook
Properties
| Name | Type | Description |
|---|---|---|
| arrived_at | string | Time the driver arrived at the Stop |
| cargo_location | string | Location where the cargo was left |
| cargo_location_required | boolean | Whether a cargo location is required for this stop |
| delivered_at | string | Time the Stop was delivered |
| delivery_notes | stringnull | Notes for the driver regarding delivery |
| destination_address | object | The dropoff point for this Stop |
| destination_photo | string | DEPRECATED - URL linking to POD photo, will be fully replaced by `destinaton_photos` |
| destination_photo_required | boolean | Whether a POD photo is required |
| destination_photos | array | List of URLs linking to POD photos |
| driver_tip | number | Additional tip for the driver in US dollars ($) |
| dropoff_by | stringnull | The latest the driver should arrive at this Stop |
| electronic_bill_of_lading_photo | string | URL linking to EBoL photo |
| has_load_fee | boolean | Set to `true` if the driver will be required to unload the items |
| id | string | Unique identifier for Match Stop |
| id_verification_required | boolean | Whether ID verification is required |
| id_verified_at | string | Time the id was verified |
| identifier | stringnull | Unique identifier from external system. This will be returned in all responses, including webhooks. |
| index | integer | DEPRECATED (look at route_index, instead) - The order that each Stop will be delivered in. |
| items | array | Items to be delivered at this Stop |
| minimum_age | integer | Minimum age required for delivery |
| needs_pallet_jack | boolean | Set to `true` if the driver will be required to unload pallets from a box truck with a pallet jack |
| po | stringnull | PO or Job Number for this Match Stop |
| recipient | objectnull | Contact for this stop's recipient |
| route_index | integer | The order that each Stop will be delivered in. |
| self_recipient | boolean | When set to `true`, `recipient_name`, `recipient_phone`, and `recipient_email` will be ignored |
| signature_instructions | stringnull | Required for photo signatures. Instructions for the driver to sign |
| signature_name | string | Name entered by the signee when accepting the delivery |
| signature_photo | string | URL linking to photo of signees signature |
| signature_required | booleannull | When set to `true`, Drivers will require requesting the customer's signature at delivery time. |
| signature_type | stringnull | Type of signature required |
| state | string | Current Stop state. A successful Match Stop will transition through some or all of these states: Pending –> En Route –> Arrived –> Signed –> Delivered –> Returned Re Routed thi |
| state_transition | object | |
| timeframe | object | Timeframes for this Stop |
| tracking_url | string | URL to track the delivery |
| travel_duration | integer | Travel Duration to this Stop |
| undeliverable_at | stringnull | Time the Stop was marked as unable to be delivered |
| undeliverable_code | stringnull | Reason a Stop was marked as unable to be delivered |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/frayt/main/json-schema/frayt-match-stop-response-schema.json",
"title": "MatchStopResponse",
"description": "Response schema showing the stop",
"x-generated": "2026-10-20",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/frayt-matches-api-openapi.yml#/components/schemas/MatchStopResponse",
"properties": {
"arrived_at": {
"description": "Time the driver arrived at the Stop",
"format": "date-time",
"type": "string"
},
"cargo_location": {
"description": "Location where the cargo was left",
"enum": [
"left_at_front_door",
"left_at_mailroom_concierge",
"left_at_side_rear_door",
"left_with_neighbour",
"left_behind_gate_fence",
"left_at_lobby_entry_way",
"handed_to_customer"
],
"type": "string"
},
"cargo_location_required": {
"description": "Whether a cargo location is required for this stop",
"type": "boolean"
},
"delivered_at": {
"description": "Time the Stop was delivered",
"format": "date-time",
"type": "string"
},
"delivery_notes": {
"description": "Notes for the driver regarding delivery",
"type": [
"string",
"null"
]
},
"destination_address": {
"description": "The dropoff point for this Stop",
"oneOf": [
{
"$ref": "#/$defs/Address"
}
],
"type": "object"
},
"destination_photo": {
"description": "DEPRECATED - URL linking to POD photo, will be fully replaced by `destinaton_photos`",
"format": "uri",
"type": "string"
},
"destination_photo_required": {
"description": "Whether a POD photo is required",
"type": "boolean"
},
"destination_photos": {
"description": "List of URLs linking to POD photos",
"type": "array"
},
"driver_tip": {
"description": "Additional tip for the driver in US dollars ($)",
"format": "double",
"type": "number"
},
"dropoff_by": {
"description": "The latest the driver should arrive at this Stop",
"format": "date-time",
"type": [
"string",
"null"
]
},
"electronic_bill_of_lading_photo": {
"description": "URL linking to EBoL photo",
"format": "uri",
"type": "string"
},
"has_load_fee": {
"default": true,
"description": "Set to `true` if the driver will be required to unload the items",
"type": "boolean"
},
"id": {
"description": "Unique identifier for Match Stop",
"type": "string"
},
"id_verification_required": {
"description": "Whether ID verification is required",
"type": "boolean"
},
"id_verified_at": {
"description": "Time the id was verified",
"format": "date-time",
"type": "string"
},
"identifier": {
"description": "Unique identifier from external system. This will be returned in all responses, including webhooks.",
"type": [
"string",
"null"
]
},
"index": {
"description": "DEPRECATED (look at route_index, instead) - The order that each Stop will be delivered in.",
"type": "integer"
},
"items": {
"description": "Items to be delivered at this Stop",
"items": {
"$ref": "#/$defs/MatchStopItem"
},
"minItems": 1,
"type": "array"
},
"minimum_age": {
"description": "Minimum age required for delivery",
"type": "integer"
},
"needs_pallet_jack": {
"default": false,
"description": "Set to `true` if the driver will be required to unload pallets from a box truck with a pallet jack",
"type": "boolean"
},
"po": {
"description": "PO or Job Number for this Match Stop",
"type": [
"string",
"null"
]
},
"recipient": {
"description": "Contact for this stop's recipient",
"oneOf": [
{
"$ref": "#/$defs/Contact"
}
],
"type": [
"object",
"null"
]
},
"route_index": {
"description": "The order that each Stop will be delivered in.",
"type": "integer"
},
"self_recipient": {
"default": true,
"description": "When set to `true`, `recipient_name`, `recipient_phone`, and `recipient_email` will be ignored",
"type": "boolean"
},
"signature_instructions": {
"description": "Required for photo signatures. Instructions for the driver to sign",
"type": [
"string",
"null"
]
},
"signature_name": {
"description": "Name entered by the signee when accepting the delivery",
"type": "string"
},
"signature_photo": {
"description": "URL linking to photo of signees signature",
"format": "uri",
"type": "string"
},
"signature_required": {
"description": "When set to `true`, Drivers will require requesting the customer's signature at delivery time.",
"type": [
"boolean",
"null"
]
},
"signature_type": {
"default": "electronic",
"description": "Type of signature required",
"enum": [
"photo",
"electronic",
"electronic_bill_of_lading"
],
"type": [
"string",
"null"
]
},
"state": {
"description": "Current Stop state.<br/>\n<br/>A successful Match Stop will transition through some or all of these states:<br/>\nPending –> En Route –> Arrived –> Signed –> Delivered –> Returned\n<hr/>\nRe Routed <i>this is a dummy stop for recordkeeping purposes. The original stop has been modified.</i><br/>Unserved <i>this stop was unable to be served in a Match. This state is only possible for Batches. A reason will be provided.</i><br/>Undeliverable <i>the driver was unable to deliver this stop. A reason will be provided.</i><br/>Pending <i>the driver is not yet en route. This is the starting state.</i><br/>En Route <i>the driver is en route to the stop</i><br/>Arrived <i>the driver has arrived at the stop</i><br/>Signed <i>the recipient has signed for the delivery of the items</i><br/>Delivered <i>the driver has completed the delivery of all items</i><br/>Returned <i>the driver has returned the package.</i>\n",
"enum": [
"arrived",
"delivered",
"en_route",
"pending",
"re_routed",
"returned",
"signed",
"undeliverable",
"unserved"
],
"type": "string"
},
"state_transition": {
"oneOf": [
{
"$ref": "#/$defs/StateTransition"
}
],
"type": "object"
},
"timeframe": {
"description": "Timeframes for this Stop",
"oneOf": [
{
"$ref": "#/$defs/Stop_Timeframe"
}
],
"type": "object"
},
"tracking_url": {
"description": "URL to track the delivery",
"format": "uri",
"type": "string"
},
"travel_duration": {
"description": "Travel Duration to this Stop",
"type": "integer"
},
"undeliverable_at": {
"description": "Time the Stop was marked as unable to be delivered",
"format": "date-time",
"type": [
"string",
"null"
]
},
"undeliverable_code": {
"description": "Reason a Stop was marked as unable to be delivered",
"enum": [
"unable_to_locate_address",
"incorrect_address",
"recipient_refused_delivery",
"unable_to_access_location",
"unable_to_verify_id",
"business_closed",
"missing_item",
"damaged_item",
"out_of_time_returned"
],
"type": [
"string",
"null"
]
}
},
"type": "object",
"$defs": {
"Address": {
"description": "A Goecoded address",
"properties": {
"address": {
"description": "Address line 1",
"type": "string"
},
"address2": {
"description": "Address line 2",
"type": "string"
},
"city": {
"description": "City",
"type": "string"
},
"country_code": {
"description": "Country",
"type": "string"
},
"formatted_address": {
"description": "Combined address components in a human readable string",
"type": "string"
},
"lat": {
"description": "Latitude point of address",
"format": "float",
"type": "number"
},
"lng": {
"description": "Longitude point of address",
"format": "float",
"type": "number"
},
"name": {
"description": "The name of this address. This could be a store name, a park, or any other name",
"type": "string"
},
"neighborhood": {
"description": "The general neighborhood the address is located in",
"type": "string"
},
"state": {
"description": "Full state name",
"type": "string"
},
"state_code": {
"description": "State code (e.g. OH)",
"type": "string"
},
"zip": {
"description": "Zipcode",
"type": "string"
}
},
"title": "Address",
"type": "object"
},
"Barcode_Reading": {
"description": "",
"properties": {
"barcode": {
"description": "Barcode for Match Stop Item",
"type": "string"
},
"inserted_at": {
"description": "The date & time this reading was created",
"format": "date-time",
"type": "string"
},
"photo": {
"description": "Item photo. A photo should be taken when a barcode can't be read",
"type": "string"
},
"state": {
"description": "State of reading it could be captured, missing or verified",
"enum": [
"captured",
"missing",
"verified"
],
"type": "string"
},
"type": {
"description": "Reading type it could be pickup or delivery",
"enum": [
"pickup",
"delivery"
],
"type": "string"
}
},
"title": "Barcode Reading",
"type": "object"
},
"Contact": {
"description": "A contact",
"properties": {
"email": {
"description": "Contact's email address",
"format": "email",
"type": [
"string",
"null"
]
},
"name": {
"description": "Contact's first name and last name",
"type": "string"
},
"notify": {
"description": "Set to `false` if the contact should not receive SMS and email notifications regarding the status of this shipment",
"type": "boolean"
},
"phone_number": {
"description": "Contact's phone number in the general international format for telephone numbers (E.164)",
"type": [
"string",
"null"
]
}
},
"required": [
"name"
],
"title": "Contact",
"type": "object"
},
"MatchStopItem": {
"description": "An Item to be delivered to a stop",
"properties": {
"barcode": {
"description": "Value of barcode to be scanned for this item",
"type": [
"string",
"null"
]
},
"barcode_delivery_required": {
"description": "Barcode reading is required for this item on delivery",
"type": "boolean"
},
"barcode_pickup_required": {
"description": "Barcode reading is required for this item on pickup",
"type": "boolean"
},
"barcode_readings": {
"description": "",
"items": {
"$ref": "#/$defs/Barcode_Reading"
},
"type": "array"
},
"container_barcode": {
"description": "Value of barcode for the container this item is in",
"type": [
"string",
"null"
]
},
"declared_value": {
"description": "Declared value of the item being shipped in US cents (¢)",
"type": "integer"
},
"description": {
"type": "string"
},
"height": {
"description": "Individual height of each piece in inches",
"type": [
"number",
"null"
]
},
"id": {
"description": "Unique identifier for Match Stop Item",
"type": "string"
},
"length": {
"description": "Individual length of each piece in inches",
"type": [
"number",
"null"
]
},
"pieces": {
"description": "Number of items that match these dimensions",
"type": "integer"
},
"stop_id": {
"description": "Unique identifier for Match Stop",
"type": "string"
},
"type": {
"default": "item",
"description": "Type of item. When at least one item is a pallet, `needs_pallet_jack` will be an avaialable add-on.",
"enum": [
"item",
"pallet",
"lumber",
"sheet_rock",
"tv"
],
"type": "string"
},
"volume": {
"description": "Individual volume of each piece in cubic inches (in³). If left empty, it will be calculated automatically based off of other dimensions",
"type": [
"integer",
"null"
]
},
"weight": {
"description": "Individual weight of each piece in pounds",
"type": "number"
},
"width": {
"description": "Individual width of each piece in inches",
"type": [
"number",
"null"
]
}
},
"title": "MatchStopItem",
"type": "object"
},
"StateTransition": {
"description": "Details regarding a record's transition from one state to another",
"properties": {
"from": {
"description": "State that the record transitioned from",
"type": "string"
},
"match_id": {
"description": "ID of the match if this is a match-level transition",
"type": [
"string",
"null"
]
},
"notes": {
"description": "Notes contain additional information regarding the state transition.",
"type": "string"
},
"stop_id": {
"description": "ID of the stop if this is a stop-level transition",
"type": [
"string",
"null"
]
},
"to": {
"description": "State that the record transitioned to",
"type": "string"
},
"updated_at": {
"description": "Date & time of state transition",
"format": "date-time",
"type": "string"
}
},
"title": "StateTransition",
"type": "object"
},
"Stop_Timeframe": {
"description": "Timeframes for a stop",
"properties": {
"planned": {
"description": "Planned timeframe for the stop, calculated at the driver's accepted time",
"oneOf": [
{
"$ref": "#/$defs/Timeframe"
}
],
"type": "object"
},
"scheduled": {
"description": "Scheduled timeframe for the stop, calculated at the shipper's scheduled time",
"oneOf": [
{
"$ref": "#/$defs/Timeframe"
}
],
"type": "object"
}
},
"title": "Stop Timeframe",
"type": "object"
},
"Timeframe": {
"description": "Timeframe for a stop",
"properties": {
"earliest_arrival": {
"description": "Earliest expected arrival time at the stop",
"format": "date-time",
"type": "string"
},
"end_time": {
"deprecated": true,
"description": "Deprecated: use latest_arrival instead",
"format": "date-time",
"type": "string"
},
"latest_arrival": {
"description": "Latest expected arrival time at the stop",
"format": "date-time",
"type": "string"
},
"latest_completion": {
"description": "Latest expected completion time at the stop (latest_arrival + handling)",
"format": "date-time",
"type": "string"
},
"start_time": {
"deprecated": true,
"description": "Deprecated: use earliest_arrival instead",
"format": "date-time",
"type": "string"
},
"updated_at": {
"description": "Timestamp of the last update to the timeframe",
"format": "date-time",
"type": "string"
}
},
"title": "Timeframe",
"type": "object"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/frayt-match-stop-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.