{
 "type": "object",
 "required": [
  "bol",
  "version",
  "commodities",
  "payment",
  "origin",
  "destination",
  "billTo"
 ],
 "properties": {
  "bol": {
   "type": "object",
   "required": [
    "function",
    "requestedPickupDate",
    "isTest",
    "requestorRole"
   ],
   "properties": {
    "requestedPickupDate": {
     "type": "string",
     "example": "2022-11-20T00:00:00.000Z",
     "description": "Required\n\nThe intended Ship Date. NOTE this does not serve as a Pickup Request\n\nValid Formats:\n* YYYY-MM-DDTHH:mm:ss.sss (ISO 8601)\n"
    },
    "function": {
     "type": "string",
     "example": "Create",
     "description": "Required\n\nThe intent for the submitted request. Create is used for the initial creation\n\nValid Values:\n* Create\n"
    },
    "isTest": {
     "type": "boolean",
     "example": true,
     "description": "Required\nIndicates whether or not the submitted request is intended to be a test or not."
    },
    "requestorRole": {
     "type": "string",
     "example": "Shipper",
     "description": "Required \n\nIdentifies the party making the request.\n\nValid Values: \n* Shipper\n* Consignee\n* Third Party\n"
    },
    "specialInstructions": {
     "type": "string",
     "maximum": 500,
     "example": "Gate code 123 to enter complex",
     "description": "Optional\n\nSpecial delivery instructions that need to be followed for the shipment's delivery and will appear on the BOL.\n"
    }
   }
  },
  "version": {
   "type": "string",
   "example": "v2.0.1",
   "description": "Required\n\nIndicates which minor version of the Digital LTL Council Bill of Lading spec you are consuming\n\nValid values (not case sensitive): \n  * v2.0\n  * v2.0.1\n"
  },
  "images": {
   "type": "object",
   "properties": {
    "includeBol": {
     "type": "boolean",
     "example": true,
     "description": "Optional\n\nIndicates whether or not you want Base 64 encoded image of the  Bill Of Lading PDF returned in the response.  \n\nDefault is False.\n"
    },
    "includeShippingLabels": {
     "type": "boolean",
     "example": true,
     "description": "Optional\n\nIndicates whether or not you want Base 64 encoded image of the  shipping labels PDF returned in the response. \n\nDefault is False.\n"
    },
    "shippingLabels": {
     "type": "object",
     "properties": {
      "format": {
       "type": "string",
       "example": "Avery",
       "description": "Conditionally Required\n\nSpecifies the printer format type for the labels. \n\nRequired when images.includeShippingLabels is true. \n\nValid Values:\n * Avery2  -  8.5 x 5\n * Avery4  -  3.5 x 5\n * Avery -  3-1/3 x 4 (6 labels per sheet)\n * Letter  -  Standard letter sheet\n * Zebra  -  4 x 6 (1 label per sheet)\n"
      },
      "quantity": {
       "type": "integer",
       "minimum": 1,
       "maximum": 100,
       "example": 5,
       "description": "Conditionally Required\n\nSpecifies the quantity of labels desired. \n\nRequired when images.includeShippingLabels is True.\n"
      },
      "position": {
       "type": "integer",
       "example": 2,
       "description": "Conditionally Required\n\nSpecifies the starting position for the shipping labels.\n\nRequired when images.shippingLabel is Avery. \n\nValid Values:\n* 1, 2, 3, 4, 5 or 6\n"
      }
     }
    },
    "email": {
     "type": "object",
     "properties": {
      "includeBol": {
       "type": "boolean",
       "example": true,
       "description": "Optional\n\nUsed to request the bill of lading PDF to be sent to one or more email addresses\n"
      },
      "includeLabels": {
       "type": "boolean",
       "example": true,
       "description": "Optional\n\nUsed to request the shipping labels PDF to be sent to one or more email addresses\n"
      },
      "addresses": {
       "type": "array",
       "description": "Conditionally Required\n\nProvide one or more email addresses to receive the bol and/or shipping labels PDF\n\nRequired when images.email.includeLabels AND/OR images.email.includeBol is true\n",
       "items": {
        "type": "string"
       },
       "example": [
        "dispatch@shipper.com",
        "dispatch23@shipper.com"
       ]
      }
     }
    }
   }
  },
  "notifications": {
   "type": "array",
   "description": "include if you want notifications of shipment movements by text message or email",
   "items": {
    "type": "object",
    "properties": {
     "email": {
      "type": "string",
      "example": "dispatch@consignee.com",
      "description": "Optional\n\nEmail address of contact for updates about shipment movements\n"
     }
    }
   }
  },
  "referenceNumbers": {
   "type": "object",
   "properties": {
    "pro": {
     "type": "string",
     "minimum": 10,
     "maximum": 10,
     "example": 11234567,
     "description": "Optional\n\nShipper's pre-assigned PRO number for Estes. If not provided, one will be auto assigned by Estes.\n"
    },
    "quoteID": {
     "type": "string",
     "minimum": 7,
     "maximum": 7,
     "example": "E556724",
     "description": "Optional\n\nEstes Rate Quote ID\n"
    },
    "shipmentId": {
     "type": "string",
     "maximum": 25,
     "example": "SID9743985",
     "description": "Optional\n\nShipment Id (SID) number for the shipment.\n"
    },
    "masterBol": {
     "type": "string",
     "maximum": 25,
     "example": "BL1234287",
     "description": "Optional\n\nMaster Bill of Lading number for the shipment.\n"
    },
    "bol": {
     "type": "array",
     "items": {
      "type": "string",
      "minimum": 1,
      "maximum": 25
     },
     "example": [
      "BL19498432",
      "BL99744565"
     ],
     "description": "Optional                 \n\nBill of Lading number(s) for the shipment.\n"
    },
    "po": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "number": {
        "type": "string",
        "minimum": 1,
        "maximum": 25,
        "example": 554238,
        "description": "Optional                      \n\nThe Purchase Order number(s).\n"
       },
       "pieces": {
        "type": "integer",
        "minimum": 1,
        "maximum": 99999,
        "example": 5,
        "description": "Optional\n\nTotal pieces associated with the Purchase Order\n"
       },
       "weight": {
        "type": "integer",
        "maximum": 99999,
        "example": 150,
        "description": "Optional\n\nTotal weight associated with the Purchase Order\n"
       },
       "palletized": {
        "type": "boolean",
        "example": true,
        "description": "Optional\n\n   Indicates whether or not the pieces associated with the purchase order are on a pallet/slip/skid or not.\n"
       },
       "additionalShipperInfo": {
        "type": "string",
        "maximum": 100,
        "example": "Freight must always stay upright",
        "description": "Optional\n\nAdditional information from shipper per line item\n"
       }
      }
     }
    },
    "additionalReferences": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "name": {
        "type": "string",
        "maximum": 25,
        "example": "Customer Reference Id",
        "description": "Optional\n\nIndicates the name of the reference number being provided.\n"
       },
       "value": {
        "type": "string",
        "maximum": 25,
        "example": "CRID3452-01",
        "description": "Optional\n\nAdditional reference number that correlates to the additional reference name.\n"
       }
      }
     }
    }
   }
  },
  "payment": {
   "type": "object",
   "required": [
    "terms"
   ],
   "properties": {
    "terms": {
     "type": "string",
     "example": "Prepaid",
     "description": "Required\n\nFreight Billing Terms for the shipment\n\nValid values:\n* Prepaid\n* Collect\n* Third Party\n"
    }
   }
  },
  "commodities": {
   "type": "object",
   "required": [
    "lineItemLayout",
    "handlingUnits"
   ],
   "properties": {
    "lineItemLayout": {
     "type": "string",
     "example": "Nested",
     "description": "Required\n\nNested: Indicates if the Handling Unit/Line Item relationship is known. If this value is used, each Line Item associated to a Handling Unit is conditionally required to be passed within that Handling Unit's object.                \n\nStacked: Layout type not accepted -  \n- Indicates if the Handling Unit/Line Item relationship is not known.  If this value is used, Line Items may be passed within any Handling Unit object.\n\nvalid value: Nested\n"
    },
    "handlingUnits": {
     "type": "array",
     "items": {
      "type": "object",
      "required": [
       "count",
       "type",
       "weight",
       "length",
       "width",
       "height",
       "lineItems"
      ],
      "properties": {
       "count": {
        "type": "integer",
        "maximum": 99999,
        "example": 2,
        "description": "Required\n\nNumber of handling units being described\n"
       },
       "type": {
        "type": "string",
        "maximum": 10,
        "example": "SKD",
        "description": "Required\n\nType of the handling units being described    \nValid values:\n* BAG - Bag\n* BAL - Bale\n* BBL - Barrel\n* BSK - Basket\n* BIN - Bin\n* BOX - Box\n* BXT - Bucket\n* BCH - Bunch\n* BDL - Bundle\n* CAB - Cabinet\n* CAG - Cage\n* CAN - Can\n* CBY - Carboy\n* CAR - Carrier\n* CTN - Carton\n* CAS - Case\n* CSK - Cask\n* CHS - Chest\n* COL - Coil\n* CNT - Container\n* COR - Cores\n* CRT - Crate\n* CYL - Cylinder\n* DRM - Drum\n* DBK - Dry Bulk\n* ENV - Envelope\n* FIR - Firkin\n* GLD - Gaylord\n* HPR - Hamper\n* HGH - Hogshead\n* HRB - On Hanger or Rack in Boxes\n* INT - Intermediate Bulk Container\n* JAR - Jar\n* JCN - Jerrycan\n* KEG - Keg\n* KIT - Kit\n* LIF - Lifts\n* LBK - Liquid Bulk\n* LSE - Loose\n* MXD - Mixed\n* OTH - Other\n* PKG - Package\n* PCK - Packed\n* PAL - Pail\n* PAT - Pallet\n* PCS - Piece\n* PLN - Pipe Line\n* RCK - Rack\n* REL - Reel\n* ROL - Roll\n* SKD - Skid\n* SLP - Slip Sheet\n* SPL - Spool\n* TNK - Tank\n* TBN - Tote\n* TRY - Tray\n* TRU - Truckload\n* TRK - Trunk\n* TUB - Tub\n* TBE - Tube\n* UNT - Unit\n* VPK - Van Pack\n* WRP - Wrapped\n"
       },
       "tareWeight": {
        "type": "integer",
        "maximum": 99999,
        "example": 5,
        "description": "Optional\n\nWeight of the skids/pallets/slips used in the shipment.\n"
       },
       "weight": {
        "type": "integer",
        "maximum": 99999,
        "example": 1500,
        "description": "Required\n\nTotal weight for the specified handling units.\n"
       },
       "weightUnit": {
        "type": "string",
        "example": "Pounds",
        "description": "Required\n\nThe unit of measurement for weight.  Defaults to Pounds.\n\nValid Values: Pounds\n"
       },
       "length": {
        "type": "integer",
        "maximum": 999,
        "example": 48,
        "description": "Required\n\nThe length (in inches) of the handling units being described.\n"
       },
       "width": {
        "type": "integer",
        "maximum": 999,
        "example": 48,
        "description": "Required\n\nThe width of the handling units being described.\n"
       },
       "height": {
        "type": "integer",
        "maximum": 999,
        "example": 48,
        "description": "Required\n\nThe height of the handling units being described.\n"
       },
       "dimensionsUnit": {
        "type": "string",
        "example": "Inches",
        "description": "Required\n\nThe unit of measurement for dimensions.  Defaults to Inches.\n\nValid Values: Inches\n"
       },
       "stackable": {
        "type": "boolean",
        "example": false,
        "description": "Optional\n\nIdentifies whether or not the freight being described can be stacked on one another.\n\nDefault is false.\n"
       },
       "lineItems": {
        "type": "array",
        "items": {
         "type": "object",
         "required": [
          "weight",
          "classification",
          "description",
          "hazardous",
          "pieces",
          "packagingType"
         ],
         "properties": {
          "description": {
           "type": "string",
           "maximum": 35,
           "example": "Small frameless mirrors",
           "description": "Required\n\nDescription of the freight being described.\n"
          },
          "weight": {
           "type": "integer",
           "minimum": 1,
           "maximum": 99999,
           "example": 1500,
           "description": "Required\n\nTotal weight for the specified lineItem.\n"
          },
          "weightUnit": {
           "type": "string",
           "example": "Pounds",
           "description": "Required\n\nThe unit of measurement for weight.  Defaults to Pounds.\n\nValid Values: Pounds\n"
          },
          "pieces": {
           "type": "integer",
           "maximum": 99999,
           "example": 3,
           "description": "Required\n\nNumber of individual pieces for the line item being described.\n"
          },
          "packagingType": {
           "type": "string",
           "example": "BOX",
           "description": "Required\n\nPackaging type for the individual pieces of the line item being described.\n\nValid values:\n* BAG - Bag\n* BAL - Bale\n* BBL - Barrel\n* BSK - Basket\n* BIN - Bin\n* BOX - Box\n* BXT - Bucket\n* BCH - Bunch\n* BDL - Bundle\n* CAB - Cabinet\n* CAG - Cage\n* CAN - Can\n* CBY - Carboy\n* CAR - Carrier\n* CTN - Carton\n* CAS - Case\n* CSK - Cask\n* CHS - Chest\n* COL - Coil\n* CNT - Container\n* COR - Cores\n* CRT - Crate\n* CYL - Cylinder\n* DRM - Drum\n* DBK - Dry Bulk\n* ENV - Envelope\n* FIR - Firkin\n* GLD - Gaylord\n* HPR - Hamper\n* HGH - Hogshead\n* HRB - On Hanger or Rack in Boxes\n* INT - Intermediate Bulk Container\n* JAR - Jar\n* JCN - Jerrycan\n* KEG - Keg\n* KIT - Kit\n* LIF - Lifts\n* LBK - Liquid Bulk\n* LSE - Loose\n* MXD - Mixed\n* OTH - Other\n* PKG - Package\n* PCK - Packed\n* PAL - Pail\n* PAT - Pallet (Not supported by Estes)\n* PCS - Piece\n* PLN - Pipe Line\n* RCK - Rack\n* REL - Reel\n* ROL - Roll\n* SKD - Skid (Not supported by Estes)\n* SLP - Slip Sheet\n* SPL - Spool\n* TNK - Tank\n* TBN - Tote\n* TRY - Tray\n* TRU - Truckload\n* TRK - Trunk\n* TUB - Tub\n* TBE - Tube\n* UNT - Unit\n* VPK - Van Pack\n* WRP - Wrapped\n"
          },
          "classification": {
           "type": "string",
           "example": 55,
           "description": "Required \n\nClassification of the line item being described.\n\nValid values:\n* 50\n* 55\n* 60\n* 65\n* 70\n* 77.5\n* 85\n* 92.5\n* 100\n* 110\n* 125\n* 150\n* 175\n* 200\n* 250\n* 300\n* 400\n* 500\n* N/A - not applicable\n"
          },
          "nmfc": {
           "type": "string",
           "maximum": 6,
           "example": 869006,
           "description": "Optional\n\nNMFC code of the freight being described.\n"
          },
          "nmfcSub": {
           "type": "string",
           "maximum": 4,
           "example": 1234,
           "description": "Optional\n\nThe Sub value for the NMFC of the freight being described.\n"
          },
          "hazardous": {
           "type": "boolean",
           "example": true,
           "description": "Required\n\nIdentifies whether or not the freight being described contains hazardous materials.\n"
          },
          "hazardousDescription": {
           "type": "string",
           "maximum": 1500,
           "example": "UN 1090, Acetone, 3, PG II",
           "description": "Conditionally required\n\nProvides a detailed description of the hazardous item.\n\nRequired when 'hazardous' = 'true'.\n"
          },
          "hazardousDetails": {
           "type": "object",
           "properties": {
            "weight": {
             "type": "integer",
             "minimum": 1,
             "maximum": 99999,
             "example": 45,
             "description": "Conditionally required\n\nTotal weight of hazardous material for one line item description.\n\nRequired if commodities.lineItems.hazardous = True\n"
            },
            "class": {
             "type": "string",
             "example": 3,
             "description": "Conditionally required\n\nClass that the hazardous material is catogorized by.\n\nRequired if commodities.lineItems.hazardous = True\n"
            },
            "unnaNumber": {
             "type": "string",
             "maximum": 9,
             "example": 1005,
             "description": "Conditionally required\n\nIdentification Number corresponding to the Proper Shipping Name for the hazardous materials.\n\nRequired if commodities.lineItems.hazardous = True\n"
            },
            "propername": {
             "type": "string",
             "maximum": 512,
             "example": "Anhydrous ammonia",
             "description": "Conditionally required\n\nProper shipping name from  172.101 hazardous materials table\n\nRequired if commodities.lineItems.hazardous = True\n"
            },
            "technicalName": {
             "type": "string",
             "maximum": 512,
             "example": "NH3",
             "description": "Conditionally required\n\nTechnical name for the hazardous material if required by the 172.101 hazardous materials table\n\nRequrired if commodities.lineItems.hazardous = True and Hazard Symbols contains G\n"
            },
            "packingGroup": {
             "type": "string",
             "example": "II",
             "description": "Conditionally Required\n\nPacking Group number as required by the 172.101 hazardous materials table. Not all hazardous materials have a packing group.\n\nRequired if commodities.lineItems.hazardous = True and there is a value required based on the UNNA number\n"
            },
            "contractNumber": {
             "type": "string",
             "minimum": 1,
             "maximum": 99,
             "example": 54321,
             "description": "Optional\n\nThe contract number with the hazardous materials contact\n\nRequired if commodities.lineItems.hazardous = True and there is a value required based on the UNNA number\n"
            }
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "shipmentTotals": {
   "type": "object",
   "properties": {
    "grossWeight": {
     "type": "integer",
     "minimum": 1,
     "maximum": 9999999,
     "example": 2000,
     "description": "Optional\n\nTotal weight of the entire shipment, including handling units (tare weight).\n"
    },
    "netWeight": {
     "type": "integer",
     "minimum": 1,
     "maximum": 9999999,
     "example": 1993,
     "description": "Optional\n\nTotal weight of the entire shipment, not including handling units (tare weight).\n"
    },
    "weightUnit": {
     "type": "string",
     "example": "Pounds",
     "description": "Optional\n\nThe unit of measurement for weight.  Defaults to Pounds\n\nValid Values: Pounds\n"
    },
    "handlingUnits": {
     "type": "integer",
     "minimum": 1,
     "maximum": 99999,
     "example": 2,
     "description": "Optional\n\nHandling unit count for the entire shipment\n"
    },
    "linearLength": {
     "type": "integer",
     "minimum": 1,
     "maximum": 999,
     "example": 96,
     "description": "Optional\n\nLinear length for the entire shipment\n"
    },
    "dimensionsUnit": {
     "type": "string",
     "example": "Inches",
     "description": "Optional\n\nThe unit of measurement for dimensions.  Defaults to Inches \n\nValid Values: Inches\n"
    },
    "cube": {
     "type": "integer",
     "minimum": 1,
     "example": 128,
     "description": "Optional\n\nCubic volume of the entire shipment (total length X total width X total height).\n"
    },
    "cubeDimensionsUnit": {
     "type": "string",
     "example": "Feet",
     "description": "Optional\n\nThe unit of measurement for cubic dimensions.  Defaults to Feet\n\nValid Values: Feet\n"
    }
   }
  },
  "accessorials": {
   "type": "object",
   "properties": {
    "codes": {
     "type": "array",
     "items": {
      "enum": [
       "APTD",
       "APTP",
       "COD",
       "EXPD",
       "FVC",
       "GTD_AM",
       "GTD_NOON",
       "GTD_PM",
       "HAZ",
       "IDL",
       "INBD",
       "IPU",
       "LFTD",
       "LFTP",
       "LTDAD",
       "LTDAP",
       "MARK",
       "MNC",
       "OVR",
       "PPD",
       "PSC",
       "PSH",
       "PSN",
       "REP",
       "RES",
       "SRT",
       "SS",
       "TCS"
      ]
     },
     "example": [
      "IDL",
      "LFTP"
     ],
     "description": "An array to hold the list of Services and/or Special Handling Codes requested for the shipment\nValid values:\n\n* APTD - Appointment required at delivery\n\n* APTP - Appointment required at pickup NOT Accepted by Estes \n\n* COD - Collect on delivery (Not supported by Estes)\n\n* EXPD - Expedited Service NOT Accepted by Estes\n\n* FVC - Full value coverage\n\n* GMR1 - Estes Retail Guarantee\n\n* GROC - Grocery Warehouse Delay Fee\n\n* GTD_AM- Guaranteed service - by Morning\n\n* GTD_NOON- Guaranteed service - by Noon\n\n* GTD_PM- Guaranteed service - by End of Day\n\n* HAZ - Hazardous material\n\n* HDSIG - Residential Appt/Signature Delivery Required\n\n* IDL - Inside delivery\n\n* INBD - In bond shipment\n\n* IPU - Inside pickup\n\n* LFTD - Lift gate required at delivery\n\n* LFTP - Lift gate required at pickup\n\n* LTDAD - Limited access delivery\n\n* LTDAP - Limited access pickup\n\n* MARK - Marked or tagged\n\n* MNC - Must notify consignee\n\n* OVR - Over dimension/excessive length\n\n* PPD - Perishables (food)\n\n* PSC - Protective from cold\n\n* PSH - Protective from heat NOT Accepted for Estes\n\n* PSN - Poisonous material\n\n* REP - Residential pickup\n\n* RES - Residential delivery\n\n* SRT - Sort and segregate\n\n* SS - Single Shipment\n\n* TCS - Time Crititcal Service No Sooner No Later\n\n* ULFEE - Unloading Services Requested By Consignee\n\nThe following are no charge Special Handling Codes that may be added\n\n* CONSUM - Consummable\n\n* DSDD - Do Not Double Stack\n\n* ADP1 - Notify Contact in Special Instructions for Any Delivery Issues \n\n* DBDP - Do Not Break Down the Pallet\n\n* FRAG - Fragile - Handle with Care\n\n* PREACC - Added Accessorials Require Pre Approval\n\n* PSA - Packing Slip Attached\n\n* SKSW - Do Not Remove Shrink Wrap From Skid\n"
    },
    "hazardousDetails": {
     "type": "object",
     "description": "Required if accessorial codes list contains HAZ and/or if any commodity line item's hazardous flag is set to true.\n",
     "properties": {
      "emergencyContact": {
       "type": "object",
       "properties": {
        "name": {
         "type": "string",
         "minimum": 1,
         "maximum": 100,
         "example": "Manny Delgato",
         "description": "Conditionally Required \n\nFull name of who should be contacted in the case of a hazardous materials-related issue.\n\n Required If commodities.lineItems [*].hazardous flag = True\n"
        },
        "phone": {
         "type": "string",
         "example": 7775558899,
         "description": "Conditionally Required\n\nPhone number of who should be contacted in the case of a hazardous materials-related issue.\n\n Required If commodities.lineItems [*].hazardous flag = True \n\nValid Formats:\n* ########## (10 digits - Area code + phone)\n"
        }
       }
      }
     }
    },
    "sortAndSegregateDetails": {
     "type": "object",
     "description": "Required when accessorial code SRT is present in the accessorial.codes list.\n",
     "properties": {
      "pieces": {
       "type": "integer",
       "maximum": 99999,
       "example": 25,
       "description": "Conditionally Required\n\nNumber of pieces in a shipment to be sorted/segregated. Must equal total shipment pieces\n\n\nRequired when accessorial code SRT is present in the accessorial.codes list.\n"
      }
     }
    },
    "fullValueCoverageDetails": {
     "type": "object",
     "description": "Required when accessorial code FVC is present in the accessorial.codes list.\n",
     "properties": {
      "monetaryValue": {
       "type": "string",
       "maximum": 100000,
       "description": "Conditionally Required\n\nValue of the cargo.\n\nRequired when accessorial code FVC is present in the accessorial.codes list. \n\n Valid Formats:\n* ##.## (2 decimal places only)\n",
       "example": "100.00"
      },
      "currency": {
       "type": "string",
       "example": "USD",
       "description": "Optionally Required\n\nThe attribute to indicate currency of monetaryValue. Defaults to USD.\n\nRequired when accessorial code FVC is present in the accessorial.codes list.\n\nValid values: USD\n"
      }
     }
    },
    "markDetails": {
     "type": "object",
     "description": "Required when accessorial code MARK is present in the accessorial.codes list.\n",
     "properties": {
      "pieces": {
       "type": "integer",
       "maximum": 99999,
       "example": 25,
       "description": "Conditionally Required\n\nNumber of pieces in a shipment requiring marking or tagging. Must equal total handling units\n\nRequired when accessorial code MARK is present in the accessorial.codes list.\n"
      }
     }
    },
    "limitedAccessType": {
     "type": "object",
     "description": "Required when accessorial code LTDAP or LTDAD is present in the accessorial.codes list.\n",
     "properties": {
      "origin": {
       "type": "string",
       "example": "Secure",
       "description": "Optionally Required\n\nType of limited access location\n\nRequired when accessorial code LTDAD is present in the accessorial.codes list. \n\nValid Values:\n* Airport - Airport\n* Church - Church\n* Club - Country Club, Social Club\n* Construction - Construction Site\n* Fair - Fair, Carnival, Flea Market\n* Farm - Farm, Ranch, Vinyard, Orchard\n* Hotel - Hotel, Motel, Inn, Resteraunt\n* Mine - Mine, Mill\n* Other - Other\n* Park - Amusement Park, Camp, Marina\n* Port - Port\n* School - School, University, Library\n* Secure - Military, Prison, Power Plant, Utility\n* Storage - Self Storage Unit\n* Tradeshow -Tradeshow, Exhibition, Expo\n"
      },
      "destination": {
       "type": "string",
       "example": "Secure",
       "description": "Optionally Required\n\nType of limited access location\n\nRequired when accessorial code LTDAD is present in the accessorial.codes list. \n\nValid Values:\n* Airport - Airport\n* Church - Church\n* Club - Country Club, Social Club\n* Construction - Construction Site\n* Fair - Fair, Carnival, Flea Market\n* Farm - Farm, Ranch, Vinyard, Orchard\n* Hotel - Hotel, Motel, Inn, Resteraunt\n* Mine - Mine, Mill\n* Other - Other\n* Park - Amusement Park, Camp, Marina\n* Port - Port\n* School - School, University, Library\n* Secure - Military, Prison, Power Plant, Utility\n* Storage - Self Storage Unit\n* Tradeshow -Tradeshow, Exhibition, Expo\n"
      }
     }
    },
    "timeCriticalDetails": {
     "type": "object",
     "properties": {
      "type": {
       "type": "string",
       "example": "Delivery Window",
       "description": "Required for Estes Retail Guarantee or No Sooner No Later Service.\n\nReserved for Delivery on No Sooner/No Later in conjunction with a Time Critical Service.\n\nValid Value: \n* Deliver On Date - Freight can only be delivered on the specified start date.\n\n* Delivery Window - Freight can only be delivered between the specified start and end dates.\n"
      },
      "date": {
       "type": "object",
       "properties": {
        "start": {
         "type": "string",
         "example": "2021-05-20T00:00:00.000Z",
         "description": "Conditionally Required\n\nRequired when TCS is selected and No Sooner No Later or Estes Retail Guarantee Service is selected.\n\nThe start date (with or without time) the shipment is requested to be delivered.\n\nValid Formats:\n* YYYY-MM-DDTHH:mm:ss.sss (ISO 8601)\n"
        },
        "end": {
         "type": "string",
         "example": "2021-05-22T00:00:00.000Z",
         "description": "Conditionally Required\n\nRequired when TCS is selected and No Sooner No Later or Estes Retail Guarantee Service is selected and Time Critical Details Type = Delivery Window.\n\nNote: If Time Critical Details Type is not Delivery Window, then any entered end date will be ignored. \n\nThe end date (with or without time) the shipment is requested to be delivered.\n"
        }
       }
      }
     }
    },
    "appointmentDetails": {
     "type": "object",
     "properties": {
      "delivery": {
       "type": "object",
       "properties": {
        "start": {
         "type": "string",
         "example": "2021-05-20T00:00:00.000Z",
         "description": "Optional\n\nStarting appointment date (with or without time)  for the day the shipment is requested to be delivered. Note that an appointment is not a Time Critical Guaranteed service\n\nValid Formats:\n* YYYY-MM-DDTHH:mm:ss.sss (ISO 8601)\n"
        },
        "end": {
         "type": "string",
         "example": "2021-05-22T00:00:00.000Z",
         "description": "Optional\n\nEnding appointment date (with or without time) the shipment is requested to be delivered. Note that an appointment is not a Time Critical Guaranteed service\n\nValid Formats:\n* YYYY-MM-DDTHH:mm:ss.sss (ISO 8601)\n"
        }
       }
      }
     }
    }
   }
  },
  "origin": {
   "type": "object",
   "required": [
    "name",
    "address1",
    "city",
    "stateProvince",
    "postalCode",
    "country",
    "contact"
   ],
   "properties": {
    "account": {
     "type": "string",
     "minimum": 7,
     "maximum": 7,
     "example": 12345,
     "description": "Optional\n\nCompany\u2019s Estes account number/id for the origin.\n"
    },
    "locationId": {
     "type": "string",
     "maximum": 25,
     "example": "Store 808",
     "description": "Optional\n\nCompany's location id for the origin\n"
    },
    "name": {
     "type": "string",
     "maximum": 50,
     "example": "Closets Closets Closets",
     "description": "Required\n\nCompany name associated with the origin location.\n"
    },
    "address1": {
     "type": "string",
     "maximum": 100,
     "example": "12 S. Closets Place",
     "description": "Required\n\nPrimary Address line for the origin location\n"
    },
    "address2": {
     "type": "string",
     "maximum": 100,
     "example": "ste 3",
     "description": "Optional\n\nSecondary Address line for the origin location\n"
    },
    "city": {
     "type": "string",
     "maximum": 50,
     "example": "Los Angeles",
     "description": "Required\n\nCity Name for the origin location\n"
    },
    "stateProvince": {
     "type": "string",
     "example": "CA",
     "maximum": 2,
     "description": "Conditionally Required\n\nTwo letter state/province code for the state/province location.\n\nRequired if outer level outer level object provided\n\nValid values:\n* AL - Alabama\n* AK - Alaska\n* AZ - Arizona\n* AR - Arkansas\n* CA - California\n* CO - Colorado\n* CT - Connecticut\n* DC - District of Columbia\n* DE - Delaware\n* FL - Florida\n* GA - Georgia\n* HI - Hawaii\n* ID - Idaho\n* IL - Illinois\n* IN - Indiana\n* IA - Iowa\n* KS - Kansas\n* KY - Kentucky\n* LA - Louisiana\n* ME - Maine\n* MD - Maryland\n* MA - Massachusetts\n* MI - Michigan\n* MN - Minnesota\n* MS - Mississippi\n* MO - Missouri\n* MT - Montana\n* NE - Nebraska\n* NV - Nevada\n* NH - New Hampshire\n* NJ - New Jersey\n* NM - New Mexico\n* NY - New York\n* NC - North Carolina\n* ND - North Dakota\n* OH - Ohio\n* OK - Oklahoma\n* OR - Oregon\n* PA - Pennsylvania\n* PR - Puerto Rico\n* RI - Rhode Island\n* SC - South Carolina\n* SD - South Dakota\n* TN - Tennessee\n* TX - Texas\n* UT - Utah\n* VT - Vermont\n* VA - Virginia\n* WA - Washington\n* WV - West Virginia\n* WI - Wisconsin\n* WY - Wyoming\n* AB - Alberta\n* BC - British Columbia\n* MB - Manitoba\n* NB - New Brunswick\n* NL - Newfoundland and Labrador\n* NS - Nova Scotia\n* NT - Northwest Territories\n* NU - Nunavut\n* ON - Ontario\n* PE - Prince Edward Island\n* QC - Quebec\n* SK - Saskatchewan\n* YT - Yukon\n* CMX - Mexican Federal District \n* AGU - Aguascalientes\n* BCN - Baja California\n* BCS - Baja California Sur\n* CAM - Campeche\n* COA - Coahuila\n* COL - Colima\n* CHP - Chiapas\n* CHH - Chihuahua\n* DUR - Durango\n* GUA - Guanajuato\n* GRO - Guerrero\n* HID - Hidalgo\n* JAL - Jalisco\n* MEX - Mexico\n* MIC - Michoacan\n* MOR - Morelos\n* NAY - Nayarit\n* NLE - Nuevo Leon\n* OAX - Oaxaca\n* PUE - Puebla\n* QUE - Queretaro\n* ROO - Quintana Roo\n* SLP - San Luis Potosi\n* SIN - Sinaloa\n* SON - Sonora\n* TAB - Tabasco\n* TAM - Tamaulipas\n* TLA - Tlaxcala\n* VER - Veracruz\n* YUC - Yucatan\n* ZAC - Zacatecas\n"
    },
    "postalCode": {
     "type": "string",
     "maximum": 10,
     "example": 90001,
     "description": "Required \n\nThe 5-digit (or 6-characters for Canada) zip code for the origin location.\n\nValid formats:\n  * 12345 (5 digits - USA/MEX)\n  * A1A1A1 (6 characters - CAN)\n  * A1A1A (5 characters - CAN)\n"
    },
    "country": {
     "type": "string",
     "example": "USA",
     "description": "Conditionlly Required\n\nThree letter country code for the location.\n\nRequired if outer object provided\n\nValid values:\n* CAN - Canada\n* USA - United States\n* MEX - Mexico\n"
    },
    "contact": {
     "type": "object",
     "description": "Object containing contact details for the shipper.\n",
     "required": [
      "phone"
     ],
     "properties": {
      "phone": {
       "type": "string",
       "maximum": 10,
       "example": 5552226666,
       "description": "Required\n\nTen digit phone number, without country code and/or dashes, for the origin location's contact person.\n\nValid Formats:\n* ########## (10 digits - Area code + phone)\n"
      },
      "phoneExt": {
       "type": "string",
       "maximum": 10,
       "example": 99,
       "description": "Optional\n\nPhone extension for the origin location's contact person.\n"
      },
      "name": {
       "type": "string",
       "maximum": 50,
       "example": "Jay Pritchett",
       "description": "Optional\n\nName of the origin location's contact person.\n"
      },
      "email": {
       "type": "string",
       "maximum": 255,
       "example": "jpritchett@closets.com",
       "description": "Optional\n\nEmail address of the origin location's contact person.\n"
      }
     }
    }
   }
  },
  "destination": {
   "type": "object",
   "required": [
    "name",
    "address1",
    "city",
    "stateProvince",
    "postalCode",
    "country",
    "contact"
   ],
   "properties": {
    "account": {
     "type": "string",
     "minimum": 7,
     "maximum": 7,
     "example": 12345,
     "description": "Optional\n\nCompany's Estes account number/id for the destination.\n"
    },
    "locationId": {
     "type": "string",
     "maximum": 25,
     "example": "Store 808",
     "description": "Optional\n\nCompany's location id for the destination\n"
    },
    "name": {
     "type": "string",
     "maximum": 50,
     "example": "Closets Closets Closets",
     "description": "Optional\n\nCompany name associated with the destination location.\n"
    },
    "address1": {
     "type": "string",
     "maximum": 100,
     "example": "12 S. Closets Place",
     "description": "Required\n\nPrimary Address line for the destination location\n"
    },
    "address2": {
     "type": "string",
     "maximum": 100,
     "example": "ste 3",
     "description": "Optional\n\nSecondary Address line for the destination location\n"
    },
    "city": {
     "type": "string",
     "maximum": 50,
     "example": "Los Angeles",
     "description": "Required\n\nCity Name for the destination location\n"
    },
    "stateProvince": {
     "type": "string",
     "example": "CA",
     "maximum": 2,
     "description": "Conditionally Required\n\nTwo letter state/province code for the state/province location.\n\nRequired if outer level outer level object provided\n\nValid values:\n* AL - Alabama\n* AK - Alaska\n* AZ - Arizona\n* AR - Arkansas\n* CA - California\n* CO - Colorado\n* CT - Connecticut\n* DC - District of Columbia\n* DE - Delaware\n* FL - Florida\n* GA - Georgia\n* HI - Hawaii\n* ID - Idaho\n* IL - Illinois\n* IN - Indiana\n* IA - Iowa\n* KS - Kansas\n* KY - Kentucky\n* LA - Louisiana\n* ME - Maine\n* MD - Maryland\n* MA - Massachusetts\n* MI - Michigan\n* MN - Minnesota\n* MS - Mississippi\n* MO - Missouri\n* MT - Montana\n* NE - Nebraska\n* NV - Nevada\n* NH - New Hampshire\n* NJ - New Jersey\n* NM - New Mexico\n* NY - New York\n* NC - North Carolina\n* ND - North Dakota\n* OH - Ohio\n* OK - Oklahoma\n* OR - Oregon\n* PA - Pennsylvania\n* PR - Puerto Rico\n* RI - Rhode Island\n* SC - South Carolina\n* SD - South Dakota\n* TN - Tennessee\n* TX - Texas\n* UT - Utah\n* VT - Vermont\n* VA - Virginia\n* WA - Washington\n* WV - West Virginia\n* WI - Wisconsin\n* WY - Wyoming\n* AB - Alberta\n* BC - British Columbia\n* MB - Manitoba\n* NB - New Brunswick\n* NL - Newfoundland and Labrador\n* NS - Nova Scotia\n* NT - Northwest Territories\n* NU - Nunavut\n* ON - Ontario\n* PE - Prince Edward Island\n* QC - Quebec\n* SK - Saskatchewan\n* YT - Yukon\n* CMX - Mexican Federal District \n* AGU - Aguascalientes\n* BCN - Baja California\n* BCS - Baja California Sur\n* CAM - Campeche\n* COA - Coahuila\n* COL - Colima\n* CHP - Chiapas\n* CHH - Chihuahua\n* DUR - Durango\n* GUA - Guanajuato\n* GRO - Guerrero\n* HID - Hidalgo\n* JAL - Jalisco\n* MEX - Mexico\n* MIC - Michoacan\n* MOR - Morelos\n* NAY - Nayarit\n* NLE - Nuevo Leon\n* OAX - Oaxaca\n* PUE - Puebla\n* QUE - Queretaro\n* ROO - Quintana Roo\n* SLP - San Luis Potosi\n* SIN - Sinaloa\n* SON - Sonora\n* TAB - Tabasco\n* TAM - Tamaulipas\n* TLA - Tlaxcala\n* VER - Veracruz\n* YUC - Yucatan\n* ZAC - Zacatecas\n"
    },
    "postalCode": {
     "type": "string",
     "maximum": 10,
     "example": 90001,
     "description": "Optional\n\nThe 5-digit (or 6-characters for Canada) zip code for the destination location.\n\nValid formats:\n  * 12345 (5 digits - USA/MEX)\n  * A1A1A1 (6 characters - CAN)\n  * A1A1A (5 characters - CAN)\n"
    },
    "country": {
     "type": "string",
     "example": "USA",
     "description": "Conditionlly Required\n\nThree letter country code for the location.\n\nRequired if outer object provided\n\nValid values:\n* CAN - Canada\n* USA - United States\n* MEX - Mexico\n"
    },
    "contact": {
     "type": "object",
     "description": "Object containing contact details for the destination.\n",
     "required": [
      "phone"
     ],
     "properties": {
      "phone": {
       "type": "string",
       "maximum": 10,
       "example": 5552226666,
       "description": "Required\n\nTen digit phone number, without country code and/or dashes, for the destination location's contact person.\n\nValid Formats:\n* ########## (10 digits - Area code + phone)\n"
      },
      "phoneExt": {
       "type": "string",
       "maximum": 10,
       "example": 99,
       "description": "Optional\n\nPhone extension for the destination location's contact person.\n"
      },
      "name": {
       "type": "string",
       "maximum": 50,
       "example": "Jay Pritchett",
       "description": "Optional\n\nName of the destination location's contact person.\n"
      },
      "email": {
       "type": "string",
       "maximum": 255,
       "example": "jpritchett@closets.com",
       "description": "Optional\n\nEmail address of the destination location's contact person.\n"
      }
     }
    }
   }
  },
  "billTo": {
   "type": "object",
   "required": [
    "name",
    "address1",
    "city",
    "stateProvince",
    "postalCode",
    "country",
    "contact"
   ],
   "properties": {
    "account": {
     "type": "string",
     "minimum": 7,
     "maximum": 7,
     "example": 1234567,
     "description": "Optional\n\nCompany's account number/id for the billTo.\n"
    },
    "locationId": {
     "type": "string",
     "maximum": 25,
     "example": 808,
     "description": "Optional\n\nCompany's location id for the billTo.\n"
    },
    "name": {
     "type": "string",
     "maximum": 50,
     "example": "Closets Closets Closets",
     "description": "Required\n\nCompany name associated with the billTo location\n"
    },
    "address1": {
     "type": "string",
     "maximum": 100,
     "example": "12 S. Closets Place",
     "description": "Optional\n\nPrimary Address line for the billTo location\n"
    },
    "address2": {
     "type": "string",
     "maximum": 100,
     "example": "ste 3",
     "description": "Optional\n\nSecondary Address line for the billTo location\n"
    },
    "city": {
     "type": "string",
     "maximum": 50,
     "example": "Los Angeles",
     "description": "Required\n\nCity Name for the billTo location\n"
    },
    "stateProvince": {
     "type": "string",
     "example": "CA",
     "maximum": 2,
     "description": "Conditionally Required\n\nTwo letter state/province code for the state/province location.\n\nRequired if outer level outer level object provided\n\nValid values:\n* AL - Alabama\n* AK - Alaska\n* AZ - Arizona\n* AR - Arkansas\n* CA - California\n* CO - Colorado\n* CT - Connecticut\n* DC - District of Columbia\n* DE - Delaware\n* FL - Florida\n* GA - Georgia\n* HI - Hawaii\n* ID - Idaho\n* IL - Illinois\n* IN - Indiana\n* IA - Iowa\n* KS - Kansas\n* KY - Kentucky\n* LA - Louisiana\n* ME - Maine\n* MD - Maryland\n* MA - Massachusetts\n* MI - Michigan\n* MN - Minnesota\n* MS - Mississippi\n* MO - Missouri\n* MT - Montana\n* NE - Nebraska\n* NV - Nevada\n* NH - New Hampshire\n* NJ - New Jersey\n* NM - New Mexico\n* NY - New York\n* NC - North Carolina\n* ND - North Dakota\n* OH - Ohio\n* OK - Oklahoma\n* OR - Oregon\n* PA - Pennsylvania\n* PR - Puerto Rico\n* RI - Rhode Island\n* SC - South Carolina\n* SD - South Dakota\n* TN - Tennessee\n* TX - Texas\n* UT - Utah\n* VT - Vermont\n* VA - Virginia\n* WA - Washington\n* WV - West Virginia\n* WI - Wisconsin\n* WY - Wyoming\n* AB - Alberta\n* BC - British Columbia\n* MB - Manitoba\n* NB - New Brunswick\n* NL - Newfoundland and Labrador\n* NS - Nova Scotia\n* NT - Northwest Territories\n* NU - Nunavut\n* ON - Ontario\n* PE - Prince Edward Island\n* QC - Quebec\n* SK - Saskatchewan\n* YT - Yukon\n* CMX - Mexican Federal District \n* AGU - Aguascalientes\n* BCN - Baja California\n* BCS - Baja California Sur\n* CAM - Campeche\n* COA - Coahuila\n* COL - Colima\n* CHP - Chiapas\n* CHH - Chihuahua\n* DUR - Durango\n* GUA - Guanajuato\n* GRO - Guerrero\n* HID - Hidalgo\n* JAL - Jalisco\n* MEX - Mexico\n* MIC - Michoacan\n* MOR - Morelos\n* NAY - Nayarit\n* NLE - Nuevo Leon\n* OAX - Oaxaca\n* PUE - Puebla\n* QUE - Queretaro\n* ROO - Quintana Roo\n* SLP - San Luis Potosi\n* SIN - Sinaloa\n* SON - Sonora\n* TAB - Tabasco\n* TAM - Tamaulipas\n* TLA - Tlaxcala\n* VER - Veracruz\n* YUC - Yucatan\n* ZAC - Zacatecas\n"
    },
    "postalCode": {
     "type": "string",
     "maximum": 10,
     "example": 90001,
     "description": "Required\n\nThe 5-digit (or 6-characters for Canada) zip code for the billTo location.\n\nValid formats:\n  * 12345 (5 digits - USA/MEX)\n  * A1A1A1 (6 characters - CAN)\n  * A1A1A (5 characters - CAN)\n"
    },
    "country": {
     "type": "string",
     "example": "USA",
     "description": "Conditionlly Required\n\nThree letter country code for the location.\n\nRequired if outer object provided\n\nValid values:\n* CAN - Canada\n* USA - United States\n* MEX - Mexico\n"
    },
    "contact": {
     "type": "object",
     "description": "Object containing contact details for the billTo.\n",
     "required": [
      "phone"
     ],
     "properties": {
      "phone": {
       "type": "string",
       "maximum": 10,
       "example": 5552226666,
       "description": "Optional                   \n\nTen digit phone number, without country code and/or dashes, for the billTo location's contact person.\n\nValid Formats:\n* ########## (10 digits - Area code + phone)\n"
      },
      "phoneExt": {
       "type": "string",
       "maximum": 10,
       "example": 99,
       "description": "Optional\n\nPhone extension for the billTo location's contact person.\n"
      },
      "name": {
       "type": "string",
       "maximum": 50,
       "example": "Jay Pritchett",
       "description": "Optional\n\nName of the billTo location's contact person.\n"
      },
      "email": {
       "type": "string",
       "maximum": 255,
       "example": "jpritchett@closets.com",
       "description": "Optional\nEmail address of the billTo location's contact person."
      }
     }
    }
   }
  },
  "customsBroker": {
   "description": "Not currently processed by upstream",
   "type": "object",
   "properties": {
    "type": {
     "type": "string",
     "example": "Import",
     "description": "Optional\n\nUsed to identify a customs broker that is involved in a cross-border freight move.\n\nValid Values: Import or Export\n  * Import: customs broker handling the destination-side of the cross-border freight move\n  * Export: customs broker handling the origin-side of the cross-border freight move\n"
    },
    "name": {
     "type": "string",
     "maximum": 50,
     "example": "Closets Closets Closets",
     "description": "Optional\n\nCompany name associated with the customsBroker location.\n"
    },
    "address1": {
     "type": "string",
     "maximum": 100,
     "example": "12 S. Closets Place",
     "description": "Optional\n\nPrimary Address line for the customsBroker location\n"
    },
    "address2": {
     "type": "string",
     "maximum": 100,
     "example": "ste 3",
     "description": "Optional\n\nSecondary Address line for the customsBroker location\n"
    },
    "city": {
     "type": "string",
     "maximum": 50,
     "example": "Los Angeles",
     "description": "Optional\n\nCity Name for the customsBroker location\n"
    },
    "stateProvince": {
     "type": "string",
     "example": "CA",
     "maximum": 2,
     "description": "Optional\n\nTwo letter state/province code for the state/province location.\n\nValid values:\n* AL - Alabama\n* AK - Alaska\n* AZ - Arizona\n* AR - Arkansas\n* CA - California\n* CO - Colorado\n* CT - Connecticut\n* DC - District of Columbia\n* DE - Delaware\n* FL - Florida\n* GA - Georgia\n* HI - Hawaii\n* ID - Idaho\n* IL - Illinois\n* IN - Indiana\n* IA - Iowa\n* KS - Kansas\n* KY - Kentucky\n* LA - Louisiana\n* ME - Maine\n* MD - Maryland\n* MA - Massachusetts\n* MI - Michigan\n* MN - Minnesota\n* MS - Mississippi\n* MO - Missouri\n* MT - Montana\n* NE - Nebraska\n* NV - Nevada\n* NH - New Hampshire\n* NJ - New Jersey\n* NM - New Mexico\n* NY - New York\n* NC - North Carolina\n* ND - North Dakota\n* OH - Ohio\n* OK - Oklahoma\n* OR - Oregon\n* PA - Pennsylvania\n* PR - Puerto Rico\n* RI - Rhode Island\n* SC - South Carolina\n* SD - South Dakota\n* TN - Tennessee\n* TX - Texas\n* UT - Utah\n* VT - Vermont\n* VA - Virginia\n* WA - Washington\n* WV - West Virginia\n* WI - Wisconsin\n* WY - Wyoming\n* AB - Alberta\n* BC - British Columbia\n* MB - Manitoba\n* NB - New Brunswick\n* NL - Newfoundland and Labrador\n* NS - Nova Scotia\n* NT - Northwest Territories\n* NU - Nunavut\n* ON - Ontario\n* PE - Prince Edward Island\n* QC - Quebec\n* SK - Saskatchewan\n* YT - Yukon\n* CMX - Mexican Federal District \n* AGU - Aguascalientes\n* BCN - Baja California\n* BCS - Baja California Sur\n* CAM - Campeche\n* COA - Coahuila\n* COL - Colima\n* CHP - Chiapas\n* CHH - Chihuahua\n* DUR - Durango\n* GUA - Guanajuato\n* GRO - Guerrero\n* HID - Hidalgo\n* JAL - Jalisco\n* MEX - Mexico\n* MIC - Michoacan\n* MOR - Morelos\n* NAY - Nayarit\n* NLE - Nuevo Leon\n* OAX - Oaxaca\n* PUE - Puebla\n* QUE - Queretaro\n* ROO - Quintana Roo\n* SLP - San Luis Potosi\n* SIN - Sinaloa\n* SON - Sonora\n* TAB - Tabasco\n* TAM - Tamaulipas\n* TLA - Tlaxcala\n* VER - Veracruz\n* YUC - Yucatan\n* ZAC - Zacatecas\n"
    },
    "postalCode": {
     "type": "string",
     "maximum": 10,
     "example": 90001,
     "description": "Optional\n\nThe 5-digit (or 6-characters for Canada) zip code ofor the customsBroker location.\n\nValid formats:\n  * 12345 (5 digits - USA/MEX)\n  * A1A1A1 (6 characters - CAN)\n  * A1A1A (5 characters - CAN)\n"
    },
    "country": {
     "type": "string",
     "example": "USA",
     "description": "Optional\n\nThree letter country code for the location.\n\nValid values:\n* CAN - Canada\n* USA - United States\n* MEX - Mexico\n"
    },
    "contact": {
     "type": "object",
     "description": "Object containing contact details for the customsBroker.\n",
     "properties": {
      "phone": {
       "type": "string",
       "maximum": 10,
       "example": 5552226666,
       "description": "Optional\n\nTen digit phone number, without country code and/or dashes, for the customsBroker location's contact person.\n\nValid Formats:\n* ########## (10 digits - Area code + phone)\n"
      },
      "phoneExt": {
       "type": "string",
       "maximum": 10,
       "example": 99,
       "description": "Optional\n\nPhone extension for the customsBroker location's contact person.\n"
      },
      "name": {
       "type": "string",
       "maximum": 50,
       "example": "Jay Pritchett",
       "description": "Optional\n\nName of the customsBroker location's contact person.\n"
      },
      "email": {
       "type": "string",
       "maximum": 255,
       "example": "jpritchett@closets.com",
       "description": "Optional                   \n\nEmail address of the customsBroker location's contact person.\n"
      }
     }
    }
   }
  }
 }
}