{
 "description": "Some optional fields in the request are not processed, but are included as part of upstream compatibility. Make a request using pickup.isTest=true to check your request format, and ignoreUnprocessed=true to make the upstream request with unprocesed fields.",
 "type": "object",
 "properties": {
  "accessorials": {
   "type": "object",
   "properties": {
    "appointmentDetails": {
     "type": "object",
     "properties": {
      "pickup": {
       "type": "object",
       "properties": {
        "end": {
         "type": "string",
         "pattern": "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2}(?:[.]\\d{3})?)?"
        },
        "start": {
         "type": "string",
         "pattern": "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2}(?:[.]\\d{3})?)?"
        }
       },
       "required": [
        "end",
        "start"
       ]
      }
     }
    },
    "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"
      ]
     }
    },
    "hazardousDetails": {
     "type": "object",
     "properties": {
      "emergencyContact": {
       "type": "object",
       "properties": {
        "name": {
         "type": "string"
        },
        "phone": {
         "type": "string"
        }
       },
       "required": [
        "phone"
       ]
      }
     },
     "required": [
      "emergencyContact"
     ]
    },
    "limitedAccessType": {
     "type": "object",
     "properties": {
      "destination": {
       "enum": [
        "Airport",
        "Airport-3",
        "Church",
        "Church-55",
        "Club",
        "Club-21",
        "Club-60",
        "Construction",
        "Construction-17",
        "Fair",
        "Fair-27",
        "Farm",
        "Farm-30",
        "Farm-62",
        "Farm-87",
        "Hotel",
        "Hotel-14",
        "Hotel-35",
        "Hotel-41",
        "Hotel-47",
        "Hotel-54",
        "Hotel-65",
        "Hotel-66",
        "Mine",
        "Mine-46",
        "Other",
        "Other-6",
        "Other-7",
        "Other-8",
        "Other-9",
        "Other-12",
        "Other-13",
        "Other-19",
        "Other-23",
        "Other-24",
        "Other-25",
        "Other-26",
        "Other-28",
        "Other-31",
        "Other-33",
        "Other-38",
        "Other-40",
        "Other-42",
        "Other-48",
        "Other-52",
        "Other-67",
        "Other-68",
        "Other-72",
        "Other-75",
        "Other-78",
        "Other-80",
        "Other-83",
        "Park",
        "Park-4",
        "Park-5",
        "Park-10",
        "Park-11",
        "Park-15",
        "Park-53",
        "Park-64",
        "Park-73",
        "Park-76",
        "Park-77",
        "Park-88",
        "Port",
        "Port-22",
        "Port-29",
        "Port-43",
        "Port-57",
        "School",
        "School-34",
        "School-36",
        "School-39",
        "School-44",
        "School-50",
        "School-56",
        "School-61",
        "School-69",
        "School-70",
        "School-79",
        "School-81",
        "Secure",
        "Secure-32",
        "Secure-37",
        "Secure-45",
        "Secure-49",
        "Secure-51",
        "Secure-58",
        "Secure-59",
        "Secure-63",
        "Secure-74",
        "Secure-82",
        "Secure-84",
        "Secure-85",
        "Secure-86",
        "Storage",
        "Storage-18",
        "Storage-71",
        "Tradeshow",
        "Tradeshow-16",
        "Tradeshow-20"
       ]
      },
      "origin": {
       "enum": [
        "Airport",
        "Airport-3",
        "Church",
        "Church-55",
        "Club",
        "Club-21",
        "Club-60",
        "Construction",
        "Construction-17",
        "Fair",
        "Fair-27",
        "Farm",
        "Farm-30",
        "Farm-62",
        "Farm-87",
        "Hotel",
        "Hotel-14",
        "Hotel-35",
        "Hotel-41",
        "Hotel-47",
        "Hotel-54",
        "Hotel-65",
        "Hotel-66",
        "Mine",
        "Mine-46",
        "Other",
        "Other-6",
        "Other-7",
        "Other-8",
        "Other-9",
        "Other-12",
        "Other-13",
        "Other-19",
        "Other-23",
        "Other-24",
        "Other-25",
        "Other-26",
        "Other-28",
        "Other-31",
        "Other-33",
        "Other-38",
        "Other-40",
        "Other-42",
        "Other-48",
        "Other-52",
        "Other-67",
        "Other-68",
        "Other-72",
        "Other-75",
        "Other-78",
        "Other-80",
        "Other-83",
        "Park",
        "Park-4",
        "Park-5",
        "Park-10",
        "Park-11",
        "Park-15",
        "Park-53",
        "Park-64",
        "Park-73",
        "Park-76",
        "Park-77",
        "Park-88",
        "Port",
        "Port-22",
        "Port-29",
        "Port-43",
        "Port-57",
        "School",
        "School-34",
        "School-36",
        "School-39",
        "School-44",
        "School-50",
        "School-56",
        "School-61",
        "School-69",
        "School-70",
        "School-79",
        "School-81",
        "Secure",
        "Secure-32",
        "Secure-37",
        "Secure-45",
        "Secure-49",
        "Secure-51",
        "Secure-58",
        "Secure-59",
        "Secure-63",
        "Secure-74",
        "Secure-82",
        "Secure-84",
        "Secure-85",
        "Secure-86",
        "Storage",
        "Storage-18",
        "Storage-71",
        "Tradeshow",
        "Tradeshow-16",
        "Tradeshow-20"
       ]
      }
     },
     "required": [
      "destination",
      "origin"
     ]
    }
   }
  },
  "billTo": {
   "type": "object",
   "properties": {
    "account": {
     "type": "string"
    },
    "address1": {
     "type": "string"
    },
    "address2": {
     "type": "string"
    },
    "city": {
     "type": "string"
    },
    "contact": {
     "type": "object",
     "properties": {
      "email": {
       "type": "string"
      },
      "name": {
       "type": "string"
      },
      "phone": {
       "type": "string"
      },
      "phoneExt": {
       "type": "string"
      },
      "notify": {
       "enum": [
        "E"
       ]
      }
     },
     "required": [
      "name"
     ]
    },
    "country": {
     "enum": [
      "USA",
      "CAN",
      "MEX"
     ]
    },
    "name": {
     "type": "string"
    },
    "postalCode": {
     "type": "string",
     "pattern": "(?:\\d{5}(?:[-]\\d{4})?)|(?:(?:[A-Za-z][0-9][A-Za-z][0-9][A-Za-z])[0-9]?)"
    },
    "stateProvince": {
     "enum": [
      "AL",
      "AK",
      "AZ",
      "AR",
      "CA",
      "CO",
      "CT",
      "DC",
      "DE",
      "FL",
      "GA",
      "HI",
      "ID",
      "IL",
      "IN",
      "IA",
      "KS",
      "KY",
      "LA",
      "ME",
      "MD",
      "MA",
      "MI",
      "MN",
      "MS",
      "MO",
      "MT",
      "NE",
      "NV",
      "NH",
      "NJ",
      "NM",
      "NY",
      "NC",
      "ND",
      "OH",
      "OK",
      "OR",
      "PA",
      "PR",
      "RI",
      "SC",
      "SD",
      "TN",
      "TX",
      "UT",
      "VT",
      "VA",
      "WA",
      "WV",
      "WI",
      "WY",
      "AB",
      "BC",
      "MB",
      "NB",
      "NL",
      "NS",
      "NT",
      "NU",
      "ON",
      "PE",
      "QC",
      "SK",
      "YT",
      "CMX",
      "AGU",
      "BCN",
      "BCS",
      "CAM",
      "COA",
      "COL",
      "CHP",
      "CHH",
      "DUR",
      "GUA",
      "GRO",
      "HID",
      "JAL",
      "MEX",
      "MIC",
      "MOR",
      "NAY",
      "NLE",
      "OAX",
      "PUE",
      "QUE",
      "ROO",
      "SLP",
      "SIN",
      "SON",
      "TAB",
      "TAM",
      "TLA",
      "VER",
      "YUC",
      "ZAC"
     ]
    }
   },
   "required": [
    "address1",
    "city",
    "contact",
    "country",
    "postalCode",
    "stateProvince"
   ]
  },
  "pickup": {
   "type": "object",
   "properties": {
    "function": {
     "enum": [
      "Update"
     ]
    },
    "isTest": {
     "type": "boolean"
    },
    "requestAction": {
     "enum": [
      "AP",
      "HE",
      "HL",
      "LL",
      "SE"
     ]
    },
    "requestedPickupDate": {
     "type": "string",
     "pattern": "\\d{4}-\\d{2}-\\d{2}"
    },
    "requestorRole": {
     "enum": [
      "Shipper",
      "Consignee",
      "Third Party"
     ]
    },
    "specialInstructions": {
     "type": "string"
    }
   },
   "required": [
    "function",
    "requestAction",
    "requestedPickupDate",
    "requestorRole"
   ]
  },
  "commodities": {
   "type": "object",
   "properties": {
    "handlingUnits": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "count": {
        "type": "integer"
       },
       "dimensionsUnit": {
        "enum": [
         "Inches",
         "Centimeters"
        ]
       },
       "height": {
        "type": "integer"
       },
       "length": {
        "type": "integer"
       },
       "lineItems": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "classification": {
           "enum": [
            "50",
            "55",
            "60",
            "65",
            "70",
            "77.5",
            "85",
            "92.5",
            "100",
            "110",
            "125",
            "150",
            "175",
            "200",
            "250",
            "300",
            "400",
            "500"
           ]
          },
          "description": {
           "type": "string"
          },
          "hazardous": {
           "type": "boolean"
          },
          "hazardousDescription": {
           "type": "string"
          },
          "hazardousDetails": {
           "type": "object",
           "properties": {
            "class": {
             "type": "string"
            },
            "contractNumber": {
             "type": "string"
            },
            "packingGroup": {
             "type": "string"
            },
            "propername": {
             "type": "string"
            },
            "technicalName": {
             "type": "string"
            },
            "unnaNumber": {
             "type": "string"
            },
            "weight": {
             "type": "integer"
            },
            "weightUnit": {
             "enum": [
              "Pounds",
              "Kilograms"
             ]
            },
            "flag": {
             "enum": [
              "C",
              "D",
              "E",
              "F",
              "G",
              "H",
              "L",
              "M",
              "N",
              "P",
              "R",
              "S",
              "X"
             ]
            }
           },
           "required": [
            "unnaNumber"
           ]
          },
          "nmfc": {
           "type": "string",
           "pattern": "\\d+"
          },
          "nmfcSub": {
           "type": "string",
           "pattern": "\\d+"
          },
          "packagingType": {
           "enum:": [
            "TL",
            "KT",
            "CS",
            "BL",
            "CR",
            "PT",
            "BR",
            "CT",
            "CN",
            "CY",
            "DR",
            "RE",
            "BX",
            "BG",
            "PK",
            "TO",
            "BD",
            "BK",
            "JC",
            "RL",
            "PL",
            "PC",
            "SK"
           ]
          },
          "pieces": {
           "type": "integer"
          },
          "weight": {
           "type": "integer"
          },
          "weightUnit": {
           "enum": [
            "Pounds",
            "Kilograms"
           ]
          }
         },
         "required": [
          "classification",
          "description",
          "packagingType",
          "pieces",
          "weight"
         ]
        }
       },
       "stackable": {
        "type": "boolean"
       },
       "tareWeight": {
        "type": "integer"
       },
       "type": {
        "enum:": [
         "TL",
         "KT",
         "CS",
         "BL",
         "CR",
         "PT",
         "BR",
         "CT",
         "CN",
         "CY",
         "DR",
         "RE",
         "BX",
         "BG",
         "PK",
         "TO",
         "BD",
         "BK",
         "JC",
         "RL",
         "PL",
         "PC",
         "SK"
        ]
       },
       "weight": {
        "type": "integer"
       },
       "weightUnit": {
        "enum": [
         "Pounds",
         "Kilograms"
        ]
       },
       "width": {
        "type": "integer"
       }
      },
      "required": [
       "lineItems"
      ]
     }
    }
   }
  },
  "destination": {
   "type": "object",
   "properties": {
    "account": {
     "type": "string"
    },
    "address1": {
     "type": "string"
    },
    "address2": {
     "type": "string"
    },
    "city": {
     "type": "string"
    },
    "contact": {
     "type": "object",
     "properties": {
      "email": {
       "type": "string"
      },
      "name": {
       "type": "string"
      },
      "phone": {
       "type": "string"
      },
      "phoneExt": {
       "type": "string"
      },
      "notify": {
       "enum": [
        "E"
       ]
      }
     },
     "required": [
      "name"
     ]
    },
    "country": {
     "enum": [
      "USA",
      "CAN",
      "MEX"
     ]
    },
    "name": {
     "type": "string"
    },
    "postalCode": {
     "type": "string",
     "pattern": "(?:\\d{5}(?:[-]\\d{4})?)|(?:(?:[A-Za-z][0-9][A-Za-z][0-9][A-Za-z])[0-9]?)"
    },
    "stateProvince": {
     "enum": [
      "AL",
      "AK",
      "AZ",
      "AR",
      "CA",
      "CO",
      "CT",
      "DC",
      "DE",
      "FL",
      "GA",
      "HI",
      "ID",
      "IL",
      "IN",
      "IA",
      "KS",
      "KY",
      "LA",
      "ME",
      "MD",
      "MA",
      "MI",
      "MN",
      "MS",
      "MO",
      "MT",
      "NE",
      "NV",
      "NH",
      "NJ",
      "NM",
      "NY",
      "NC",
      "ND",
      "OH",
      "OK",
      "OR",
      "PA",
      "PR",
      "RI",
      "SC",
      "SD",
      "TN",
      "TX",
      "UT",
      "VT",
      "VA",
      "WA",
      "WV",
      "WI",
      "WY",
      "AB",
      "BC",
      "MB",
      "NB",
      "NL",
      "NS",
      "NT",
      "NU",
      "ON",
      "PE",
      "QC",
      "SK",
      "YT",
      "CMX",
      "AGU",
      "BCN",
      "BCS",
      "CAM",
      "COA",
      "COL",
      "CHP",
      "CHH",
      "DUR",
      "GUA",
      "GRO",
      "HID",
      "JAL",
      "MEX",
      "MIC",
      "MOR",
      "NAY",
      "NLE",
      "OAX",
      "PUE",
      "QUE",
      "ROO",
      "SLP",
      "SIN",
      "SON",
      "TAB",
      "TAM",
      "TLA",
      "VER",
      "YUC",
      "ZAC"
     ]
    }
   },
   "required": [
    "address1",
    "city",
    "contact",
    "country",
    "postalCode",
    "stateProvince"
   ]
  },
  "notifications": {
   "type": "array",
   "items": {
    "type": "object",
    "properties": {
     "email": {
      "type": "string"
     },
     "contactType": {
      "enum": [
       "A",
       "S",
       "C",
       "3"
      ]
     }
    },
    "required": [
     "email"
    ]
   }
  },
  "notifyTypes": {
   "type": "array",
   "items": {
    "enum": [
     "ACC",
     "BGN",
     "RCV",
     "RJT",
     "WRK"
    ]
   }
  },
  "origin": {
   "type": "object",
   "properties": {
    "account": {
     "type": "string"
    },
    "address1": {
     "type": "string"
    },
    "address2": {
     "type": "string"
    },
    "city": {
     "type": "string"
    },
    "contact": {
     "type": "object",
     "properties": {
      "email": {
       "type": "string"
      },
      "name": {
       "type": "string"
      },
      "phone": {
       "type": "string"
      },
      "phoneExt": {
       "type": "string"
      },
      "notify": {
       "enum": [
        "E"
       ]
      }
     },
     "required": [
      "name"
     ]
    },
    "country": {
     "enum": [
      "USA",
      "CAN",
      "MEX"
     ]
    },
    "name": {
     "type": "string"
    },
    "postalCode": {
     "type": "string",
     "pattern": "(?:\\d{5}(?:[-]\\d{4})?)|(?:(?:[A-Za-z][0-9][A-Za-z][0-9][A-Za-z])[0-9]?)"
    },
    "stateProvince": {
     "enum": [
      "AL",
      "AK",
      "AZ",
      "AR",
      "CA",
      "CO",
      "CT",
      "DC",
      "DE",
      "FL",
      "GA",
      "HI",
      "ID",
      "IL",
      "IN",
      "IA",
      "KS",
      "KY",
      "LA",
      "ME",
      "MD",
      "MA",
      "MI",
      "MN",
      "MS",
      "MO",
      "MT",
      "NE",
      "NV",
      "NH",
      "NJ",
      "NM",
      "NY",
      "NC",
      "ND",
      "OH",
      "OK",
      "OR",
      "PA",
      "PR",
      "RI",
      "SC",
      "SD",
      "TN",
      "TX",
      "UT",
      "VT",
      "VA",
      "WA",
      "WV",
      "WI",
      "WY",
      "AB",
      "BC",
      "MB",
      "NB",
      "NL",
      "NS",
      "NT",
      "NU",
      "ON",
      "PE",
      "QC",
      "SK",
      "YT",
      "CMX",
      "AGU",
      "BCN",
      "BCS",
      "CAM",
      "COA",
      "COL",
      "CHP",
      "CHH",
      "DUR",
      "GUA",
      "GRO",
      "HID",
      "JAL",
      "MEX",
      "MIC",
      "MOR",
      "NAY",
      "NLE",
      "OAX",
      "PUE",
      "QUE",
      "ROO",
      "SLP",
      "SIN",
      "SON",
      "TAB",
      "TAM",
      "TLA",
      "VER",
      "YUC",
      "ZAC"
     ]
    }
   },
   "required": [
    "address1",
    "city",
    "contact",
    "country",
    "postalCode",
    "stateProvince"
   ]
  },
  "payment": {
   "type": "object",
   "properties": {
    "terms": {
     "enum": [
      "Prepaid",
      "Collect",
      "Third Party"
     ]
    }
   },
   "required": [
    "terms"
   ]
  },
  "referenceNumbers": {
   "type": "object",
   "properties": {
    "additionalReferences": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "name": {
        "type": "string"
       },
       "value": {
        "type": "string"
       }
      },
      "required": [
       "name",
       "value"
      ]
     }
    },
    "bol": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "manifestId": {
     "type": "string"
    },
    "masterBol": {
     "type": "string"
    },
    "po": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "additionalShipperInfo": {
        "type": "string"
       },
       "number": {
        "type": "string"
       },
       "palletized": {
        "type": "boolean"
       },
       "pieces": {
        "type": "integer"
       },
       "weight": {
        "type": "integer"
       },
       "weightUnit": {
        "enum": [
         "Pounds",
         "Kilograms"
        ]
       }
      }
     }
    },
    "pro": {
     "type": "string"
    },
    "quoteId": {
     "type": "string"
    },
    "shipmentId": {
     "type": "string"
    },
    "trailerId": {
     "type": "string"
    }
   },
   "required": [
    "pro"
   ]
  },
  "shipmentTotals": {
   "type": "object",
   "properties": {
    "cube": {
     "type": "integer"
    },
    "cubeDimensionsUnit": {
     "enum": [
      "Feet",
      "Meters"
     ]
    },
    "currency": {
     "enum": [
      "USD",
      "CAD",
      "MXN"
     ]
    },
    "declaredValue": {
     "type": "integer"
    },
    "dimensionsUnit": {
     "enum": [
      "Inches",
      "Centimeters"
     ]
    },
    "grossWeight": {
     "type": "integer"
    },
    "handlingUnits": {
     "type": "integer"
    },
    "linearLength": {
     "type": "integer"
    },
    "netWeight": {
     "type": "integer"
    },
    "weightUnit": {
     "enum": [
      "Pounds",
      "Kilograms"
     ]
    }
   }
  },
  "requestNumber": {
   "type": "string"
  }
 },
 "required": [
  "pickup"
 ]
}