Purolator · Schema

FreightEstimateRequest

CompanyShippingLogisticsCouriersFreight

Properties

Name Type Description
lineOfBusiness object
shipmentDate object
outboundShipment object
trackingReferenceInformation object
View JSON Schema on GitHub

JSON Schema

purolator-freight-estimate-request-schema.json Raw ↑
{
  "$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.
All 92 tools →

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.