Properties
| Name | Type | Description |
|---|---|---|
| lineOfBusiness | object | |
| shipmentDate | object | |
| outboundShipment | object | |
| trackingReferenceInformation | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/purolator/main/json-schema/purolator-freight-estimate-request-schema.json",
"title": "FreightEstimateRequest",
"x-generated": "2026-10-13",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/purolator-estimate-openapi.yml#/components/schemas/FreightEstimateRequest",
"allOf": [
{
"$ref": "#/$defs/EstimateRequest"
},
{
"type": "object",
"required": [
"outboundShipment"
],
"properties": {
"outboundShipment": {
"$ref": "#/$defs/OutboundShipmentFreight"
},
"trackingReferenceInformation": {
"$ref": "#/$defs/TrackingReferenceInformation"
}
}
}
],
"$defs": {
"AddressLine": {
"type": "object",
"required": [
"Address"
],
"properties": {
"Address": {
"type": "string",
"maximum": 40,
"description": "Street address line."
}
}
},
"BillingInformation": {
"type": "object",
"required": [
"billingAccountNumber"
],
"properties": {
"billingAccountNumber": {
"type": "string",
"maximum": 10,
"description": "The account number that would be billed for this shipment. Used to associate user-level discounts and other info that contributes to the rate estimate."
},
"displayPublishedRates": {
"type": "boolean",
"description": "Whether to non-discounted (published) rates. If not present or false, defaults to display account rates",
"default": false
}
}
},
"BoolValuePair": {
"type": "object",
"required": [
"keyword",
"keywordValue"
],
"properties": {
"keyword": {
"type": "string",
"enum": [
"2MEN",
"APPT",
"ID",
"MULT DRP",
"OFFDAY",
"RESID",
"TAILGATE",
"TSDEL",
"VALUE",
"DG",
"DGPL",
"HEAT",
"PREAPPT"
],
"description": "Optional accessorial parameter keywords."
},
"keywordValue": {
"type": "boolean",
"description": "Whether the keyword value in this object should be true or false."
}
}
},
"EstimateRequest": {
"type": "object",
"required": [
"lineOfBusiness"
],
"properties": {
"lineOfBusiness": {
"$ref": "#/$defs/LineOfBusiness"
},
"shipmentDate": {
"$ref": "#/$defs/ShipmentDate"
}
}
},
"FreightPackageInformation": {
"allOf": [
{
"$ref": "#/$defs/FreightServiceId"
},
{
"$ref": "#/$defs/PackageInformationDateUOMBase"
},
{
"type": "object",
"properties": {
"declaredValue": {
"type": "number",
"format": "double",
"multipleOf": 0.01,
"description": "$2 per pound maximum."
},
"codAmount": {
"type": "number",
"format": "double",
"minimum": 0,
"maximum": 100000,
"multipleOf": 0.01,
"description": "Cash on delivery amount."
}
}
},
{
"$ref": "#/$defs/PackageInformationSpecialInstructionsBase"
},
{
"type": "object",
"required": [
"lineItemDetails"
],
"properties": {
"lineItemDetails": {
"type": "array",
"items": {
"$ref": "#/$defs/LineItemRequest"
},
"minimum": 1
},
"accessorialParameters": {
"type": "array",
"items": {
"$ref": "#/$defs/BoolValuePair"
}
}
}
}
]
},
"FreightServiceId": {
"type": "object",
"required": [
"serviceId"
],
"properties": {
"serviceId": {
"type": "string",
"maximum": 128,
"description": "The service name being used. Case-insensitive",
"enum": [
"PurolatorFreightExpedited",
"PurolatorFreightStandard"
]
}
}
},
"LineItemBase": {
"type": "object",
"required": [
"lineItem",
"pieces",
"handlingUnit",
"handlingUnitType"
],
"properties": {
"lineItem": {
"type": "integer",
"description": "Line item number of the corresponding shipment description."
},
"pieces": {
"type": "integer",
"description": "Number of pieces on the handling unit"
},
"handlingUnit": {
"type": "integer",
"description": "Number of handling units"
},
"handlingUnitType": {
"type": "string",
"enum": [
"PALLET",
"BOX",
"SKID",
"REEL",
"ROLL",
"BIN",
"BUNDLE",
"CAGE",
"UNIT",
"DRUM"
],
"description": "Type of handling unit"
},
"description": {
"type": "string",
"maximum": 250,
"description": "Description of handling unit type"
},
"freightClass": {
"type": "string",
"description": ""
}
}
},
"LineItemRequest": {
"allOf": [
{
"$ref": "#/$defs/LineItemBase"
},
{
"$ref": "#/$defs/LineItemRequestMeasurements"
}
]
},
"LineItemRequestMeasurements": {
"type": "object",
"required": [
"weight"
],
"properties": {
"weight": {
"type": "number",
"format": "double",
"multipleOf": 0.01,
"maximum": 100000,
"minimum": 0,
"exclusiveMinimum": true,
"exclusiveMaximum": true,
"description": "Weight of the line item in your selected unit of measure (kg or lbs). Weight must be greater than 0."
},
"length": {
"type": "number",
"format": "double",
"multipleOf": 0.01,
"maximum": 10000,
"minimum": 0,
"exclusiveMaximum": true,
"exclusiveMinimum": true,
"description": "Length of the line item in your selected unit of measure (in or cm). If you supply dimensions, you must supply length, width and height."
},
"width": {
"type": "number",
"format": "double",
"multipleOf": 0.01,
"maximum": 10000,
"minimum": 0,
"exclusiveMaximum": true,
"exclusiveMinimum": true,
"description": "Width of the line item in your selected unit of measure (in or cm). If you supply dimensions, you must supply length, width and height"
},
"height": {
"type": "number",
"format": "double",
"multipleOf": 0.01,
"maximum": 10000,
"minimum": 0,
"exclusiveMaximum": true,
"exclusiveMinimum": true,
"description": "Height of the line item in your selected unit of measure (in or cm). If you supply dimensions, you must supply length, width and height"
}
}
},
"LineOfBusiness": {
"type": "string",
"enum": [
"Freight",
"Courier"
],
"description": "Line of business which the estimate is for. Case-insensitive."
},
"OutboundShipmentBase": {
"type": "object",
"required": [
"senderInformation",
"receiverInformation",
"billingInformation"
],
"properties": {
"billingInformation": {
"$ref": "#/$defs/BillingInformation"
},
"senderInformation": {
"$ref": "#/$defs/SenderAddress"
},
"receiverInformation": {
"$ref": "#/$defs/ReceiverAddress"
}
}
},
"OutboundShipmentFreight": {
"allOf": [
{
"$ref": "#/$defs/OutboundShipmentBase"
},
{
"type": "object",
"required": [
"shipmentInformation"
],
"properties": {
"shipmentInformation": {
"$ref": "#/$defs/FreightPackageInformation"
}
}
}
]
},
"PackageInformationDateUOMBase": {
"type": "object",
"properties": {
"unitOfMeasurement": {
"type": "string",
"enum": [
"Metric",
"Imperial"
],
"default": "Imperial",
"description": "The unit of measurement used for package weight and lengths. Imperial uses pounds and inches, while metric uses kilograms and centimeters. If not provided, defaults to imperial."
}
}
},
"PackageInformationSpecialInstructionsBase": {
"type": "object",
"properties": {
"specialInstructions": {
"type": "string",
"maximum": 250,
"description": ""
}
}
},
"ReceiverAddress": {
"type": "object",
"required": [
"city",
"country",
"postalZipCode"
],
"properties": {
"companyName": {
"type": "string",
"maximum": 30,
"description": "Company Name information."
},
"streetAddress": {
"type": "array",
"maximum": 3,
"items": {
"$ref": "#/$defs/AddressLine"
},
"description": "Maximum 3 addresses allowed. Each address has a max length of 40 characters"
},
"city": {
"type": "string",
"maximum": 40,
"description": "City"
},
"provinceStateCode": {
"type": "string",
"maximum": 40,
"description": "2 character code for the Province/State, required for Canadian and US addresses. Note that currently only Canadian addresses are accepted for the sender. Valid Province Codes for Canada: AB, BC, MB, NB, NL, NS, NT, NU, ON, PE, QC, SK, YT. Valid State Codes for US: AK, AL, AR, AZ, CA, CO, CT, DC, DE, FL, GA, HI, IA, ID, IL, IN, KS, KY, LA, MA, MD, ME, MI, MN, MO, MS, MT, NC, ND, NE, NH, NJ, NM, NV, NY, OH, OK, OR, PA, RI, SC, SD, TN, TX, UT, VA, VT, WA, WI, WV, WY."
},
"country": {
"type": "string",
"maximum": 2,
"enum": [
"AD",
"AE",
"AF",
"AG",
"AI",
"AL",
"AM",
"AN",
"AO",
"AQ",
"AR",
"AS",
"AT",
"AU",
"AW",
"AX",
"AZ",
"BA",
"BB",
"BD",
"BE",
"BF",
"BG",
"BH",
"BI",
"BJ",
"BL",
"BM",
"BN",
"BO",
"BR",
"BS",
"BT",
"BV",
"BW",
"BY",
"BZ",
"CA",
"CC",
"CD",
"CF",
"CG",
"CH",
"CI",
"CK",
"CL",
"CM",
"CN",
"CO",
"CR",
"CU",
"CV",
"CX",
"CY",
"CZ",
"DE",
"DJ",
"DK",
"DM",
"DO",
"DZ",
"EC",
"EE",
"EG",
"EH",
"ER",
"ES",
"ET",
"EU",
"FI",
"FJ",
"FK",
"FM",
"FO",
"FR",
"GA",
"GB",
"GD",
"GE",
"GF",
"GG",
"GH",
"GI",
"GL",
"GM",
"GN",
"GP",
"GQ",
"GR",
"GS",
"GT",
"GU",
"GW",
"GY",
"HK",
"HM",
"HN",
"HR",
"HT",
"HU",
"IC",
"ID",
"IE",
"IL",
"IM",
"IN",
"IO",
"IQ",
"IR",
"IS",
"IT",
"JE",
"JM",
"JO",
"JP",
"KE",
"KG",
"KH",
"KI",
"KM",
"KN",
"KP",
"KR",
"KW",
"KY",
"KZ",
"LA",
"LB",
"LC",
"LI",
"LK",
"LR",
"LS",
"LT",
"LU",
"LV",
"LY",
"MA",
"MC",
"MD",
"ME",
"MG",
"MH",
"MK",
"ML",
"MM",
"MN",
"MO",
"MP",
"MQ",
"MR",
"MS",
"MT",
"MU",
"MV",
"MW",
"MX",
"MY",
"MZ",
"NA",
"NC",
"NE",
"NF",
"NG",
"NI",
"NL",
false,
"NP",
"NR",
"NT",
"NU",
"NZ",
"OM",
"OR",
"PA",
"PE",
"PF",
"PG",
"PH",
"PK",
"PL",
"PM",
"PN",
"PR",
"PS",
"PT",
"PW",
"PY",
"QA",
"RE",
"RO",
"RS",
"RU",
"RW",
"SA",
"SB",
"SC",
"SD",
"SE",
"SG",
"SH",
"SI",
"SJ",
"SK",
"SL",
"SM",
"SN",
"SO",
"SR",
"ST",
"SV",
"SY",
"SZ",
"TC",
"TD",
"TF",
"TG",
"TH",
"TJ",
"TK",
"TL",
"TM",
"TN",
"TO",
"TP",
"TR",
"TT",
"TV",
"TW",
"TZ",
"UA",
"UG",
"UM",
"UN",
"US",
"UY",
"UZ",
"VA",
"VC",
"VE",
"VG",
"VI",
"VN",
"VU",
"WF",
"WS",
"XB",
"XC",
"XE",
"XM",
"XN",
"XS",
"XY",
"YE",
"YT",
"ZA",
"ZM",
"ZW",
"ZZ"
],
"description": "2-character CountryCode. Valid codes are: AD, AE, AF, AG, AI, AL, AM, AN, AO, AQ, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BR, BS, BT, BV, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, EU, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HM, HN, HR, HT, HU, IC, ID, IE, IL, IM, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NT, NU, NZ, OM, OR, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, ST, SV, SY, SZ, TC, TD, TF, TG, TH, TJ, TK, TL, TM, TN, TO, TP, TR, TT, TV, TW, TZ, UA, UG, UM, UN, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, XB, XC, XE, XM, XN, XS, XY, YE, YT, ZA, ZM, ZW, ZZ."
},
"postalZipCode": {
"type": "string",
"maximum": 10,
"description": "Canadian Postal Code or USA Zip Code or Intl Postal Code. Only Canadian and US postal codes are required."
}
}
},
"SenderAddress": {
"type": "object",
"required": [
"city",
"provinceStateCode",
"country",
"postalZipCode"
],
"properties": {
"companyName": {
"type": "string",
"maximum": 30,
"description": "Company Name information."
},
"streetAddress": {
"type": "array",
"maximum": 3,
"minimum": 1,
"items": {
"$ref": "#/$defs/AddressLine"
},
"description": "Maximum 3 addresses allowed. Each address has a max length of 40 characters"
},
"city": {
"type": "string",
"maximum": 40,
"description": "City"
},
"provinceStateCode": {
"type": "string",
"maximum": 40,
"enum": [
"AB",
"BC",
"MB",
"NB",
"NL",
"NS",
"NT",
"NU",
true,
"PE",
"QC",
"SK",
"YT"
],
"description": "2 character code for the Province/State, required for Canadian and US addresses. Note that currently only Canadian addresses are accepted for the sender. Valid Province Codes for Canada: AB, BC, MB, NB, NL, NS, NT, NU, ON, PE, QC, SK, YT."
},
"country": {
"type": "string",
"maximum": 2,
"enum": [
"CA"
],
"description": "2-character CountryCode. Note that currently only Canadian addresses are accepted for the sender."
},
"postalZipCode": {
"type": "string",
"maximum": 10,
"description": "Canadian Postal Code or USA Zip Code or Intl Postal Code. Note that currently only Canadian addresses are accepted for the sender."
}
}
},
"ShipmentDate": {
"type": "string",
"format": "date",
"default": "Today's Date",
"description": "Date of shipment. Up to 10 days in advance. Date format: YYYY-MM-DD. If not present, default to today's date."
},
"TrackingReference": {
"type": "string",
"maximum": 35,
"description": "Tracking reference information"
},
"TrackingReferenceInformation": {
"type": "object",
"properties": {
"reference1": {
"$ref": "#/$defs/TrackingReference"
},
"reference2": {
"$ref": "#/$defs/TrackingReference"
},
"reference3": {
"$ref": "#/$defs/TrackingReference"
},
"reference4": {
"$ref": "#/$defs/TrackingReference"
},
"reference5": {
"$ref": "#/$defs/TrackingReference"
}
}
}
}
}
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/purolator-freight-estimate-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.