diff --git a/Terminal49-API.postman_collection.json b/Terminal49-API.postman_collection.json index 621cd66e9..ec9a98598 100644 --- a/Terminal49-API.postman_collection.json +++ b/Terminal49-API.postman_collection.json @@ -5,7 +5,7 @@ "description": "", "item": [ { - "id": "77902c55-f55a-4ad9-a2a7-45d5766b96fa", + "id": "871e4b48-bb31-4175-afee-4fbcbca054c6", "name": "List containers", "request": { "name": "List containers", @@ -289,7 +289,7 @@ "type": "text/plain" }, "key": "filter[current_status][]", - "value": "loaded" + "value": "empty_returned" }, { "disabled": true, @@ -1062,7 +1062,7 @@ }, "response": [ { - "id": "3e6a9989-0ec3-43f8-98e1-b9af45719545", + "id": "1053ee2b-ac64-4ac1-a3cc-2b2b96811fb4", "name": "OK", "originalRequest": { "url": { @@ -1341,7 +1341,7 @@ "type": "text/plain" }, "key": "filter[current_status][]", - "value": "loaded" + "value": "empty_returned" }, { "disabled": true, @@ -2109,12 +2109,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"bulk\",\n \"equipment_length\": 40,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"exam\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"exam\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"available\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"reefer\",\n \"equipment_length\": 20,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"total\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"exam\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"on_ship\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n }\n ],\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"no_updates_at_line\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"rail_terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"booking_cancelled\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"metro_area\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"rail_terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": null,\n \"equipment_length\": 45,\n \"equipment_height\": \"standard\",\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"other\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"other\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"empty_returned\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": null,\n \"equipment_length\": 20,\n \"equipment_height\": null,\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"exam\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"demurrage\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"not_available\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n }\n ],\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"past_arrival_window\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"metro_area\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"booking_cancelled\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"metro_area\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"rail_terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "39277a64-70e8-4806-92c2-d72b2b6ee532", + "id": "7fb40da1-1850-4c9e-b027-903fa1a5ebc2", "name": "Malformed supported filter value, operator, range, or strict boolean. The error identifies the invalid parameter where available.", "originalRequest": { "url": { @@ -2393,7 +2393,7 @@ "type": "text/plain" }, "key": "filter[current_status][]", - "value": "loaded" + "value": "empty_returned" }, { "disabled": true, @@ -3161,7 +3161,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -3172,7 +3172,7 @@ } }, { - "id": "f6a28143-e8c8-4df7-af15-ce76827f6bf4", + "id": "18b044d5-a963-4c34-be8a-f8645186032e", "name": "Summarize containers", "request": { "name": "Summarize containers", @@ -3780,7 +3780,7 @@ }, "response": [ { - "id": "c6074b4e-b4ed-412d-957f-19852f27acd2", + "id": "97f77392-e9ea-4e01-af54-3d538b5ea3b1", "name": "OK", "originalRequest": { "url": { @@ -4387,12 +4387,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"key\": \"\",\n \"label\": \"\",\n \"count\": \"\"\n },\n {\n \"key\": \"\",\n \"label\": \"\",\n \"count\": \"\"\n }\n ],\n \"meta\": {\n \"total\": \"\",\n \"group_by\": \"pickup_lfd_date\",\n \"truncated\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"key\": \"\",\n \"label\": \"\",\n \"count\": \"\"\n },\n {\n \"key\": \"\",\n \"label\": \"\",\n \"count\": \"\"\n }\n ],\n \"meta\": {\n \"total\": \"\",\n \"group_by\": \"pod_arrival_date\",\n \"truncated\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "b4ae94ed-ae26-4c6a-80a0-96b29fe72ca2", + "id": "bd5240a9-389f-45ef-bed7-9d5c2f05820a", "name": "Unknown group_by, or an invalid filter.", "originalRequest": { "url": { @@ -5000,7 +5000,7 @@ } }, { - "id": "89793e22-a470-42a7-8b8b-7ebecdc866b2", + "id": "4f5de6ba-b926-488a-9806-74691eb3c318", "name": "Get a container", "request": { "name": "Get a container", @@ -5052,7 +5052,7 @@ }, "response": [ { - "id": "f555f271-fa1f-45df-ad91-17a7e4d1ddf4", + "id": "88b60f95-6cfd-4e41-a8f5-8a917a33f1d7", "name": "OK", "originalRequest": { "url": { @@ -5112,12 +5112,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": null,\n \"equipment_length\": 10,\n \"equipment_height\": null,\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"other\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"total\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"empty_returned\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"no_updates_at_line\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"metro_area\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"cancelled_by_user\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n }\n ]\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"reefer\",\n \"equipment_length\": 20,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"exam\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"demurrage\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"empty_returned\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"all_containers_terminated\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"metro_area\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": null\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "144bc8e4-d67e-483d-b3f3-11339b118850", + "id": "84baac0b-b729-42ca-a683-415b586acd30", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -5177,12 +5177,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "4911edd1-8c8c-4d43-a835-3f289f19a962", + "id": "7c43f4b1-40bb-41da-a9fa-d625e0e183e0", "name": "Not Found", "originalRequest": { "url": { @@ -5242,7 +5242,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -5253,7 +5253,7 @@ } }, { - "id": "e49aef20-c9a1-47d6-aa27-1870027a820d", + "id": "0caa2a35-c8bd-4356-acf4-522e7be40c4b", "name": "Edit a container", "request": { "name": "Edit a container", @@ -5296,7 +5296,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"seal_number\": \"\",\n \"equipment_type\": \"reefer\",\n \"equipment_length\": 24,\n \"equipment_height\": \"flexible\",\n \"weight_in_lbs\": \"\"\n },\n \"type\": \"container\",\n \"id\": \"\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"seal_number\": \"\",\n \"equipment_type\": \"dry\",\n \"equipment_length\": 45,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\"\n },\n \"type\": \"container\",\n \"id\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -5308,7 +5308,7 @@ }, "response": [ { - "id": "cbb84f69-0f46-4d20-8a54-57c583d9839f", + "id": "449e7c21-c9fd-4f9c-bc5a-17849d922317", "name": "OK", "originalRequest": { "url": { @@ -5354,7 +5354,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"seal_number\": \"\",\n \"equipment_type\": \"reefer\",\n \"equipment_length\": 24,\n \"equipment_height\": \"flexible\",\n \"weight_in_lbs\": \"\"\n },\n \"type\": \"container\",\n \"id\": \"\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"seal_number\": \"\",\n \"equipment_type\": \"dry\",\n \"equipment_length\": 45,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\"\n },\n \"type\": \"container\",\n \"id\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -5371,12 +5371,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": null,\n \"equipment_length\": null,\n \"equipment_height\": null,\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"total\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"exam\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"grounded\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"dry\",\n \"equipment_length\": 10,\n \"equipment_height\": null,\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"total\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"demurrage\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"not_available\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "33ff51f7-6d77-4eca-9c9d-90b01fa6b02a", + "id": "52e53dac-7205-4db5-b5fd-a2570bbda2da", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -5422,7 +5422,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"seal_number\": \"\",\n \"equipment_type\": \"reefer\",\n \"equipment_length\": 24,\n \"equipment_height\": \"flexible\",\n \"weight_in_lbs\": \"\"\n },\n \"type\": \"container\",\n \"id\": \"\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"seal_number\": \"\",\n \"equipment_type\": \"dry\",\n \"equipment_length\": 45,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\"\n },\n \"type\": \"container\",\n \"id\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -5439,12 +5439,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "4fce5f66-1bab-4ccb-b770-1c068f81fa53", + "id": "69d099ce-966e-4517-8088-3f7f339886a4", "name": "Not Found", "originalRequest": { "url": { @@ -5490,7 +5490,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"seal_number\": \"\",\n \"equipment_type\": \"reefer\",\n \"equipment_length\": 24,\n \"equipment_height\": \"flexible\",\n \"weight_in_lbs\": \"\"\n },\n \"type\": \"container\",\n \"id\": \"\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"seal_number\": \"\",\n \"equipment_type\": \"dry\",\n \"equipment_length\": 45,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\"\n },\n \"type\": \"container\",\n \"id\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -5507,12 +5507,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "f8bb8637-aef6-4ae4-a438-e1a45a130f33", + "id": "096dd837-4971-4bb6-afcb-d7b2382f1e9e", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -5558,7 +5558,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"seal_number\": \"\",\n \"equipment_type\": \"reefer\",\n \"equipment_length\": 24,\n \"equipment_height\": \"flexible\",\n \"weight_in_lbs\": \"\"\n },\n \"type\": \"container\",\n \"id\": \"\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"seal_number\": \"\",\n \"equipment_type\": \"dry\",\n \"equipment_length\": 45,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\"\n },\n \"type\": \"container\",\n \"id\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -5575,7 +5575,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -5586,7 +5586,7 @@ } }, { - "id": "51eed18c-ba6e-4f4e-92dc-3afc297ceed7", + "id": "2e9fa3ab-a8a2-4f8d-95d1-8dc5bbd06cd9", "name": "Get a container's raw events", "request": { "name": "Get a container's raw events", @@ -5629,7 +5629,7 @@ }, "response": [ { - "id": "a1e475dd-178f-4484-bc5f-3a5afcd3f70b", + "id": "6b949b19-6420-4f63-a6dc-7bf4a2c4bc8a", "name": "OK", "originalRequest": { "url": { @@ -5680,12 +5680,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\",\n \"attributes\": {\n \"event\": \"rail_departed\",\n \"original_event\": \"\",\n \"timestamp\": \"\",\n \"estimated\": \"\",\n \"actual_on\": \"\",\n \"estimated_on\": \"\",\n \"actual_at\": \"\",\n \"estimated_at\": \"\",\n \"timezone\": \"\",\n \"created_at\": \"\",\n \"location_name\": \"\",\n \"location_locode\": \"\",\n \"vessel_name\": \"\",\n \"vessel_imo\": \"\",\n \"index\": \"\",\n \"voyage_number\": \"\"\n },\n \"relationships\": {\n \"location\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"port\"\n }\n },\n \"vessel\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"vessel\"\n }\n },\n \"container\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\"\n }\n },\n \"terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\",\n \"attributes\": {\n \"event\": \"transshipment_loaded\",\n \"original_event\": \"\",\n \"timestamp\": \"\",\n \"estimated\": \"\",\n \"actual_on\": \"\",\n \"estimated_on\": \"\",\n \"actual_at\": \"\",\n \"estimated_at\": \"\",\n \"timezone\": \"\",\n \"created_at\": \"\",\n \"location_name\": \"\",\n \"location_locode\": \"\",\n \"vessel_name\": \"\",\n \"vessel_imo\": \"\",\n \"index\": \"\",\n \"voyage_number\": \"\"\n },\n \"relationships\": {\n \"location\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"metro_area\"\n }\n },\n \"vessel\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"vessel\"\n }\n },\n \"container\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\"\n }\n },\n \"terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n }\n }\n }\n ]\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\",\n \"attributes\": {\n \"event\": \"rail_departed\",\n \"original_event\": \"\",\n \"timestamp\": \"\",\n \"estimated\": \"\",\n \"actual_on\": \"\",\n \"estimated_on\": \"\",\n \"actual_at\": \"\",\n \"estimated_at\": \"\",\n \"timezone\": \"\",\n \"created_at\": \"\",\n \"location_name\": \"\",\n \"location_locode\": \"\",\n \"vessel_name\": \"\",\n \"vessel_imo\": \"\",\n \"index\": \"\",\n \"voyage_number\": \"\"\n },\n \"relationships\": {\n \"location\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"port\"\n }\n },\n \"vessel\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"vessel\"\n }\n },\n \"container\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\"\n }\n },\n \"terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\",\n \"attributes\": {\n \"event\": \"vessel_loaded\",\n \"original_event\": \"\",\n \"timestamp\": \"\",\n \"estimated\": \"\",\n \"actual_on\": \"\",\n \"estimated_on\": \"\",\n \"actual_at\": \"\",\n \"estimated_at\": \"\",\n \"timezone\": \"\",\n \"created_at\": \"\",\n \"location_name\": \"\",\n \"location_locode\": \"\",\n \"vessel_name\": \"\",\n \"vessel_imo\": \"\",\n \"index\": \"\",\n \"voyage_number\": \"\"\n },\n \"relationships\": {\n \"location\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"metro_area\"\n }\n },\n \"vessel\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"vessel\"\n }\n },\n \"container\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\"\n }\n },\n \"terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n }\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "65ecde44-0061-4118-99a2-c3d2ce63c8d5", + "id": "9a3ab919-c423-44ce-9be8-27261572f203", "name": "Not Found", "originalRequest": { "url": { @@ -5736,7 +5736,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -5747,7 +5747,7 @@ } }, { - "id": "6615eeaa-7b8e-42f1-9a33-8e1d9c5df28f", + "id": "20380569-4532-4e81-a14b-860933b05be1", "name": "Get a container's transport events", "request": { "name": "Get a container's transport events", @@ -5800,7 +5800,7 @@ }, "response": [ { - "id": "253d3689-c856-48eb-85df-c89605ce4c1c", + "id": "92b1521c-5aad-49e9-ae11-1a854a109593", "name": "OK", "originalRequest": { "url": { @@ -5861,12 +5861,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\",\n \"attributes\": {\n \"event\": \"document_representation.created\",\n \"voyage_number\": \"\",\n \"timestamp\": \"\",\n \"timezone\": \"\",\n \"location_locode\": \"\",\n \"created_at\": \"\",\n \"data_source\": \"terminal\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"location\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"port\"\n }\n },\n \"vessel\": {\n \"data\": {\n \"id\": \"\",\n \"name\": \"vessel\"\n }\n },\n \"terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"rail_terminal\"\n }\n },\n \"container\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\",\n \"attributes\": {\n \"event\": \"container.transport.vessel_departed\",\n \"voyage_number\": \"\",\n \"timestamp\": \"\",\n \"timezone\": \"\",\n \"location_locode\": \"\",\n \"created_at\": \"\",\n \"data_source\": \"ais\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"location\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"metro_area\"\n }\n },\n \"vessel\": {\n \"data\": {\n \"id\": \"\",\n \"name\": \"vessel\"\n }\n },\n \"terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"container\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\"\n }\n }\n }\n }\n ],\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"cancelled_by_user\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"metro_area\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"past_arrival_window\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\",\n \"attributes\": {\n \"event\": \"container.pickup_lfd.changed\",\n \"voyage_number\": \"\",\n \"timestamp\": \"\",\n \"timezone\": \"\",\n \"location_locode\": \"\",\n \"created_at\": \"\",\n \"data_source\": \"terminal\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"location\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"metro_area\"\n }\n },\n \"vessel\": {\n \"data\": {\n \"id\": \"\",\n \"name\": \"vessel\"\n }\n },\n \"terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"container\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\",\n \"attributes\": {\n \"event\": \"container.transport.rail_arrived\",\n \"voyage_number\": \"\",\n \"timestamp\": \"\",\n \"timezone\": \"\",\n \"location_locode\": \"\",\n \"created_at\": \"\",\n \"data_source\": \"shipping_line\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"location\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"port\"\n }\n },\n \"vessel\": {\n \"data\": {\n \"id\": \"\",\n \"name\": \"vessel\"\n }\n },\n \"terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"container\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container\"\n }\n }\n }\n }\n ],\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"past_full_out_window\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"all_containers_terminated\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"metro_area\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "d43d5cae-f75a-4357-ac03-8df7c5e43390", + "id": "439cfea2-16e7-42b6-a7c8-b90fd247072a", "name": "Not Found", "originalRequest": { "url": { @@ -5927,7 +5927,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -5938,7 +5938,7 @@ } }, { - "id": "5e508caa-55dd-4693-b0da-c27e73fb6f33", + "id": "1a6005c1-483b-4f5c-a69f-4aca63e6ff22", "name": "Get container map GeoJSON", "request": { "name": "Get container map GeoJSON", @@ -5981,7 +5981,7 @@ }, "response": [ { - "id": "e567bb24-577c-4ae8-b990-97bc7d09d789", + "id": "576c405a-814f-4c90-bc93-103e030e3e25", "name": "OK", "originalRequest": { "url": { @@ -6037,7 +6037,7 @@ "_postman_previewlanguage": "json" }, { - "id": "179f6ed7-6065-4590-a382-094b1f3fb6d7", + "id": "7b14dd09-fb4f-42cc-9301-b49b1f76aa2d", "name": "Forbidden - Routing data feature is not enabled for this account", "originalRequest": { "url": { @@ -6093,7 +6093,7 @@ "_postman_previewlanguage": "json" }, { - "id": "4cd9b0ce-77ce-4ad6-862e-8ec83469ff4b", + "id": "08ea3b6d-6395-429f-9519-c2334c6bedac", "name": "Not Found", "originalRequest": { "url": { @@ -6144,7 +6144,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -6155,7 +6155,7 @@ } }, { - "id": "40551406-5128-4b0f-8a9b-eddbb7f8cf87", + "id": "9556531e-51a8-4399-9fc2-dd40e47d6fa3", "name": "Refresh container", "request": { "name": "Refresh container", @@ -6198,7 +6198,7 @@ }, "response": [ { - "id": "e5ee2393-3262-43c5-9897-e1be4ad83200", + "id": "0d006d4e-1c74-48dd-a4f1-6caac2d1fd0e", "name": "OK", "originalRequest": { "url": { @@ -6254,7 +6254,7 @@ "_postman_previewlanguage": "json" }, { - "id": "8ee7d565-3caf-448b-a628-e52a7dc0fda9", + "id": "415f7687-c2d0-4de0-a499-f9f05bb236f1", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -6305,12 +6305,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "785b3947-d6bd-4f69-a8e8-879e6e63fcaa", + "id": "c8ac0960-9029-48f1-8480-3fd0861463c4", "name": "Forbidden - This API endpoint is not enabled for your account. Please contact support@terminal49.com", "originalRequest": { "url": { @@ -6366,7 +6366,7 @@ "_postman_previewlanguage": "json" }, { - "id": "6fcb3935-7e34-434f-a906-753c22012f84", + "id": "5c70b291-3463-4a4f-8b15-e673e25d72aa", "name": "Not Found", "originalRequest": { "url": { @@ -6417,12 +6417,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "9a588a02-ab72-43f0-9ee2-3d4ec533f1f7", + "id": "e3e06c5a-d056-4ac9-9d0d-c9c95539b1ec", "name": "Too Many Requests - You've hit the refresh limit. Please try again in a minute.", "originalRequest": { "url": { @@ -6493,7 +6493,7 @@ } }, { - "id": "6e96d59b-9ef3-4c31-877e-12929caccfe7", + "id": "d9d008f2-efc9-4759-9337-5ccaf88d0291", "name": "List container custom fields", "request": { "name": "List container custom fields", @@ -6543,7 +6543,7 @@ }, "response": [ { - "id": "74b0d77c-e0f2-4c38-a1d3-45c91bcd6ad1", + "id": "48d30aec-e9d0-4672-8660-e3cf9fc1d451", "name": "OK", "originalRequest": { "url": { @@ -6604,12 +6604,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"shipment\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"shipment\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"number\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": 7089.413102464811,\n \"key_2\": \"string\",\n \"key_3\": 6077.6544057832525\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"enum_multi\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 117,\n \"key_1\": false,\n \"key_2\": 3014.6165060200938\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n }\n ]\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"boolean\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 4134.544928549836\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"reference\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 4590.7942893670715,\n \"key_1\": 3830,\n \"key_2\": true\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "ddb685f4-edc4-48d5-a7e2-8a6ab30a6752", + "id": "6d880633-8171-4f9b-a193-ba2d809ccbcb", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -6670,12 +6670,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "c4e9840c-1fd9-4017-aef8-d8709bc9f958", + "id": "0547077c-744d-4463-9ea1-4326430561de", "name": "Not Found", "originalRequest": { "url": { @@ -6736,7 +6736,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -6747,7 +6747,7 @@ } }, { - "id": "a341c5f8-bd18-47a2-af1a-51cc58dd7869", + "id": "733ed165-1f5f-466e-b7ab-4b0a1e641e7c", "name": "Create a container custom field", "request": { "name": "Create a container custom field", @@ -6800,7 +6800,7 @@ }, "response": [ { - "id": "a82b67e7-ca61-40c9-a839-f292c369d695", + "id": "f898f7fe-0feb-4762-89ea-35cc226a4aa4", "name": "Created", "originalRequest": { "url": { @@ -6864,12 +6864,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "8ccceed4-609f-4bf3-90af-4fae745b9d6c", + "id": "516df9e8-239f-4f4a-a167-3b17d7f258d3", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -6933,12 +6933,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "b89a4aa9-4cf3-4073-ab56-b6a722b844fc", + "id": "97552125-4f80-44eb-980e-c376265aa079", "name": "Not Found", "originalRequest": { "url": { @@ -7002,12 +7002,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "5638a207-ab21-473d-b97c-bad25428c415", + "id": "6f3086cb-79c3-449a-938d-5892bd43b703", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -7071,7 +7071,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -7082,7 +7082,7 @@ } }, { - "id": "4a26c993-0b32-4c82-8cac-453faad595c3", + "id": "812b8e9c-7c43-40a0-b92c-35ef48844137", "name": "Update a container custom field", "request": { "name": "Update a container custom field", @@ -7146,7 +7146,7 @@ }, "response": [ { - "id": "f6fac230-3b69-4a9e-8ea1-59e7ae1d0a3d", + "id": "5eec0555-65ed-4307-8311-a5c76d0ef72e", "name": "OK", "originalRequest": { "url": { @@ -7221,12 +7221,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "00c31636-7334-4abd-9bdc-6b84e94ec341", + "id": "fe175711-e84d-4753-b4dc-a4191466eff6", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -7301,12 +7301,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "4b864cfd-2218-4e4c-9e0f-cc60f8c3b14f", + "id": "0d17fa45-9f8a-4c05-8c8f-f890dba91c1b", "name": "Not Found", "originalRequest": { "url": { @@ -7381,12 +7381,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "6d51b804-de94-44e0-9b22-adb5612743af", + "id": "11699ff1-95fc-480a-8d07-cbf79866e8a5", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -7461,7 +7461,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -7472,7 +7472,7 @@ } }, { - "id": "71a6acfa-03f7-4a94-b8ea-9f4c1f81ecae", + "id": "ae05dd84-951f-4437-b3ac-8bbe008cf5b3", "name": "Delete a container custom field", "request": { "name": "Delete a container custom field", @@ -7523,7 +7523,7 @@ }, "response": [ { - "id": "2b2e44e8-ff95-43ac-9e2a-6a2f15de61cb", + "id": "9421c5a8-93fc-4f3b-a5b7-bebd3f3e6440", "name": "No Content", "originalRequest": { "url": { @@ -7580,7 +7580,7 @@ "_postman_previewlanguage": "text" }, { - "id": "17ecdf0c-87db-459d-a6b5-bd90bf8cdf04", + "id": "f51d752a-adb1-47e2-9250-3a39f6a88dd6", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -7642,12 +7642,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "66cdc313-32d9-4728-83d5-be1615b681c4", + "id": "7d182080-5bee-4455-ad5f-97d515b308cf", "name": "Not Found", "originalRequest": { "url": { @@ -7709,7 +7709,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -7726,7 +7726,7 @@ "description": "", "item": [ { - "id": "ea9df42e-96e2-4885-8b6d-95ed1c228646", + "id": "908b605b-5feb-4b37-a9b3-e8fe9843c356", "name": "List custom field definition templates", "request": { "name": "List custom field definition templates", @@ -7784,7 +7784,7 @@ }, "response": [ { - "id": "bc178279-945f-4a56-9420-3a6795089dd5", + "id": "aa076324-9cf7-4959-8203-79fd2f463360", "name": "OK", "originalRequest": { "url": { @@ -7850,7 +7850,7 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"date\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": 5280.854377798684\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"enum_multi\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": true,\n \"key_2\": \"string\"\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"number\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 390.9329867453881,\n \"key_1\": 7561\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"reference\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 500,\n \"key_1\": 9835\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -7861,7 +7861,7 @@ } }, { - "id": "47fdabb6-0776-4345-bbf9-7b8721e515b7", + "id": "652fe264-aa5f-4771-87bb-8780d7b344c0", "name": "Create a custom field definition template", "request": { "name": "Create a custom field definition template", @@ -7892,7 +7892,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"boolean\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": 8585.336119442178\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"short_text\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -7904,7 +7904,7 @@ }, "response": [ { - "id": "13f12d1f-f4a4-43da-ad79-50446dfd7ee0", + "id": "11cd226f-422a-42dd-a250-e0dfbaae9207", "name": "Created", "originalRequest": { "url": { @@ -7938,7 +7938,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"boolean\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": 8585.336119442178\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"short_text\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -7955,12 +7955,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"date\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 9163.604892624346,\n \"key_1\": 6676.384966260913,\n \"key_2\": \"string\",\n \"key_3\": \"string\"\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"enum_multi\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 8033.372662260984,\n \"key_1\": \"string\",\n \"key_2\": false\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "f6a36fab-065f-465d-9b63-483f9e43ab14", + "id": "141a17e4-c789-41ce-861a-5a2af1ee05c6", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -7994,7 +7994,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"boolean\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": 8585.336119442178\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"short_text\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -8011,12 +8011,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "a1d9f614-fc0a-4806-a21a-b06c9278f40f", + "id": "7f6a6043-83c7-448d-86bb-7650f3e4c92f", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -8050,7 +8050,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"boolean\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": 8585.336119442178\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"short_text\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -8067,7 +8067,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -8078,7 +8078,7 @@ } }, { - "id": "4070f135-c9d0-495f-a3ac-9a91151eda5d", + "id": "bfc4a84d-2fe9-4cf4-8cf6-2aead1ea321a", "name": "Get a custom field definition", "request": { "name": "Get a custom field definition", @@ -8117,7 +8117,7 @@ }, "response": [ { - "id": "2d5e08fb-09d4-4007-876f-18416d358eaf", + "id": "f8757cee-e4dc-4eb0-9bab-cec6f86b1207", "name": "OK", "originalRequest": { "url": { @@ -8167,12 +8167,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"date\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 9163.604892624346,\n \"key_1\": 6676.384966260913,\n \"key_2\": \"string\",\n \"key_3\": \"string\"\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"enum_multi\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 8033.372662260984,\n \"key_1\": \"string\",\n \"key_2\": false\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "21036635-d332-42b1-9f34-ac05922e5eff", + "id": "4f1529e3-4f82-485c-b464-77506ba78dd9", "name": "Not Found", "originalRequest": { "url": { @@ -8222,7 +8222,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -8233,7 +8233,7 @@ } }, { - "id": "b089b7b5-3d71-430c-a47e-ab8ba5d64578", + "id": "4bd8274a-fad4-4383-9298-66648c961f6a", "name": "Update a custom field definition", "request": { "name": "Update a custom field definition", @@ -8285,7 +8285,7 @@ }, "response": [ { - "id": "7d5a45d4-7378-42d5-a4b3-34576ed72c77", + "id": "09c36cc0-3520-48ed-bb38-ad60150bb384", "name": "OK", "originalRequest": { "url": { @@ -8348,12 +8348,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"date\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 9163.604892624346,\n \"key_1\": 6676.384966260913,\n \"key_2\": \"string\",\n \"key_3\": \"string\"\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"enum_multi\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 8033.372662260984,\n \"key_1\": \"string\",\n \"key_2\": false\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "a5fa54ee-3073-4573-b927-528494033deb", + "id": "325080cd-d464-4956-83ef-d0f79b61c3ec", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -8416,12 +8416,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "356ac1f2-c69d-4d84-a410-a85095ae476f", + "id": "44b6a932-8b32-422a-94a4-eb9f57e519c0", "name": "Not Found", "originalRequest": { "url": { @@ -8484,12 +8484,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "6f0660d8-06f9-48fd-becf-95866031da67", + "id": "018d053b-045d-433e-a7b7-4cb4660f87e3", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -8552,7 +8552,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -8563,7 +8563,7 @@ } }, { - "id": "a7b92786-a951-4e01-b102-87ff0f18e0d6", + "id": "4c6062b1-275c-4a23-826a-87b42160e296", "name": "Delete a custom field definition", "request": { "name": "Delete a custom field definition", @@ -8605,7 +8605,7 @@ }, "response": [ { - "id": "f81bfe8d-547d-4720-8d52-29f57341f385", + "id": "da0ab096-9a9b-4743-bec8-124279d0dcbb", "name": "No Content", "originalRequest": { "url": { @@ -8650,7 +8650,7 @@ "_postman_previewlanguage": "text" }, { - "id": "a0b06af8-a7ce-4229-abb8-deb71efbfe7d", + "id": "de2086e9-b8da-42ea-8d27-98a477c966fb", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -8700,12 +8700,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "44803dfd-7859-4485-a0ad-775f3f0b8a1c", + "id": "09b963ee-307f-46b7-9fd9-ec4f46fa389d", "name": "Not Found", "originalRequest": { "url": { @@ -8755,12 +8755,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "03b2d753-c902-4fd0-8ce2-e0ab964a7bdb", + "id": "69b6f1d2-928e-4062-85f7-c1caf89474df", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -8810,7 +8810,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -8821,7 +8821,7 @@ } }, { - "id": "6bd2a1aa-bd23-4485-8449-c6c90e888750", + "id": "cbed2d6f-88ad-4a20-912a-0c4398706ab5", "name": "List custom field definitions", "request": { "name": "List custom field definitions", @@ -8892,7 +8892,7 @@ }, "response": [ { - "id": "455d1f00-0571-406a-95f4-8f16c856cc56", + "id": "e9d91ed6-49f2-45a9-b574-57db833dbadd", "name": "OK", "originalRequest": { "url": { @@ -8971,7 +8971,7 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"date\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": 5280.854377798684\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"enum_multi\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": true,\n \"key_2\": \"string\"\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"number\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 390.9329867453881,\n \"key_1\": 7561\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"reference\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 500,\n \"key_1\": 9835\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -8982,7 +8982,7 @@ } }, { - "id": "4e23e2a8-bb84-425c-9c3e-58edc7fceee3", + "id": "180e8361-d259-4435-b353-c1291abfe863", "name": "Create a custom field definition", "request": { "name": "Create a custom field definition", @@ -9026,7 +9026,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"description\": \"\",\n \"data_type\": \"number\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": \"string\"\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"template_id\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"description\": \"\",\n \"data_type\": \"reference\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 4566.791568506755\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"template_id\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -9038,7 +9038,7 @@ }, "response": [ { - "id": "a3a6363b-c02e-4d6a-a6a7-9613cc66ae9e", + "id": "5b926b03-7ee3-4449-b0e2-4155ea4eed15", "name": "Created", "originalRequest": { "url": { @@ -9085,7 +9085,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"description\": \"\",\n \"data_type\": \"number\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": \"string\"\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"template_id\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"description\": \"\",\n \"data_type\": \"reference\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 4566.791568506755\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"template_id\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -9102,12 +9102,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"date\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 9163.604892624346,\n \"key_1\": 6676.384966260913,\n \"key_2\": \"string\",\n \"key_3\": \"string\"\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"enum_multi\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 8033.372662260984,\n \"key_1\": \"string\",\n \"key_2\": false\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "68fce054-0db5-4890-a7ce-e74295bea872", + "id": "7e540122-465b-45e3-b59a-f46e9dc4bc23", "name": "`template_id` does not match a Terminal49 template.", "originalRequest": { "url": { @@ -9154,7 +9154,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"description\": \"\",\n \"data_type\": \"number\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": \"string\"\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"template_id\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"description\": \"\",\n \"data_type\": \"reference\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 4566.791568506755\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"template_id\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -9171,12 +9171,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "41542e01-e3ba-4d73-89ee-4798ede87a97", + "id": "315c1fcf-80bd-4997-9e25-e985219c46e4", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -9223,7 +9223,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"description\": \"\",\n \"data_type\": \"number\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": \"string\"\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"template_id\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"description\": \"\",\n \"data_type\": \"reference\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 4566.791568506755\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"template_id\": \"\",\n \"reference_number\": false,\n \"sensitive\": false,\n \"inline_option_creation\": false\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -9240,7 +9240,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -9257,7 +9257,7 @@ "description": "", "item": [ { - "id": "0568d7d7-103f-41ac-8d65-a69adcd1a799", + "id": "c86649d5-9f76-4cdc-89d1-e907806eaf22", "name": "List custom field options", "request": { "name": "List custom field options", @@ -9300,7 +9300,7 @@ }, "response": [ { - "id": "95451668-b34e-4072-b57a-6553b6998b7e", + "id": "ba5ed218-b320-4d9b-b99c-fd87d75c5fa7", "name": "OK", "originalRequest": { "url": { @@ -9356,7 +9356,7 @@ "_postman_previewlanguage": "json" }, { - "id": "90409001-92a6-4fcd-b896-492378e09f9b", + "id": "c748bc32-1631-4837-87de-c77aa989a94d", "name": "Not Found", "originalRequest": { "url": { @@ -9407,7 +9407,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -9418,7 +9418,7 @@ } }, { - "id": "3f12de62-a469-4442-8c38-b4bf824bab80", + "id": "0050c5ea-b03b-42e4-883e-9a8c9a3066f4", "name": "Create a custom field option", "request": { "name": "Create a custom field option", @@ -9471,7 +9471,7 @@ }, "response": [ { - "id": "648e6ca2-8afb-40ec-9cd7-738c59dd5576", + "id": "237a1014-e05d-4904-a790-c6407d9130bc", "name": "Created", "originalRequest": { "url": { @@ -9540,7 +9540,7 @@ "_postman_previewlanguage": "json" }, { - "id": "ed25e890-fd0e-4a4d-a0ed-d6487bf6a886", + "id": "6b6450c1-e48d-4d6b-95d3-498d4eec70b0", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -9604,12 +9604,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "3208d9a7-787b-462f-bf07-7287ad844263", + "id": "8ef17d3a-785c-4f40-bbe8-953ad3d1c749", "name": "Not Found", "originalRequest": { "url": { @@ -9673,12 +9673,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "94d9c8e6-7239-4828-bdc4-1f0a9b46fa18", + "id": "077da28d-e68f-45b6-9435-18332b5cd159", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -9742,7 +9742,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -9753,7 +9753,7 @@ } }, { - "id": "9f908b40-cd33-4f0f-8c7b-ce1f5943160d", + "id": "0a979c63-61e0-4d7a-b33e-9dab75b20880", "name": "Get a custom field option", "request": { "name": "Get a custom field option", @@ -9804,7 +9804,7 @@ }, "response": [ { - "id": "889f2f80-d298-4546-92ab-38c854e49098", + "id": "795e55ec-da63-4809-aee3-94713d31a16e", "name": "OK", "originalRequest": { "url": { @@ -9871,7 +9871,7 @@ "_postman_previewlanguage": "json" }, { - "id": "fd76c5bf-ace2-47d4-8b47-4e7241e46bcb", + "id": "2a56513a-d923-4afe-b284-4fd572a65323", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -9933,12 +9933,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "31779b9b-1356-4654-8ebe-cbcb0921a433", + "id": "5c21ee67-d6b9-437e-817e-e9cd88333dc6", "name": "Not Found", "originalRequest": { "url": { @@ -10000,7 +10000,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -10011,7 +10011,7 @@ } }, { - "id": "bae5a98b-8ab9-4e75-8ae7-3c6c8ce918a7", + "id": "327aa3ed-02ec-4340-9c19-77c99d9ce093", "name": "Update a custom field option", "request": { "name": "Update a custom field option", @@ -10075,7 +10075,7 @@ }, "response": [ { - "id": "40012cf3-9da3-4119-8bf2-84ef84890719", + "id": "31656914-bcb6-4860-92ca-a0ce4e17cb64", "name": "OK", "originalRequest": { "url": { @@ -10155,7 +10155,7 @@ "_postman_previewlanguage": "json" }, { - "id": "fd4ccad2-70b2-4374-9e10-f62f727fae36", + "id": "b612b17e-0199-4af9-bbb1-70adbce16a60", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -10230,12 +10230,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "f452ed68-007f-44bc-9f95-7a1ef133788a", + "id": "96a4c5d0-8017-436b-a8f8-92cdefda477b", "name": "Not Found", "originalRequest": { "url": { @@ -10310,12 +10310,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "a9d7cfd1-f0f8-4044-86b2-2093200524b9", + "id": "62864696-a645-4e52-ac9a-e01553d0d740", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -10390,7 +10390,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -10401,7 +10401,7 @@ } }, { - "id": "0a9c710e-6aef-46d4-8fc1-ff5e335b4d77", + "id": "dbb3669a-8878-4499-ba67-116a5c78f5b1", "name": "Delete a custom field option", "request": { "name": "Delete a custom field option", @@ -10452,7 +10452,7 @@ }, "response": [ { - "id": "2d248a09-18f7-4045-b35c-6adadcafad8f", + "id": "a403136b-f647-4230-a350-2d35b4ee8333", "name": "No Content", "originalRequest": { "url": { @@ -10509,7 +10509,7 @@ "_postman_previewlanguage": "text" }, { - "id": "98f0b49d-f319-4768-b016-64c41e2e2016", + "id": "43fb2f1c-a443-4834-b434-6af89778f9d2", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -10571,12 +10571,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "0df84477-f613-4a23-9b4b-628a6615a4b2", + "id": "55e9bb03-4ffc-4760-a56a-e3a71d4d6ae0", "name": "Not Found", "originalRequest": { "url": { @@ -10638,7 +10638,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -10655,7 +10655,7 @@ "description": "", "item": [ { - "id": "5430aca8-52ae-4483-8d93-9809472074f2", + "id": "8ae97665-eb40-479c-88a6-43cce9c5e50a", "name": "List custom fields", "request": { "name": "List custom fields", @@ -10678,7 +10678,7 @@ "type": "text/plain" }, "key": "filter[entity_type]", - "value": "Shipment" + "value": "Cargo" }, { "disabled": true, @@ -10713,7 +10713,7 @@ }, "response": [ { - "id": "966ded77-3af3-4d1f-84ae-90e2aa9b65a8", + "id": "1fad902f-39fd-471b-8a9f-49265ddadc89", "name": "OK", "originalRequest": { "url": { @@ -10731,7 +10731,7 @@ "type": "text/plain" }, "key": "filter[entity_type]", - "value": "Shipment" + "value": "Cargo" }, { "disabled": true, @@ -10779,7 +10779,7 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"shipment\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"shipment\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -10790,7 +10790,7 @@ } }, { - "id": "64737d4c-924f-4efb-92e4-a2ff8f1fc64f", + "id": "63c4f030-d326-4db8-9508-027118303c57", "name": "Create a custom field", "request": { "name": "Create a custom field", @@ -10818,7 +10818,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -10830,7 +10830,7 @@ }, "response": [ { - "id": "4eb09c4a-657e-497b-a63e-73bf2da4cf66", + "id": "e01a380d-20c5-440b-9cda-76143e967d0f", "name": "Created", "originalRequest": { "url": { @@ -10864,7 +10864,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -10881,12 +10881,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "40274c0b-ff52-4ea6-85e2-1478f1bf14d4", + "id": "ebf13220-b1ac-4725-a8cb-83df1a302c94", "name": "Not Found", "originalRequest": { "url": { @@ -10920,7 +10920,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -10937,12 +10937,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "577b7649-bff3-4b2a-b838-a51e4078e3ac", + "id": "271b700d-24ab-4792-b557-dec6147e5754", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -10976,7 +10976,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -10993,7 +10993,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -11004,7 +11004,7 @@ } }, { - "id": "6281a7ae-b449-470a-a879-56969d7a1ee2", + "id": "148b2e9b-cfb3-493a-8ddd-6e0b13aaee21", "name": "Get a custom field", "request": { "name": "Get a custom field", @@ -11043,7 +11043,7 @@ }, "response": [ { - "id": "f2dbbd44-b535-4aba-8364-8eb72cbb648a", + "id": "4b40d53f-cdbd-4abb-8adf-9580cb89855d", "name": "OK", "originalRequest": { "url": { @@ -11093,12 +11093,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "31db7978-bcce-4f62-89e2-7d0f03f998c7", + "id": "bd3e3dc2-f6e1-42ea-975e-7ce1ac001b38", "name": "Not Found", "originalRequest": { "url": { @@ -11148,7 +11148,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -11159,7 +11159,7 @@ } }, { - "id": "aca46c40-4e3a-4634-bd9e-a9325f4224f5", + "id": "de948e3c-ddd6-456a-98d7-1968dda3f4c6", "name": "Update a custom field", "request": { "name": "Update a custom field", @@ -11211,7 +11211,7 @@ }, "response": [ { - "id": "4507a89f-843d-4452-b85e-3a43c11fcacf", + "id": "3081f89a-1a14-46ed-8e23-055b4af1314e", "name": "OK", "originalRequest": { "url": { @@ -11274,12 +11274,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "97bc5479-4565-4b78-bd3c-b98dc25c541e", + "id": "40dcd531-fb92-4f59-a158-f562135d7dfc", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -11342,12 +11342,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "c85066cd-561d-400b-8e38-c4815db5897c", + "id": "be430129-1563-4340-99ff-9d444820c144", "name": "Not Found", "originalRequest": { "url": { @@ -11410,12 +11410,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "b6228f63-83f2-4aa3-96e6-acf89962c645", + "id": "33f557a2-c2be-4f3c-998d-db14bb7b4244", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -11478,7 +11478,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -11489,7 +11489,7 @@ } }, { - "id": "56d12554-0612-457e-ba13-64b3703ee44e", + "id": "188bc92a-64a0-4711-9a9d-7d1dae4a80fc", "name": "Delete a custom field", "request": { "name": "Delete a custom field", @@ -11528,7 +11528,7 @@ }, "response": [ { - "id": "8d4bb01f-eaf0-417c-9ba6-4b3e240da5de", + "id": "9186ce29-bf0b-43e5-84aa-4396eebdcaa7", "name": "No Content", "originalRequest": { "url": { @@ -11573,7 +11573,7 @@ "_postman_previewlanguage": "text" }, { - "id": "620eb069-c089-4fbe-83cd-d7ffc04cd492", + "id": "df083f93-62d2-4fa5-bd89-eb86a7ee8035", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -11623,12 +11623,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "fd170c10-058f-46d5-b7b4-e08fa7dd1394", + "id": "16b63a3d-6722-49c4-af40-f5e95322ac3e", "name": "Not Found", "originalRequest": { "url": { @@ -11678,7 +11678,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -11695,7 +11695,7 @@ "description": "", "item": [ { - "id": "d1ee91de-1773-4aab-84aa-9c9f518d005a", + "id": "847a7cd5-08a2-4322-a10c-91a789bd75e0", "name": "List shipments", "request": { "name": "List shipments", @@ -12069,7 +12069,7 @@ "type": "text/plain" }, "key": "filter[party_id][operator]", - "value": "all" + "value": "any" }, { "disabled": true, @@ -12167,7 +12167,7 @@ }, "response": [ { - "id": "71cb7231-5b7a-4d3f-b0c6-6da67ce219ac", + "id": "d5442508-6eba-456c-841b-0a2a1b2b67fa", "name": "OK", "originalRequest": { "url": { @@ -12536,7 +12536,7 @@ "type": "text/plain" }, "key": "filter[party_id][operator]", - "value": "all" + "value": "any" }, { "disabled": true, @@ -12620,12 +12620,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"past_full_out_window\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"all_containers_terminated\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"rail_terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n }\n ],\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"reefer\",\n \"equipment_length\": 45,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"exam\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"total\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"grounded\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"open top\",\n \"equipment_length\": 10,\n \"equipment_height\": null,\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"other\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"extended_dwell_time\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"awaiting_inland_transfer\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"no_updates_at_line\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"metro_area\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"cancelled_by_user\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n }\n ],\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"dry\",\n \"equipment_length\": 20,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"demurrage\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"extended_dwell_time\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"off_dock\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"open top\",\n \"equipment_length\": 45,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"total\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"total\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"on_ship\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "1e9e6e2f-8f9e-41e7-b0d6-89dc0ee7339a", + "id": "3810893f-085b-4b17-84e2-0e51270546e2", "name": "Malformed supported filter value, operator, range, or strict boolean. The error identifies the invalid parameter where available.", "originalRequest": { "url": { @@ -12994,7 +12994,7 @@ "type": "text/plain" }, "key": "filter[party_id][operator]", - "value": "all" + "value": "any" }, { "disabled": true, @@ -13078,7 +13078,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -13089,7 +13089,7 @@ } }, { - "id": "ea787a66-cebb-41dd-a4cc-76d8b31f029f", + "id": "49489c7e-2fec-4176-b2b0-a8e42751742d", "name": "Get a shipment", "request": { "name": "Get a shipment", @@ -13150,7 +13150,7 @@ }, "response": [ { - "id": "8906acf4-5df1-48f7-bf81-3b7c8d124cec", + "id": "0a824d39-d6cb-47e8-a2dd-c874b9d3b6b0", "name": "OK", "originalRequest": { "url": { @@ -13219,12 +13219,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"no_updates_at_line\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"bulk\",\n \"equipment_length\": 20,\n \"equipment_height\": \"standard\",\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"total\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"extended_dwell_time\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"picked_up\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": null,\n \"equipment_length\": 45,\n \"equipment_height\": null,\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"total\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"other\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"empty_returned\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n }\n ]\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\",\n \"attributes\": {\n \"bill_of_lading_number\": \"\",\n \"normalized_number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"tags\": [\n \"\",\n \"\"\n ],\n \"port_of_lading_locode\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_locode\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_locode\": \"\",\n \"destination_name\": \"\",\n \"shipping_line_scac\": \"\",\n \"shipping_line_name\": \"\",\n \"shipping_line_short_name\": \"\",\n \"customer_name\": \"\",\n \"pod_vessel_name\": \"\",\n \"pod_vessel_imo\": \"\",\n \"pod_voyage_number\": \"\",\n \"pol_etd_at\": \"\",\n \"pol_atd_at\": \"\",\n \"pod_eta_at\": \"\",\n \"pod_original_eta_at\": \"\",\n \"pod_ata_at\": \"\",\n \"destination_eta_at\": \"\",\n \"destination_ata_at\": \"\",\n \"pol_timezone\": \"\",\n \"pod_timezone\": \"\",\n \"destination_timezone\": \"\",\n \"line_tracking_last_attempted_at\": \"\",\n \"line_tracking_last_succeeded_at\": \"\",\n \"line_tracking_stopped_at\": \"\",\n \"line_tracking_stopped_reason\": \"cancelled_by_user\"\n },\n \"relationships\": {\n \"destination\": {\n \"data\": {\n \"type\": \"metro_area\",\n \"id\": \"\"\n }\n },\n \"port_of_lading\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"containers\": {\n \"data\": [\n {\n \"type\": \"container\",\n \"id\": \"\"\n },\n {\n \"type\": \"container\",\n \"id\": \"\"\n }\n ]\n },\n \"port_of_discharge\": {\n \"data\": {\n \"type\": \"port\",\n \"id\": \"\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"type\": \"terminal\",\n \"id\": \"\"\n }\n },\n \"destination_terminal\": {\n \"data\": {\n \"type\": \"rail_terminal\",\n \"id\": \"\"\n }\n },\n \"line_tracking_stopped_by_user\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"reefer\",\n \"equipment_length\": 40,\n \"equipment_height\": \"standard\",\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"extended_dwell_time\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"exam\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"grounded\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"container\",\n \"attributes\": {\n \"number\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"equipment_type\": \"tank\",\n \"equipment_length\": 45,\n \"equipment_height\": \"high_cube\",\n \"weight_in_lbs\": \"\",\n \"created_at\": \"\",\n \"seal_number\": \"\",\n \"pickup_lfd\": \"\",\n \"pickup_appointment_at\": \"\",\n \"availability_known\": \"\",\n \"available_for_pickup\": \"\",\n \"pod_arrived_at\": \"\",\n \"pod_discharged_at\": \"\",\n \"pod_full_out_at\": \"\",\n \"terminal_checked_at\": \"\",\n \"pod_full_out_chassis_number\": \"\",\n \"location_at_pod_terminal\": \"\",\n \"final_destination_full_out_at\": \"\",\n \"empty_terminated_at\": \"\",\n \"holds_at_pod_terminal\": [\n {\n \"name\": \"\",\n \"status\": \"pending\",\n \"description\": \"\"\n },\n {\n \"name\": \"\",\n \"status\": \"hold\",\n \"description\": \"\"\n }\n ],\n \"fees_at_pod_terminal\": [\n {\n \"type\": \"extended_dwell_time\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n },\n {\n \"type\": \"total\",\n \"amount\": \"\",\n \"currency_code\": \"\"\n }\n ],\n \"pod_timezone\": \"\",\n \"final_destination_timezone\": \"\",\n \"empty_terminated_timezone\": \"\",\n \"pod_rail_carrier_scac\": \"\",\n \"ind_rail_carrier_scac\": \"\",\n \"pod_last_tracking_request_at\": \"\",\n \"shipment_last_tracking_request_at\": \"\",\n \"pod_rail_loaded_at\": \"\",\n \"pod_rail_departed_at\": \"\",\n \"ind_eta_at\": \"\",\n \"ind_ata_at\": \"\",\n \"ind_rail_unloaded_at\": \"\",\n \"ind_facility_lfd_on\": \"\",\n \"import_deadlines\": {\n \"pickup_lfd_terminal\": \"\",\n \"pickup_lfd_rail\": \"\",\n \"pickup_lfd_line\": \"\"\n },\n \"current_status\": \"new\"\n },\n \"relationships\": {\n \"shipment\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"pickup_facility\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"pod_terminal\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"terminal\"\n }\n },\n \"transport_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n ]\n },\n \"raw_events\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n },\n {\n \"id\": \"\",\n \"type\": \"raw_event\"\n }\n ]\n }\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "0f3b4e4d-1666-4577-a274-63ddb30fb7ef", + "id": "004ee12c-a819-41e3-a86e-7a9575302617", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -13293,12 +13293,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "a4765dba-6bb3-48a7-9248-7d0fa56de5a3", + "id": "02f3ae4d-504f-402b-aec9-4432796e4e89", "name": "Not Found", "originalRequest": { "url": { @@ -13367,12 +13367,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "a04b16c3-010f-4c6f-afd3-d525203bc50d", + "id": "63e5f558-afd3-4f87-9a0a-93d1313372ac", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -13441,7 +13441,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -13452,7 +13452,7 @@ } }, { - "id": "24e4c8b0-de3c-478d-bf4a-e4bb4afbb3f2", + "id": "d959d8c5-2876-4979-8601-b0bf035e69ae", "name": "Edit a shipment", "request": { "name": "Edit a shipment", @@ -13507,7 +13507,7 @@ }, "response": [ { - "id": "63963d8d-e850-453c-ac5c-5304d2bc55de", + "id": "d4fe5e2d-b249-4e7d-9e97-5725228233a0", "name": "OK", "originalRequest": { "url": { @@ -13575,7 +13575,7 @@ "_postman_previewlanguage": "json" }, { - "id": "3afcca39-6587-43e3-982a-0efd4d48a915", + "id": "bba6c932-71c0-417d-a914-49bf81e976a9", "name": "Bad Request", "originalRequest": { "url": { @@ -13638,12 +13638,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "0cbbd7be-bd7f-444c-a7d9-9a40aa2c8766", + "id": "0fbcaeea-4aad-4745-9ba0-0b00ac1d8439", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -13706,12 +13706,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "30f04018-ffcf-4984-9363-1f2c40993c75", + "id": "83fbde04-7260-487c-9fd4-e37c7e1eb5e7", "name": "Not Found", "originalRequest": { "url": { @@ -13774,12 +13774,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "2a66d88b-7118-4b4e-b7f7-96dc4fbebd18", + "id": "85ed4efc-246b-47dd-91a4-e18c325b3baa", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -13842,7 +13842,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -13853,7 +13853,7 @@ } }, { - "id": "45aad55e-43c6-48a7-82ea-554d40fac1a5", + "id": "06143b79-0f24-4aa2-ad23-4eea04a12c63", "name": "Stop tracking a shipment", "request": { "name": "Stop tracking a shipment", @@ -13896,7 +13896,7 @@ }, "response": [ { - "id": "b75abf31-9840-42a3-9c03-4203bdd991d0", + "id": "cd51f42d-e42c-4848-8324-4a7f421efd72", "name": "OK", "originalRequest": { "url": { @@ -13952,7 +13952,7 @@ "_postman_previewlanguage": "json" }, { - "id": "c5fabe37-4a7f-4ca0-8963-847db408e397", + "id": "7d17a80c-a1f4-4e64-95c6-72037dd7eed1", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -14003,12 +14003,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "03b236f7-4698-487a-8b93-88de799e9a33", + "id": "49ffc34b-d923-4837-a4df-0e09a49a5147", "name": "Not Found", "originalRequest": { "url": { @@ -14059,12 +14059,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "7ad849da-d99d-4b78-b632-f92f496be885", + "id": "80d9b6d7-6fdd-446a-a33b-68ff6a7a007b", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -14115,7 +14115,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -14126,7 +14126,7 @@ } }, { - "id": "e84da0c6-535d-4d9c-bf66-d6370043ff0e", + "id": "92b27cc3-eec1-45e4-b6bb-5176b61bd32a", "name": "Resume tracking a shipment", "request": { "name": "Resume tracking a shipment", @@ -14169,7 +14169,7 @@ }, "response": [ { - "id": "29354048-7cf2-45b8-b803-c7830fd3d028", + "id": "b6ffc1df-b6a3-410e-ade9-b30d313ef2bf", "name": "OK", "originalRequest": { "url": { @@ -14225,7 +14225,7 @@ "_postman_previewlanguage": "json" }, { - "id": "8239e76f-06ef-4a69-a7c5-07b73912e8ec", + "id": "de6101d8-f521-4b10-9ab1-2db247312577", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -14276,12 +14276,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "fa27cc48-a962-4479-9a3e-1a84f0b61c4e", + "id": "4e84bc77-a7dc-4654-a430-bacb1c828045", "name": "Not Found", "originalRequest": { "url": { @@ -14332,12 +14332,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "3cce1056-c602-4dea-a0c3-704d76a8d7cd", + "id": "537cd4b7-8f47-4365-ba89-16df23a87e40", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -14388,7 +14388,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -14399,7 +14399,7 @@ } }, { - "id": "ff31de3a-4faa-49e3-bc4f-308a23712424", + "id": "b0c05c2d-87df-4eea-821c-4b33c2d7ede9", "name": "List shipment custom fields", "request": { "name": "List shipment custom fields", @@ -14449,7 +14449,7 @@ }, "response": [ { - "id": "882b84d9-2a23-46f7-9019-ded139c2bf49", + "id": "48cce664-cc91-46a9-b3d1-0b9da9ec4ddf", "name": "OK", "originalRequest": { "url": { @@ -14510,12 +14510,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"shipment\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"shipment\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"number\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": 7089.413102464811,\n \"key_2\": \"string\",\n \"key_3\": 6077.6544057832525\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"enum_multi\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 117,\n \"key_1\": false,\n \"key_2\": 3014.6165060200938\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n }\n ]\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"boolean\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 4134.544928549836\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"reference\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 4590.7942893670715,\n \"key_1\": 3830,\n \"key_2\": true\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "db118269-c61e-46da-953a-5a6291b8dbb6", + "id": "54319bff-77bf-4214-81c6-526c679dec00", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -14576,12 +14576,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "8fcd93c1-ee16-4ccf-af4f-2e4bf884e199", + "id": "bc1b7cd6-a916-4953-8cf3-098aa1709660", "name": "Not Found", "originalRequest": { "url": { @@ -14642,7 +14642,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -14653,7 +14653,7 @@ } }, { - "id": "379e1802-69fe-4bb0-b4ae-9508bf57b07d", + "id": "c1fc0fdd-224f-47e6-bb22-062847120159", "name": "Create a shipment custom field", "request": { "name": "Create a shipment custom field", @@ -14706,7 +14706,7 @@ }, "response": [ { - "id": "da3bc4a1-2cd5-4fec-a333-af49fe8442db", + "id": "af49e1b1-a2d0-4bde-8ea8-9ac95ea04ff3", "name": "Created", "originalRequest": { "url": { @@ -14770,12 +14770,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "b256c5bd-6e69-4785-b93a-2cae4016cf88", + "id": "44fb2c5a-17ca-4291-9c3b-76aef87b744a", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -14839,12 +14839,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "ee063e10-f721-427e-93cc-7dd45bfa6a2e", + "id": "d9841891-5b75-42f8-a46a-c1cad6c29322", "name": "Not Found", "originalRequest": { "url": { @@ -14908,12 +14908,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "dd6c397e-c3ed-48ec-a29b-13acbe518eb2", + "id": "42f4be06-1ab4-491b-b1c7-f01698c20d7e", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -14977,7 +14977,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -14988,7 +14988,7 @@ } }, { - "id": "45fddfdd-38ee-4f86-97e2-fe65f370119a", + "id": "50d12029-b919-497a-a6a7-90f42cbf6060", "name": "Update a shipment custom field", "request": { "name": "Update a shipment custom field", @@ -15052,7 +15052,7 @@ }, "response": [ { - "id": "f8a42e27-0e43-4a55-9e2d-1f5c6a7aa4d5", + "id": "aa5f5645-dbc5-4fa7-8562-7f2a2626756e", "name": "OK", "originalRequest": { "url": { @@ -15127,12 +15127,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "8c77d5e9-bae1-4d43-b7df-d089f16755e8", + "id": "98f76e7c-3751-42ba-88a9-3d310004e978", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -15207,12 +15207,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "f2bd8593-73c9-40bc-a266-ee3515b7bcec", + "id": "827f946b-8c75-4dbf-bef0-ba06fb206656", "name": "Not Found", "originalRequest": { "url": { @@ -15287,12 +15287,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "6c49ff2c-a3e2-4097-98ea-3f3149d536a0", + "id": "a248a1ad-034e-4723-8eea-8cd9d7647776", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -15367,7 +15367,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -15378,7 +15378,7 @@ } }, { - "id": "1ca7bc79-b092-4f4f-80fc-d6f38bcac0fb", + "id": "b828ace3-5809-42bf-a804-4faf1263bb12", "name": "Delete a shipment custom field", "request": { "name": "Delete a shipment custom field", @@ -15429,7 +15429,7 @@ }, "response": [ { - "id": "243ccf40-515b-49e7-b049-40a7f14e56f3", + "id": "5436d244-c8cd-4eb4-ba50-b7e9ab06bbfa", "name": "No Content", "originalRequest": { "url": { @@ -15486,7 +15486,7 @@ "_postman_previewlanguage": "text" }, { - "id": "70bb17bb-923d-4c34-88a5-1f4af00cbe81", + "id": "6733dfb7-b397-4f65-8e57-a508e54c6c1c", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -15548,12 +15548,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "25ade11d-129b-4623-af9c-8288408878c4", + "id": "370d6d3b-1d3f-43fe-81b4-fdcfe38e0f69", "name": "Not Found", "originalRequest": { "url": { @@ -15615,7 +15615,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -15642,7 +15642,7 @@ "description": "", "item": [ { - "id": "fe792e04-b888-44e3-9303-6b55442c6c58", + "id": "49cf8b60-d036-4354-ac3c-ae623f9737ea", "name": "Create a tracking request", "request": { "name": "Create a tracking request", @@ -15673,7 +15673,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_type\": \"booking_number\",\n \"request_number\": \"\",\n \"scac\": \"\",\n \"auto_detect_vocc_scac\": false,\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"shipment_tags\": [\n \"\",\n \"\"\n ],\n \"initial_custom_fields\": {\n \"shipment\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n }\n ],\n \"containers\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n }\n ]\n }\n },\n \"relationships\": {\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"shipper\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"consignee\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"notify_party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"customs_broker\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"freight_forwarder\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"pickup_dray_carrier\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_type\": \"bill_of_lading\",\n \"request_number\": \"\",\n \"scac\": \"\",\n \"auto_detect_vocc_scac\": false,\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"shipment_tags\": [\n \"\",\n \"\"\n ],\n \"initial_custom_fields\": {\n \"shipment\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n }\n ],\n \"containers\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n }\n ]\n }\n },\n \"relationships\": {\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"shipper\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"consignee\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"notify_party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"customs_broker\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"freight_forwarder\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"pickup_dray_carrier\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -15701,7 +15701,7 @@ }, "response": [ { - "id": "aa488596-e556-435f-9004-a68e8222f803", + "id": "cc60b3c2-92e7-46c8-a686-101516448696", "name": "Tracking Request Created", "originalRequest": { "url": { @@ -15735,7 +15735,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_type\": \"booking_number\",\n \"request_number\": \"\",\n \"scac\": \"\",\n \"auto_detect_vocc_scac\": false,\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"shipment_tags\": [\n \"\",\n \"\"\n ],\n \"initial_custom_fields\": {\n \"shipment\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n }\n ],\n \"containers\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n }\n ]\n }\n },\n \"relationships\": {\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"shipper\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"consignee\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"notify_party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"customs_broker\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"freight_forwarder\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"pickup_dray_carrier\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_type\": \"bill_of_lading\",\n \"request_number\": \"\",\n \"scac\": \"\",\n \"auto_detect_vocc_scac\": false,\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"shipment_tags\": [\n \"\",\n \"\"\n ],\n \"initial_custom_fields\": {\n \"shipment\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n }\n ],\n \"containers\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n }\n ]\n }\n },\n \"relationships\": {\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"shipper\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"consignee\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"notify_party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"customs_broker\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"freight_forwarder\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"pickup_dray_carrier\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -15752,12 +15752,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_number\": \"\",\n \"status\": \"tracking_stopped\",\n \"request_type\": \"booking_number\",\n \"scac\": \"\",\n \"created_at\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"tags\": [\n \"\",\n \"\"\n ],\n \"failed_reason\": \"scac_auto_detect_failed\",\n \"updated_at\": \"\",\n \"is_retrying\": \"\",\n \"retry_count\": \"\"\n },\n \"relationships\": {\n \"tracked_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n }\n ]\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_number\": \"\",\n \"status\": \"failed\",\n \"request_type\": \"booking_number\",\n \"scac\": \"\",\n \"created_at\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"tags\": [\n \"\",\n \"\"\n ],\n \"failed_reason\": \"unrecognized_response\",\n \"updated_at\": \"\",\n \"is_retrying\": \"\",\n \"retry_count\": \"\"\n },\n \"relationships\": {\n \"tracked_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "c37bc427-db48-497f-9303-d3a62204d997", + "id": "ccf0b1dc-9751-47a3-bad4-8d24338d7f7d", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -15791,7 +15791,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_type\": \"booking_number\",\n \"request_number\": \"\",\n \"scac\": \"\",\n \"auto_detect_vocc_scac\": false,\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"shipment_tags\": [\n \"\",\n \"\"\n ],\n \"initial_custom_fields\": {\n \"shipment\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n }\n ],\n \"containers\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n }\n ]\n }\n },\n \"relationships\": {\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"shipper\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"consignee\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"notify_party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"customs_broker\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"freight_forwarder\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"pickup_dray_carrier\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_type\": \"bill_of_lading\",\n \"request_number\": \"\",\n \"scac\": \"\",\n \"auto_detect_vocc_scac\": false,\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"shipment_tags\": [\n \"\",\n \"\"\n ],\n \"initial_custom_fields\": {\n \"shipment\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n }\n ],\n \"containers\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n }\n ]\n }\n },\n \"relationships\": {\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"shipper\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"consignee\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"notify_party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"customs_broker\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"freight_forwarder\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"pickup_dray_carrier\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -15808,12 +15808,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "0bbdde8c-b00e-42be-859a-4179075294d6", + "id": "b2f58124-5ba0-47de-a434-cd31e731be83", "name": "Too Many Requests - You've hit the create tracking requests limit. Please try again in a minute.", "originalRequest": { "url": { @@ -15847,7 +15847,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_type\": \"booking_number\",\n \"request_number\": \"\",\n \"scac\": \"\",\n \"auto_detect_vocc_scac\": false,\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"shipment_tags\": [\n \"\",\n \"\"\n ],\n \"initial_custom_fields\": {\n \"shipment\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n }\n ],\n \"containers\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n }\n ]\n }\n },\n \"relationships\": {\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"shipper\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"consignee\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"notify_party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"customs_broker\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"freight_forwarder\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"pickup_dray_carrier\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_type\": \"bill_of_lading\",\n \"request_number\": \"\",\n \"scac\": \"\",\n \"auto_detect_vocc_scac\": false,\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"shipment_tags\": [\n \"\",\n \"\"\n ],\n \"initial_custom_fields\": {\n \"shipment\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\"\n }\n ],\n \"containers\": [\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n },\n {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"number\": \"\"\n }\n ]\n }\n },\n \"relationships\": {\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"shipper\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"consignee\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"notify_party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"customs_broker\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"freight_forwarder\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n },\n \"pickup_dray_carrier\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -15884,7 +15884,7 @@ } }, { - "id": "3ffcf159-5e04-4950-bae2-b670692c4b69", + "id": "f7dbfbb1-20a0-4011-9cc5-d6ce4d6b4f00", "name": "List tracking requests", "request": { "name": "List tracking requests", @@ -15925,7 +15925,7 @@ "type": "text/plain" }, "key": "filter[status]", - "value": "cancelled" + "value": "created" }, { "disabled": true, @@ -16014,7 +16014,7 @@ }, "response": [ { - "id": "a7556bb3-d921-4444-a7ee-7e8869f8a59c", + "id": "96ee0626-9a3d-4092-ac4d-77a37dc17e85", "name": "OK", "originalRequest": { "url": { @@ -16050,7 +16050,7 @@ "type": "text/plain" }, "key": "filter[status]", - "value": "cancelled" + "value": "created" }, { "disabled": true, @@ -16152,12 +16152,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_number\": \"\",\n \"status\": \"failed\",\n \"request_type\": \"bill_of_lading\",\n \"scac\": \"\",\n \"created_at\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"tags\": [\n \"\",\n \"\"\n ],\n \"failed_reason\": \"Cancelled by user\",\n \"updated_at\": \"\",\n \"is_retrying\": \"\",\n \"retry_count\": \"\"\n },\n \"relationships\": {\n \"tracked_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_number\": \"\",\n \"status\": \"awaiting_manifest\",\n \"request_type\": \"booking_number\",\n \"scac\": \"\",\n \"created_at\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"tags\": [\n \"\",\n \"\"\n ],\n \"failed_reason\": null,\n \"updated_at\": \"\",\n \"is_retrying\": \"\",\n \"retry_count\": \"\"\n },\n \"relationships\": {\n \"tracked_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n }\n ]\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_number\": \"\",\n \"status\": \"created\",\n \"request_type\": \"container\",\n \"scac\": \"\",\n \"created_at\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"tags\": [\n \"\",\n \"\"\n ],\n \"failed_reason\": \"invalid_number\",\n \"updated_at\": \"\",\n \"is_retrying\": \"\",\n \"retry_count\": \"\"\n },\n \"relationships\": {\n \"tracked_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_number\": \"\",\n \"status\": \"tracking_stopped\",\n \"request_type\": \"container\",\n \"scac\": \"\",\n \"created_at\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"tags\": [\n \"\",\n \"\"\n ],\n \"failed_reason\": \"unrecognized_response\",\n \"updated_at\": \"\",\n \"is_retrying\": \"\",\n \"retry_count\": \"\"\n },\n \"relationships\": {\n \"tracked_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "659a2287-18a4-443f-bbb9-c38f94f8d452", + "id": "d5c72d9d-1954-49aa-98e7-48b801ce2180", "name": "Bad Request", "originalRequest": { "url": { @@ -16193,7 +16193,7 @@ "type": "text/plain" }, "key": "filter[status]", - "value": "cancelled" + "value": "created" }, { "disabled": true, @@ -16295,12 +16295,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "83d17130-74e0-4213-a4a4-a9e433a8c377", + "id": "a7715492-d460-4f94-b66b-535f1a1f78bd", "name": "Not Found", "originalRequest": { "url": { @@ -16336,7 +16336,7 @@ "type": "text/plain" }, "key": "filter[status]", - "value": "cancelled" + "value": "created" }, { "disabled": true, @@ -16438,7 +16438,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -16449,7 +16449,7 @@ } }, { - "id": "54f582f5-a1a6-4e34-9ad5-bbb1fab1ae6b", + "id": "5ea78361-7c9e-4afc-9366-8b38c5b1d2c9", "name": "Infer Tracking Number", "request": { "name": "Infer Tracking Number", @@ -16509,7 +16509,7 @@ }, "response": [ { - "id": "013d0a92-6dd6-4020-8f93-74842ef2f25f", + "id": "b3168305-59ce-4a78-9f06-5095dc5f8136", "name": "Successfully inferred number type and shipping line", "originalRequest": { "url": { @@ -16561,12 +16561,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"\",\n \"attributes\": {\n \"number_type\": \"bill_of_lading\",\n \"validation\": {\n \"is_valid\": \"\",\n \"type\": \"container\",\n \"check_digit_passed\": \"\",\n \"parsed_number\": \"\",\n \"reason\": \"\"\n },\n \"shipping_line\": {\n \"decision\": \"no_prediction\",\n \"selected\": {\n \"scac\": \"\",\n \"name\": \"\",\n \"confidence\": \"\"\n },\n \"candidates\": [\n {\n \"scac\": \"\",\n \"name\": \"\",\n \"confidence\": \"\"\n },\n {\n \"scac\": \"\",\n \"name\": \"\",\n \"confidence\": \"\"\n }\n ]\n }\n }\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"\",\n \"attributes\": {\n \"number_type\": \"booking\",\n \"validation\": {\n \"is_valid\": \"\",\n \"type\": \"container\",\n \"check_digit_passed\": \"\",\n \"parsed_number\": \"\",\n \"reason\": \"\"\n },\n \"shipping_line\": {\n \"decision\": \"no_prediction\",\n \"selected\": {\n \"scac\": \"\",\n \"name\": \"\",\n \"confidence\": \"\"\n },\n \"candidates\": [\n {\n \"scac\": \"\",\n \"name\": \"\",\n \"confidence\": \"\"\n },\n {\n \"scac\": \"\",\n \"name\": \"\",\n \"confidence\": \"\"\n }\n ]\n }\n }\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "a25699e9-d430-4c0e-948d-1ec103dde377", + "id": "7a796b78-590a-4bfd-8812-0ee77cda023e", "name": "Unprocessable Entity - Invalid tracking number format", "originalRequest": { "url": { @@ -16623,7 +16623,7 @@ "_postman_previewlanguage": "json" }, { - "id": "f48a7509-ffab-4be4-878b-61b719b4ba35", + "id": "90252ae6-c79c-428f-81cd-b55e792e6bd7", "name": "Too Many Requests - Rate limit exceeded", "originalRequest": { "url": { @@ -16695,7 +16695,7 @@ } }, { - "id": "2f544120-5681-43a2-a707-1854831ab8e7", + "id": "c8da31c0-843a-4c80-b928-773fd7e61dd4", "name": "Get a single tracking request", "request": { "name": "Get a single tracking request", @@ -16747,7 +16747,7 @@ }, "response": [ { - "id": "81d68e68-fd3a-498e-ac72-3bf66541259e", + "id": "19d4d368-9cba-4309-ba8b-8b7fb82caca5", "name": "OK", "originalRequest": { "url": { @@ -16807,12 +16807,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_number\": \"\",\n \"status\": \"tracking_stopped\",\n \"request_type\": \"booking_number\",\n \"scac\": \"\",\n \"created_at\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"tags\": [\n \"\",\n \"\"\n ],\n \"failed_reason\": \"scac_auto_detect_failed\",\n \"updated_at\": \"\",\n \"is_retrying\": \"\",\n \"retry_count\": \"\"\n },\n \"relationships\": {\n \"tracked_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n }\n ]\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_number\": \"\",\n \"status\": \"failed\",\n \"request_type\": \"booking_number\",\n \"scac\": \"\",\n \"created_at\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"tags\": [\n \"\",\n \"\"\n ],\n \"failed_reason\": \"unrecognized_response\",\n \"updated_at\": \"\",\n \"is_retrying\": \"\",\n \"retry_count\": \"\"\n },\n \"relationships\": {\n \"tracked_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "43841b77-d997-448d-b7a1-27f45bc68738", + "id": "6bd21872-3bdd-4892-a6d7-4eee37e477b8", "name": "Bad Request", "originalRequest": { "url": { @@ -16872,12 +16872,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "601841a6-0cc0-425d-9cdf-599ed1d7b12a", + "id": "df5ef19d-909d-470e-ba8a-1d128dc9de24", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -16937,12 +16937,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "e2d6b6ee-cf30-4572-bc93-cbe60887e823", + "id": "559aafd5-b0c1-47fe-8313-2e5a032dd0f9", "name": "Not Found", "originalRequest": { "url": { @@ -17002,7 +17002,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -17013,7 +17013,7 @@ } }, { - "id": "ea6e56e7-b2e0-4aa0-9e46-3ee18e6b5a89", + "id": "7cd1cd7e-1c67-4f8e-af49-d1c4542f23b4", "name": "Edit a tracking request", "request": { "name": "Edit a tracking request", @@ -17068,7 +17068,7 @@ }, "response": [ { - "id": "f01b1b24-30f8-4f8a-8673-b8cdff203db4", + "id": "b782f3ce-0f0d-4217-a053-a1352a350825", "name": "OK", "originalRequest": { "url": { @@ -17131,12 +17131,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_number\": \"\",\n \"status\": \"pending\",\n \"request_type\": \"container\",\n \"scac\": \"\",\n \"created_at\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"tags\": [\n \"\",\n \"\"\n ],\n \"failed_reason\": null,\n \"updated_at\": \"\",\n \"is_retrying\": \"\",\n \"retry_count\": \"\"\n },\n \"relationships\": {\n \"tracked_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"tracking_request\",\n \"attributes\": {\n \"request_number\": \"\",\n \"status\": \"failed\",\n \"request_type\": \"bill_of_lading\",\n \"scac\": \"\",\n \"created_at\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"tags\": [\n \"\",\n \"\"\n ],\n \"failed_reason\": \"shipping_line_not_supported\",\n \"updated_at\": \"\",\n \"is_retrying\": \"\",\n \"retry_count\": \"\"\n },\n \"relationships\": {\n \"tracked_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n },\n \"customer\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "f03f4ee4-ba74-42a4-9572-98c4242020c1", + "id": "83d796c8-a693-4e1f-8984-719de74f9d5f", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -17199,12 +17199,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "ec7e2282-6833-48e0-8d0a-b5fff2906481", + "id": "bd3e237e-7c33-4e87-afbd-c5d544898c36", "name": "Not Found", "originalRequest": { "url": { @@ -17267,12 +17267,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "c5c56c34-eeac-4313-8357-61d1644a5fed", + "id": "c24d691e-a889-47a3-8b73-0c4565b8525a", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -17335,7 +17335,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -17346,7 +17346,7 @@ } }, { - "id": "fdbf4e2e-da46-4949-b553-230dfc91486e", + "id": "4f3b79e5-c80d-42c9-9f17-a2ee9e3b9562", "name": "List tracking request custom fields", "request": { "name": "List tracking request custom fields", @@ -17396,7 +17396,7 @@ }, "response": [ { - "id": "9e3498c1-7c28-49c2-b03d-3e63aa8a9f55", + "id": "ce744117-8b0f-47d6-883f-7d991289c0e0", "name": "OK", "originalRequest": { "url": { @@ -17457,12 +17457,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"shipment\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"shipment\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"number\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": false,\n \"key_1\": 7089.413102464811,\n \"key_2\": \"string\",\n \"key_3\": 6077.6544057832525\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"enum_multi\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 117,\n \"key_1\": false,\n \"key_2\": 3014.6165060200938\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n }\n ]\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Cargo\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"boolean\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 4134.544928549836\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"custom_field_definition\",\n \"attributes\": {\n \"entity_type\": \"Shipment\",\n \"api_slug\": \"\",\n \"display_name\": \"\",\n \"data_type\": \"reference\",\n \"description\": \"\",\n \"reference_type\": \"\",\n \"validation\": {\n \"key_0\": 4590.7942893670715,\n \"key_1\": 3830,\n \"key_2\": true\n },\n \"default_format\": \"\",\n \"default_value\": \"\",\n \"reference_number\": \"\",\n \"sensitive\": \"\",\n \"inline_option_creation\": \"\",\n \"template_id\": \"\",\n \"has_data\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\",\n \"discarded_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"type\": \"account\",\n \"id\": \"\"\n }\n },\n \"created_by\": {\n \"data\": {\n \"type\": \"user\",\n \"id\": \"\"\n }\n },\n \"options\": {\n \"data\": [\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n },\n {\n \"type\": \"custom_field_option\",\n \"id\": \"\"\n }\n ]\n }\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "1464087e-87e7-425f-84f9-f71a4e769dc3", + "id": "1138fca4-7438-4281-9a23-bb929e408519", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -17523,12 +17523,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "f889e480-4ca5-4aa2-a7ab-289d1dcb22f7", + "id": "360bc0a2-8c86-4f69-b557-2d2bcddd69ba", "name": "Not Found", "originalRequest": { "url": { @@ -17589,7 +17589,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -17600,7 +17600,7 @@ } }, { - "id": "5f3213cc-8708-49c1-a213-25a77c693768", + "id": "d1329bc8-d482-410b-aeda-edaeb75d6d02", "name": "Create a tracking request custom field", "request": { "name": "Create a tracking request custom field", @@ -17653,7 +17653,7 @@ }, "response": [ { - "id": "0498a390-f853-4b30-a888-cb72837d54c0", + "id": "71d619b9-db84-414c-b11c-81939a100511", "name": "Created", "originalRequest": { "url": { @@ -17717,12 +17717,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "e15d4d32-54d6-4fb0-bab4-90ebbfc3c2bd", + "id": "2795dcff-547c-4d02-8fdc-918c0fa97125", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -17786,12 +17786,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "d4ff7702-f23a-4efc-acc2-f268680a7fc0", + "id": "9265b12a-04eb-4da2-9d37-4fd984f3b36c", "name": "Not Found", "originalRequest": { "url": { @@ -17855,12 +17855,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "6672b650-85c3-44d6-a37f-a682b3f9a5a5", + "id": "344eb457-36b4-4095-85b4-1fc3f8e3e8f2", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -17924,7 +17924,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -17935,7 +17935,7 @@ } }, { - "id": "c0d32298-6de2-4e0f-85ea-ed15488e734a", + "id": "a2d462af-04cb-4d01-a8d8-c4cfb3b2991a", "name": "Update a tracking request custom field", "request": { "name": "Update a tracking request custom field", @@ -17999,7 +17999,7 @@ }, "response": [ { - "id": "b7046019-71db-46dd-8713-4f943ed3782f", + "id": "df3c1912-7893-41bc-ace0-474f13f134f5", "name": "OK", "originalRequest": { "url": { @@ -18074,12 +18074,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"container\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"custom_field\",\n \"attributes\": {\n \"api_slug\": \"\",\n \"value\": \"\",\n \"display_value\": \"\"\n },\n \"relationships\": {\n \"entity\": {\n \"data\": {\n \"type\": \"tracking_request\",\n \"id\": \"\"\n }\n },\n \"definition\": {\n \"data\": {\n \"type\": \"custom_field_definition\",\n \"id\": \"\"\n }\n }\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "405ca169-efc4-48d0-9931-fe00e879fb42", + "id": "2fed8c95-6032-4a16-8ae4-928f144cfeff", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -18154,12 +18154,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "2b547d1e-559f-4a10-9087-b631bc791a5e", + "id": "2e1e0908-6116-43ee-ad4a-28db44a1a4a0", "name": "Not Found", "originalRequest": { "url": { @@ -18234,12 +18234,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "3c46e841-2f6c-4510-8bed-480745139d1a", + "id": "65bcd9f9-c025-4076-96f3-2268d26368b8", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -18314,7 +18314,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -18325,7 +18325,7 @@ } }, { - "id": "7ef32fde-4442-40ae-a8d9-8d2e8991d01f", + "id": "0b5f815c-3bca-4a6e-acae-17a0ffdc7cf9", "name": "Delete a tracking request custom field", "request": { "name": "Delete a tracking request custom field", @@ -18376,7 +18376,7 @@ }, "response": [ { - "id": "03dd5863-a4f3-4f10-a95d-4f8ac23c2cfb", + "id": "09898a89-baa6-4026-8ac4-7be788dc0ab0", "name": "No Content", "originalRequest": { "url": { @@ -18433,7 +18433,7 @@ "_postman_previewlanguage": "text" }, { - "id": "d689dde4-84b9-4591-aacc-f33c43ba9a9e", + "id": "d61a749e-818e-4420-9e2f-9c92b4508e0b", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -18495,12 +18495,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "c8363ab7-249e-4cbf-8d8b-8ae3137831ea", + "id": "ff4c94ad-b94b-4204-a090-d9f60560233c", "name": "Not Found", "originalRequest": { "url": { @@ -18562,7 +18562,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -18573,7 +18573,7 @@ } }, { - "id": "868ad28a-4c03-491f-b7db-fdf487d9997b", + "id": "03b4a700-eff1-4fe3-b8cd-f3bc8a5652b6", "name": "Cancel a tracking request", "request": { "name": "Cancel a tracking request", @@ -18616,7 +18616,7 @@ }, "response": [ { - "id": "3b44a00c-e954-4856-88ea-5929cc6c80bd", + "id": "b48b5fd5-377d-46f4-9beb-f226a41c5c59", "name": "Cancelled. The response body is an empty JSON object.", "originalRequest": { "url": { @@ -18672,7 +18672,7 @@ "_postman_previewlanguage": "json" }, { - "id": "c66e0969-e86a-4f11-87bf-fe1044d111f3", + "id": "afaa2c14-d666-442f-ada8-778fd5c4478d", "name": "Unauthorized. The API token is missing or invalid, or the account may not use the API. Ownership never causes a 401 here: another account's tracking request returns 422.", "originalRequest": { "url": { @@ -18723,12 +18723,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "6d05390e-2695-431d-b7ec-f220ffb518cb", + "id": "d6098dd8-35a5-4d81-ae00-1c03a71107e4", "name": "The tracking request is not in a cancellable status, or it belongs to another account.", "originalRequest": { "url": { @@ -18784,7 +18784,7 @@ "_postman_previewlanguage": "json" }, { - "id": "1404f47d-0373-4c78-838e-b396f9286fc4", + "id": "c3891eea-060c-48e9-ae4c-dd2f97e0857b", "name": "Server error. An unknown tracking request ID currently returns 500 instead of 404.", "originalRequest": { "url": { @@ -18842,7 +18842,7 @@ "description": "", "item": [ { - "id": "8f8412c9-3b25-458b-b1ef-9cd4cfbad045", + "id": "ca620b29-3fa1-4373-be22-5e2af0fa3c47", "name": "Get single webhook", "request": { "name": "Get single webhook", @@ -18884,7 +18884,7 @@ }, "response": [ { - "id": "68706c08-c87e-4f3d-bf43-595d7d1b5914", + "id": "dde2d246-1dda-4cd3-bfe8-184b3325a84b", "name": "OK", "originalRequest": { "url": { @@ -18934,12 +18934,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"tracking_request.awaiting_manifest\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.empty_in\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "03c03ae7-561b-4273-b278-a9e30dac9a9e", + "id": "5d80a751-7305-4aec-a51e-4e8c20e942a2", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -18989,12 +18989,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "dbcb8984-5fc8-4718-8090-144f0c10e1a8", + "id": "f6e1ae45-d23a-4fb6-853c-0a2ed19668fb", "name": "Not Found", "originalRequest": { "url": { @@ -19044,7 +19044,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -19055,7 +19055,7 @@ } }, { - "id": "eeb7a4bf-d1f3-48c0-90b2-e52324c016f9", + "id": "d1448aca-0489-4669-a59c-0bf30c7656c6", "name": "Edit a webhook", "request": { "name": "Edit a webhook", @@ -19098,7 +19098,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.full_in\"\n ],\n \"active\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.transshipment_departed\"\n ],\n \"active\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -19110,7 +19110,7 @@ }, "response": [ { - "id": "6819db89-5422-43d2-af00-92ce96d616cd", + "id": "146004aa-4451-49dd-9a92-38d3be27b996", "name": "OK", "originalRequest": { "url": { @@ -19156,7 +19156,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.full_in\"\n ],\n \"active\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.transshipment_departed\"\n ],\n \"active\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -19173,12 +19173,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"tracking_request.awaiting_manifest\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.empty_in\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "e34d7433-5ffe-49f3-96dc-09562c36e4ed", + "id": "87c6e653-a2cd-4a70-b1e6-4e2a47b1dfd7", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -19224,7 +19224,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.full_in\"\n ],\n \"active\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.transshipment_departed\"\n ],\n \"active\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -19241,12 +19241,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "c9b70f49-f0ec-4d14-889c-2340ccdb71a9", + "id": "d585f8a8-c635-461b-a56b-15a8441b6829", "name": "Not Found", "originalRequest": { "url": { @@ -19292,7 +19292,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.full_in\"\n ],\n \"active\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.transshipment_departed\"\n ],\n \"active\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -19309,12 +19309,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "fecc2288-3228-489b-852b-97fd8a5413f4", + "id": "d19aaa9e-4b4c-4e0d-8bfe-7e8eadf271df", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -19360,7 +19360,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.full_in\"\n ],\n \"active\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.transshipment_departed\"\n ],\n \"active\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -19377,7 +19377,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -19388,7 +19388,7 @@ } }, { - "id": "5b253719-d865-4550-9260-7b9073bc0c26", + "id": "25279130-d52c-4ec7-986a-e7a2479d39de", "name": "Delete a webhook", "request": { "name": "Delete a webhook", @@ -19430,7 +19430,7 @@ }, "response": [ { - "id": "be5d7660-33cd-4421-98d8-ab7baca87659", + "id": "decd8233-71f9-4e02-819f-9c1ca8deb6a9", "name": "No Content", "originalRequest": { "url": { @@ -19475,7 +19475,7 @@ "_postman_previewlanguage": "text" }, { - "id": "f325de07-13e6-460d-8e1e-f41513314880", + "id": "192ead98-6398-4082-8ac3-29990bd6075a", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -19525,12 +19525,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "76e3d47a-170b-40e7-9cc7-3edb748b06ff", + "id": "40180e06-cea6-4e6f-b472-5e218ea6f20d", "name": "Not Found", "originalRequest": { "url": { @@ -19580,7 +19580,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -19591,7 +19591,7 @@ } }, { - "id": "09b095f9-1711-433b-a609-a55b45808ced", + "id": "8ea07307-9522-4402-8944-ca0613a607bb", "name": "List webhooks", "request": { "name": "List webhooks", @@ -19640,7 +19640,7 @@ }, "response": [ { - "id": "e3419281-f059-4b1f-95d0-19a44da79eb6", + "id": "8a58553d-58f3-4d5b-b87b-857cfc93b2ca", "name": "OK", "originalRequest": { "url": { @@ -19697,7 +19697,7 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.vessel_discharged\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n },\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"document_representation.created\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n ],\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.estimated.vessel_arrived\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n },\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.rail_arrived\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n ],\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -19708,7 +19708,7 @@ } }, { - "id": "348b54ab-94c1-4f24-9e3a-815b54ead220", + "id": "3987d0e4-ef2b-4b3a-8bab-fb7e8f6d1212", "name": "Create a webhook", "request": { "name": "Create a webhook", @@ -19739,7 +19739,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.full_out\"\n ],\n \"active\": true,\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.rail_unloaded\"\n ],\n \"active\": true,\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -19751,7 +19751,7 @@ }, "response": [ { - "id": "8e8eddb6-b20e-4068-a56c-63caaccb9d0f", + "id": "4a5ab34d-707a-4316-a853-658824eb1783", "name": "Create a test webhook endpoint", "originalRequest": { "url": { @@ -19785,7 +19785,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.full_out\"\n ],\n \"active\": true,\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.rail_unloaded\"\n ],\n \"active\": true,\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -19802,12 +19802,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"tracking_request.awaiting_manifest\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.empty_in\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "43e8ac28-472e-461d-80cb-3c1bd85be49d", + "id": "97676cfd-127e-4695-9ed2-6ba04ad7ae8d", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -19841,7 +19841,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.full_out\"\n ],\n \"active\": true,\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", + "raw": "{\n \"data\": {\n \"attributes\": {\n \"url\": \"\",\n \"events\": [\n \"container.transport.rail_unloaded\"\n ],\n \"active\": true,\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n },\n \"type\": \"webhook\"\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -19858,7 +19858,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -19869,7 +19869,7 @@ } }, { - "id": "cc23460f-38a1-49e5-9430-70b4e097b8df", + "id": "654af4b5-c99c-4bb3-b093-41bdcf10a49d", "name": "List webhook events", "request": { "name": "List webhook events", @@ -19900,7 +19900,7 @@ }, "response": [ { - "id": "3d339cb4-5478-4965-b872-d1d9930b287a", + "id": "e854740e-a579-4628-8fe7-0a07607645c9", "name": "OK", "originalRequest": { "url": { @@ -19950,7 +19950,7 @@ } }, { - "id": "1d5d2ecc-3e09-4d76-b905-73a5c985a0b3", + "id": "c4c831fb-e69e-4155-88b0-397cf78b1e54", "name": "List webhook IPs", "request": { "name": "List webhook IPs", @@ -19981,7 +19981,7 @@ }, "response": [ { - "id": "d4410e45-32a9-4549-93bc-a33f5fa1bf08", + "id": "0d1e1167-b4c2-4f88-8887-06469b5a2921", "name": "OK", "originalRequest": { "url": { @@ -20031,7 +20031,7 @@ } }, { - "id": "ab2bcabf-9cce-4ccc-bcd0-df34d50083cc", + "id": "11533ead-8472-4bcf-8907-737cf3422327", "name": "Trigger a webhook test delivery", "request": { "name": "Trigger a webhook test delivery", @@ -20075,7 +20075,7 @@ }, "response": [ { - "id": "fec65699-1a2c-491f-9af0-0c3b3f15bc1c", + "id": "10ddfc0a-6cee-4341-a2a6-fe2b4aee5bf4", "name": "Webhook test delivery attempt result", "originalRequest": { "url": { @@ -20127,12 +20127,12 @@ "value": "application/json" } ], - "body": "{\n \"url\": \"\",\n \"succeeded\": \"\",\n \"error\": \"\",\n \"status_code\": \"\",\n \"request_headers\": {\n \"key_0\": \"string\",\n \"key_1\": true,\n \"key_2\": \"string\"\n },\n \"request_body\": \"\",\n \"response_headers\": {\n \"key_0\": 2025.4557149488817,\n \"key_1\": true\n },\n \"response_body\": \"\"\n}", + "body": "{\n \"url\": \"\",\n \"succeeded\": \"\",\n \"error\": \"\",\n \"status_code\": \"\",\n \"request_headers\": {\n \"key_0\": 2968.012839266493,\n \"key_1\": false\n },\n \"request_body\": \"\",\n \"response_headers\": {\n \"key_0\": true,\n \"key_1\": 7612.174647740959\n },\n \"response_body\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "ed5b7e2c-68d2-444d-8e29-46fbf7dad6ea", + "id": "a1327949-9f12-4f63-b392-800e792b87c6", "name": "Validation error", "originalRequest": { "url": { @@ -20201,7 +20201,7 @@ "description": "", "item": [ { - "id": "0da25463-a943-4833-ac07-bff23f9fe1c6", + "id": "cec9efac-0225-4af7-bc1a-d3430d33b1b6", "name": "Get a single webhook notification", "request": { "name": "Get a single webhook notification", @@ -20250,7 +20250,7 @@ }, "response": [ { - "id": "38515a4f-560b-4752-b9f0-06a9f95f4892", + "id": "81a7a15b-0d87-4b18-a994-264e295182fa", "name": "200", "originalRequest": { "url": { @@ -20310,12 +20310,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook_notification\",\n \"attributes\": {\n \"event\": \"container.transport.rail_arrived\",\n \"delivery_status\": \"pending\",\n \"created_at\": \"\"\n },\n \"relationships\": {\n \"webhook\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\"\n }\n },\n \"reference_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"document\"\n }\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"tracking_request.tracking_stopped\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n },\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.rail_unloaded\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n ]\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook_notification\",\n \"attributes\": {\n \"event\": \"link.created\",\n \"delivery_status\": \"pending\",\n \"created_at\": \"\"\n },\n \"relationships\": {\n \"webhook\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\"\n }\n },\n \"reference_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container_updated_event\"\n }\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.vessel_departed\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n },\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.rail_departed\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "27f5bda0-5300-479c-b419-4b39cb1703d6", + "id": "6fe3f72a-9513-46a5-8603-69988d616ea6", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -20375,12 +20375,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "5a75ed53-4ae9-4a16-a126-fb88f0178a66", + "id": "a6ce78d3-7e9e-44a1-bc9a-3390c0300524", "name": "Not Found", "originalRequest": { "url": { @@ -20440,7 +20440,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -20451,7 +20451,7 @@ } }, { - "id": "50135043-4247-4063-b246-376753c4e3d0", + "id": "d16338ee-60ef-4d85-8dee-ca7cb17e953b", "name": "List webhook notifications", "request": { "name": "List webhook notifications", @@ -20509,7 +20509,7 @@ }, "response": [ { - "id": "64df6a8a-8b97-4fec-b79a-c9957fac7687", + "id": "4a065e0f-d978-46de-bec0-0e7e14f5fcbd", "name": "OK", "originalRequest": { "url": { @@ -20575,7 +20575,7 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"webhook_notification\",\n \"attributes\": {\n \"event\": \"container.transport.estimated.vessel_departed\",\n \"delivery_status\": \"pending\",\n \"created_at\": \"\"\n },\n \"relationships\": {\n \"webhook\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\"\n }\n },\n \"reference_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"tracking_request\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"webhook_notification\",\n \"attributes\": {\n \"event\": \"container.pickup_lfd.changed\",\n \"delivery_status\": \"pending\",\n \"created_at\": \"\"\n },\n \"relationships\": {\n \"webhook\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\"\n }\n },\n \"reference_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"tracking_request\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.vessel_discharged\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n },\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.pickup_lfd_terminal.changed\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n ]\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"webhook_notification\",\n \"attributes\": {\n \"event\": \"container.transport.vessel_departed\",\n \"delivery_status\": \"pending\",\n \"created_at\": \"\"\n },\n \"relationships\": {\n \"webhook\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\"\n }\n },\n \"reference_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"transport_event\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"webhook_notification\",\n \"attributes\": {\n \"event\": \"document_representation.created\",\n \"delivery_status\": \"pending\",\n \"created_at\": \"\"\n },\n \"relationships\": {\n \"webhook\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\"\n }\n },\n \"reference_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container_updated_event\"\n }\n }\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.vessel_departed\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n },\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.estimated.arrived_at_inland_destination\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -20586,7 +20586,7 @@ } }, { - "id": "5d0d8403-4baa-4d38-a58b-3d1988645371", + "id": "e6fdee3c-af82-4661-8789-4e015e61f89f", "name": "Get webhook notification payload examples", "request": { "name": "Get webhook notification payload examples", @@ -20610,7 +20610,7 @@ "type": "text/plain" }, "key": "event", - "value": "container.transport.feeder_departed" + "value": "container.transport.available" } ], "variable": [] @@ -20627,7 +20627,7 @@ }, "response": [ { - "id": "3bf1afe7-8b09-4ce0-a75f-1b0bcdaa2eaa", + "id": "0122259a-8f33-42de-81a6-65149beb51ab", "name": "OK", "originalRequest": { "url": { @@ -20646,7 +20646,7 @@ "type": "text/plain" }, "key": "event", - "value": "container.transport.feeder_departed" + "value": "container.transport.available" } ], "variable": [] @@ -20676,12 +20676,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook_notification\",\n \"attributes\": {\n \"event\": \"container.transport.rail_arrived\",\n \"delivery_status\": \"pending\",\n \"created_at\": \"\"\n },\n \"relationships\": {\n \"webhook\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\"\n }\n },\n \"reference_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"document\"\n }\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"tracking_request.tracking_stopped\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n },\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.rail_unloaded\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n ]\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook_notification\",\n \"attributes\": {\n \"event\": \"link.created\",\n \"delivery_status\": \"pending\",\n \"created_at\": \"\"\n },\n \"relationships\": {\n \"webhook\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"webhook\"\n }\n },\n \"reference_object\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"container_updated_event\"\n }\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.vessel_departed\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n },\n {\n \"id\": \"\",\n \"type\": \"webhook\",\n \"attributes\": {\n \"url\": \"\",\n \"active\": true,\n \"events\": [\n \"container.transport.rail_departed\"\n ],\n \"secret\": \"\",\n \"headers\": [\n {\n \"name\": \"\",\n \"value\": \"\"\n },\n {\n \"name\": \"\",\n \"value\": \"\"\n }\n ]\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "9c8f0d2c-ba9d-4970-8e04-7aeb2ac8b6eb", + "id": "1c9c3bd9-e37b-454b-a8b0-772705ee6459", "name": "Bad Request", "originalRequest": { "url": { @@ -20700,7 +20700,7 @@ "type": "text/plain" }, "key": "event", - "value": "container.transport.feeder_departed" + "value": "container.transport.available" } ], "variable": [] @@ -20730,7 +20730,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -20747,7 +20747,7 @@ "description": "", "item": [ { - "id": "112c9648-5ce2-4513-85a4-6143eeabe992", + "id": "ac495875-0daf-434e-b125-2fa3069e5a23", "name": "Get a port using the locode or the id", "request": { "name": "Get a port using the locode or the id", @@ -20789,7 +20789,7 @@ }, "response": [ { - "id": "dfc85c72-f43f-4022-8597-92d491d88d88", + "id": "a73db544-e91d-4478-9a26-fe18075971b5", "name": "OK", "originalRequest": { "url": { @@ -20844,7 +20844,7 @@ "_postman_previewlanguage": "json" }, { - "id": "34630424-2dbe-4fc5-b478-0b436404b4ff", + "id": "65a87eae-c3f7-4226-b551-3f310b9d1c58", "name": "Not Found", "originalRequest": { "url": { @@ -20894,7 +20894,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -20911,7 +20911,7 @@ "description": "", "item": [ { - "id": "f6e0ffed-b45d-4a5b-811b-d291ec756b00", + "id": "3684f513-2630-4c52-8a91-1d78594fd72c", "name": "Get a metro area using the un/locode or the id", "request": { "name": "Get a metro area using the un/locode or the id", @@ -20953,7 +20953,7 @@ }, "response": [ { - "id": "db6f70fb-f79f-4807-9995-0f4d1a841cd7", + "id": "8806b7df-e497-4235-ab17-a2fbd704155b", "name": "OK. An unknown id or UN/LOCODE returns `data: null` with status 200, not 404.", "originalRequest": { "url": { @@ -21020,7 +21020,7 @@ "description": "", "item": [ { - "id": "65a2f9ff-5882-47e9-8c10-cda09cc29bdc", + "id": "2983905e-2fe4-4668-9099-a87a391579c5", "name": "Get a terminal using the id", "request": { "name": "Get a terminal using the id", @@ -21062,7 +21062,7 @@ }, "response": [ { - "id": "16cd1bff-b70a-4eb6-9265-458402cbe49a", + "id": "8e97de8b-def4-415c-b030-8a8273c62388", "name": "OK", "originalRequest": { "url": { @@ -21117,7 +21117,7 @@ "_postman_previewlanguage": "json" }, { - "id": "b5032405-805b-48eb-9d41-6cfdaeae850d", + "id": "df3dec84-7664-4f4f-9b38-17207cf6fbd5", "name": "Not Found", "originalRequest": { "url": { @@ -21167,7 +21167,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -21184,7 +21184,7 @@ "description": "", "item": [ { - "id": "4f856449-3265-41d0-8142-e0d746a56583", + "id": "e1d30761-1eb3-4298-9857-582dc83d4a31", "name": "Get container map GeoJSON", "request": { "name": "Get container map GeoJSON", @@ -21227,7 +21227,7 @@ }, "response": [ { - "id": "41521038-772e-4c78-82d6-02654d6507b0", + "id": "a9c7135b-0310-4d17-8230-ef7ca88661d3", "name": "OK", "originalRequest": { "url": { @@ -21283,7 +21283,7 @@ "_postman_previewlanguage": "json" }, { - "id": "05cd9bf8-2e4c-4079-8cb7-9fc22f253973", + "id": "b8c58c34-5480-4006-933a-cb8f47a887a5", "name": "Forbidden - Routing data feature is not enabled for this account", "originalRequest": { "url": { @@ -21339,7 +21339,7 @@ "_postman_previewlanguage": "json" }, { - "id": "38e03333-800d-4fe7-a8ef-6bb42aca9bf8", + "id": "0fd88ba4-a886-4c98-b51d-c8c1ddf94c6d", "name": "Not Found", "originalRequest": { "url": { @@ -21390,7 +21390,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -21401,7 +21401,7 @@ } }, { - "id": "482912b7-4dcf-4e76-9344-9f25b9c0887d", + "id": "a226d348-c496-488b-a2aa-91848474ce5d", "name": "Get vessel future positions", "request": { "name": "Get vessel future positions", @@ -21463,7 +21463,7 @@ }, "response": [ { - "id": "923c117b-f628-42a7-911c-b251e667f5bd", + "id": "f7154268-3f7b-412e-8f6a-92b87dd3fabf", "name": "OK", "originalRequest": { "url": { @@ -21538,7 +21538,7 @@ "_postman_previewlanguage": "json" }, { - "id": "2c01f759-123a-4baa-b9d2-b77c3e0fce0c", + "id": "ffdc9046-6c86-4925-b5f3-ae858ba529c0", "name": "Forbidden - Routing data feature is not enabled for this account", "originalRequest": { "url": { @@ -21613,7 +21613,7 @@ "_postman_previewlanguage": "json" }, { - "id": "fe902777-9b53-4737-8b8f-c4ace0e96f1d", + "id": "332a38ff-6c51-4a99-81ab-a6eca2485178", "name": "Not Found", "originalRequest": { "url": { @@ -21683,7 +21683,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -21694,7 +21694,7 @@ } }, { - "id": "91591d5b-3a13-4473-8ab8-e828970845f1", + "id": "f7c6485a-da2e-4b24-9367-239c38d9d877", "name": "Get vessel future positions from coordinates", "request": { "name": "Get vessel future positions from coordinates", @@ -21774,7 +21774,7 @@ }, "response": [ { - "id": "1701692b-a2e4-4e84-9cd9-9306f18a8e04", + "id": "87766e15-6dcb-40fe-bd79-dfb2a94c5b98", "name": "OK", "originalRequest": { "url": { @@ -21867,7 +21867,7 @@ "_postman_previewlanguage": "json" }, { - "id": "ec777805-1acd-499f-96cf-de222858771e", + "id": "4b498c77-a66d-4009-8915-98a9e7f4048a", "name": "Forbidden - Routing data feature is not enabled for this account", "originalRequest": { "url": { @@ -21960,7 +21960,7 @@ "_postman_previewlanguage": "json" }, { - "id": "ce44f5be-b97d-4ce8-9636-6708a61aac05", + "id": "b41e532b-ce90-48d2-80ce-9e8a010aa1ee", "name": "Not Found", "originalRequest": { "url": { @@ -22048,7 +22048,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -22065,7 +22065,7 @@ "description": "", "item": [ { - "id": "f9aaa3a0-405a-49b9-9b03-df79bb98709d", + "id": "eaf5f3a9-f338-4e69-8ae6-43ccc3e8ff38", "name": "List documents", "request": { "name": "List documents", @@ -22159,7 +22159,7 @@ }, "response": [ { - "id": "e878e5bc-17d0-4cd4-8b1e-864e56a56c26", + "id": "9b96e137-11b1-4e63-9c99-4ed6df8f1ae1", "name": "OK", "originalRequest": { "url": { @@ -22261,12 +22261,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"document\",\n \"attributes\": {\n \"id\": \"\",\n \"name\": \"\",\n \"document_type\": \"\",\n \"document_type_source\": \"customer\",\n \"classification_notes\": \"\",\n \"source\": \"api\",\n \"file_name\": \"\",\n \"file_content_type\": \"\",\n \"file_size_bytes\": \"\",\n \"parsed\": {\n \"packetSegment\": {\n \"startPage\": \"\",\n \"endPage\": \"\"\n }\n },\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n },\n \"email_submission\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"email_submission\"\n }\n },\n \"last_document_representation\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"document_representation\"\n }\n },\n \"parent_document\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"document\"\n }\n },\n \"shipments\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\"\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n ]\n },\n \"cargos\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"container\"\n },\n {\n \"id\": \"\",\n \"type\": \"container\"\n }\n ]\n }\n },\n \"links\": {\n \"self\": \"\",\n \"download\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"document\",\n \"attributes\": {\n \"id\": \"\",\n \"name\": \"\",\n \"document_type\": \"\",\n \"document_type_source\": \"llm\",\n \"classification_notes\": \"\",\n \"source\": \"email\",\n \"file_name\": \"\",\n \"file_content_type\": \"\",\n \"file_size_bytes\": \"\",\n \"parsed\": {\n \"packetSegment\": {\n \"startPage\": \"\",\n \"endPage\": \"\"\n }\n },\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n },\n \"email_submission\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"email_submission\"\n }\n },\n \"last_document_representation\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"document_representation\"\n }\n },\n \"parent_document\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"document\"\n }\n },\n \"shipments\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\"\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n ]\n },\n \"cargos\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"container\"\n },\n {\n \"id\": \"\",\n \"type\": \"container\"\n }\n ]\n }\n },\n \"links\": {\n \"self\": \"\",\n \"download\": \"\"\n }\n }\n ],\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"document\",\n \"attributes\": {\n \"id\": \"\",\n \"name\": \"\",\n \"document_type\": \"\",\n \"document_type_source\": \"llm\",\n \"classification_notes\": \"\",\n \"source\": \"split_document\",\n \"file_name\": \"\",\n \"file_content_type\": \"\",\n \"file_size_bytes\": \"\",\n \"parsed\": {\n \"packetSegment\": {\n \"startPage\": \"\",\n \"endPage\": \"\"\n }\n },\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n },\n \"email_submission\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"email_submission\"\n }\n },\n \"last_document_representation\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"document_representation\"\n }\n },\n \"parent_document\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"document\"\n }\n },\n \"shipments\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\"\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n ]\n },\n \"cargos\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"container\"\n },\n {\n \"id\": \"\",\n \"type\": \"container\"\n }\n ]\n }\n },\n \"links\": {\n \"self\": \"\",\n \"download\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"document\",\n \"attributes\": {\n \"id\": \"\",\n \"name\": \"\",\n \"document_type\": \"\",\n \"document_type_source\": \"admin\",\n \"classification_notes\": \"\",\n \"source\": \"upload\",\n \"file_name\": \"\",\n \"file_content_type\": \"\",\n \"file_size_bytes\": \"\",\n \"parsed\": {\n \"packetSegment\": {\n \"startPage\": \"\",\n \"endPage\": \"\"\n }\n },\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n },\n \"email_submission\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"email_submission\"\n }\n },\n \"last_document_representation\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"document_representation\"\n }\n },\n \"parent_document\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"document\"\n }\n },\n \"shipments\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"shipment\"\n },\n {\n \"id\": \"\",\n \"type\": \"shipment\"\n }\n ]\n },\n \"cargos\": {\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"container\"\n },\n {\n \"id\": \"\",\n \"type\": \"container\"\n }\n ]\n }\n },\n \"links\": {\n \"self\": \"\",\n \"download\": \"\"\n }\n }\n ],\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\"\n }\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "f15e737d-5ab6-4225-a318-05a716b32d1a", + "id": "7bae076b-bd40-42f1-95e9-839e6336dab4", "name": "Bad Request", "originalRequest": { "url": { @@ -22368,12 +22368,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "2f4d4afa-de91-4afc-9ba6-89d1adef8209", + "id": "1147948a-cd65-414f-aed1-f9c414010fed", "name": "Unauthorized", "originalRequest": { "url": { @@ -22475,7 +22475,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -22486,7 +22486,7 @@ } }, { - "id": "16d98068-544f-40e8-b66c-ed1f9130c3e4", + "id": "59a7c490-fecc-403a-894e-3a48711234c7", "name": "Upload a document", "request": { "name": "Upload a document", @@ -22529,7 +22529,7 @@ }, "response": [ { - "id": "629f6fd9-69a3-4faa-897e-459405781c3c", + "id": "237c54ba-8f05-4469-8301-f9b7e687838a", "name": "Created", "originalRequest": { "url": { @@ -22585,7 +22585,7 @@ "_postman_previewlanguage": "json" }, { - "id": "4a49fd21-52da-4da2-8eb4-0b2efa43b5b0", + "id": "8adcdcd2-ce1a-4f8d-b03e-809a60891036", "name": "Duplicate document", "originalRequest": { "url": { @@ -22641,7 +22641,7 @@ "_postman_previewlanguage": "json" }, { - "id": "0cf78339-996e-4b81-9c0e-679c1e5bd6a9", + "id": "73bd9c76-f9f0-4997-bb44-589cf990fa31", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -22692,7 +22692,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -22703,7 +22703,7 @@ } }, { - "id": "88365d4b-ffb6-4c6c-aa04-f90c9e6739da", + "id": "66c63cbe-4df1-433f-9d73-bea52e7c166b", "name": "List document types", "request": { "name": "List document types", @@ -22734,7 +22734,7 @@ }, "response": [ { - "id": "9e1bec81-75bc-462b-aeed-5600cd533e28", + "id": "4a892397-0c4c-441b-8026-f0d7f4ca0cf9", "name": "OK", "originalRequest": { "url": { @@ -22778,7 +22778,7 @@ "_postman_previewlanguage": "json" }, { - "id": "cb8d7a50-0064-4d00-b5a7-97ae4cb21a0d", + "id": "e3b29bbf-4ea2-48aa-8f61-253175c52a50", "name": "Unauthorized", "originalRequest": { "url": { @@ -22817,7 +22817,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -22828,7 +22828,7 @@ } }, { - "id": "d2810ba8-9d5b-42a1-9d4a-093ba9ca4f16", + "id": "7010be5b-c96c-455e-a8ab-d779cf22503a", "name": "Get a document", "request": { "name": "Get a document", @@ -22877,7 +22877,7 @@ }, "response": [ { - "id": "cb2e3cbc-6db4-4236-b650-77b05ecb8e87", + "id": "24d99fd2-0f99-49c6-bedd-95a8546ed6fa", "name": "OK", "originalRequest": { "url": { @@ -22942,7 +22942,7 @@ "_postman_previewlanguage": "json" }, { - "id": "fbd497c8-812f-4356-879e-76b3fbcae8da", + "id": "8de0fc0c-5213-4652-84cc-91baa987c560", "name": "Bad Request", "originalRequest": { "url": { @@ -23002,12 +23002,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "615b57ba-9edb-41df-a2f0-f6758c76d3b7", + "id": "1e32d0a8-a45a-4357-8a59-323ca31e028c", "name": "Not Found", "originalRequest": { "url": { @@ -23067,7 +23067,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -23078,7 +23078,7 @@ } }, { - "id": "abad8a6b-b770-4bf9-a7dc-43e8990c43ef", + "id": "53ddf93c-1091-458c-8f95-24948a522d74", "name": "Edit a document", "request": { "name": "Edit a document", @@ -23121,7 +23121,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"document\",\n \"attributes\": {\n \"document_type\": \"\",\n \"classification_notes\": \"\",\n \"extracted_data_manual\": {\n \"key_0\": 6764\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"document\",\n \"attributes\": {\n \"document_type\": \"\",\n \"classification_notes\": \"\",\n \"extracted_data_manual\": {\n \"key_0\": false\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -23133,7 +23133,7 @@ }, "response": [ { - "id": "9052a295-3dd6-4e7b-a9df-5159a302cfbf", + "id": "50d047cf-1970-4408-a352-8442735d798e", "name": "OK", "originalRequest": { "url": { @@ -23179,7 +23179,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"document\",\n \"attributes\": {\n \"document_type\": \"\",\n \"classification_notes\": \"\",\n \"extracted_data_manual\": {\n \"key_0\": 6764\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"document\",\n \"attributes\": {\n \"document_type\": \"\",\n \"classification_notes\": \"\",\n \"extracted_data_manual\": {\n \"key_0\": false\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -23201,7 +23201,7 @@ "_postman_previewlanguage": "json" }, { - "id": "82c9b6b6-d02d-43b6-bddb-cbf2709982d1", + "id": "39eb9f80-a936-4d46-a63c-383787ffd24f", "name": "Not Found", "originalRequest": { "url": { @@ -23247,7 +23247,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"document\",\n \"attributes\": {\n \"document_type\": \"\",\n \"classification_notes\": \"\",\n \"extracted_data_manual\": {\n \"key_0\": 6764\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"document\",\n \"attributes\": {\n \"document_type\": \"\",\n \"classification_notes\": \"\",\n \"extracted_data_manual\": {\n \"key_0\": false\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -23264,12 +23264,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "07018d49-b335-48f6-9e51-30db3ac5d8bc", + "id": "adc073bb-ba62-447c-88f2-f81a6a91c381", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -23315,7 +23315,7 @@ "method": "PATCH", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"document\",\n \"attributes\": {\n \"document_type\": \"\",\n \"classification_notes\": \"\",\n \"extracted_data_manual\": {\n \"key_0\": 6764\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"document\",\n \"attributes\": {\n \"document_type\": \"\",\n \"classification_notes\": \"\",\n \"extracted_data_manual\": {\n \"key_0\": false\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -23332,7 +23332,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -23343,7 +23343,7 @@ } }, { - "id": "93f92be2-7a20-4f24-aaf4-f013dbca99ca", + "id": "fd4eda69-0606-46d1-b95b-f3aa7b2520a2", "name": "Delete a document", "request": { "name": "Delete a document", @@ -23385,7 +23385,7 @@ }, "response": [ { - "id": "8e509392-6ee3-48f7-8931-1fd0102a45b9", + "id": "ac63e66d-db1f-492b-b599-10bc8b07cda8", "name": "No Content", "originalRequest": { "url": { @@ -23430,7 +23430,7 @@ "_postman_previewlanguage": "text" }, { - "id": "2e05fad5-6dbb-498e-b82d-79391c554fc8", + "id": "046c609f-15e5-408e-a043-7665e9606b85", "name": "Not Found", "originalRequest": { "url": { @@ -23480,7 +23480,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -23491,7 +23491,7 @@ } }, { - "id": "61a34ea4-9535-45fb-b030-a4b897314d3b", + "id": "5b1f0f53-a077-4ed5-b53e-ca0a6077294d", "name": "Get a document download URL", "request": { "name": "Get a document download URL", @@ -23534,7 +23534,7 @@ }, "response": [ { - "id": "96542d58-f64b-4dd0-a994-36592b28ba2f", + "id": "0ad18b67-5547-48f9-aed9-96d8cc58bae8", "name": "OK", "originalRequest": { "url": { @@ -23590,7 +23590,7 @@ "_postman_previewlanguage": "json" }, { - "id": "4aa5e459-6dc5-4fc0-a770-59e058a429fd", + "id": "521f5fd0-48c2-4406-97b4-c9bbfd251d6c", "name": "Not Found", "originalRequest": { "url": { @@ -23641,12 +23641,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "098cd237-61ce-4eb2-8760-438ea14c9630", + "id": "3b4a7c5b-510e-4a81-ac18-48b5bcba30c5", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -23697,7 +23697,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -23708,7 +23708,7 @@ } }, { - "id": "f4e3070f-5257-4976-8d69-01d5e6e34166", + "id": "cfca2151-c02b-4549-841b-c6e87c15e464", "name": "Re-extract a document", "request": { "name": "Re-extract a document", @@ -23751,7 +23751,7 @@ }, "response": [ { - "id": "e7829f45-ea22-4728-ad99-a5b6ba1fbe8a", + "id": "3bc5d93a-2ee8-4c69-bbe9-51d37698e27d", "name": "Accepted", "originalRequest": { "url": { @@ -23807,7 +23807,7 @@ "_postman_previewlanguage": "json" }, { - "id": "f273dc45-5f60-4657-b452-95bd42c0c18b", + "id": "642c9dea-e367-4a62-855b-b300e0be42c4", "name": "Not Found", "originalRequest": { "url": { @@ -23858,7 +23858,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -23869,7 +23869,7 @@ } }, { - "id": "0516a2ea-6964-457b-b885-f933ba5461b3", + "id": "dac0a3fd-9f4e-46a3-9e97-ca5e123dab30", "name": "Re-classify a document", "request": { "name": "Re-classify a document", @@ -23912,7 +23912,7 @@ }, "response": [ { - "id": "54909435-06e6-48f8-9ed5-b02f8796cb15", + "id": "2c711a9b-c782-4a44-aa75-365d38fa9115", "name": "Accepted", "originalRequest": { "url": { @@ -23968,7 +23968,7 @@ "_postman_previewlanguage": "json" }, { - "id": "0047dbb0-70d2-4956-a8e1-e85438cedfdd", + "id": "8dc6a0db-da86-4553-bfc5-122076e9ad04", "name": "Not Found", "originalRequest": { "url": { @@ -24019,7 +24019,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -24030,7 +24030,7 @@ } }, { - "id": "f46ff854-9a6e-4a22-8d1c-002f884e2053", + "id": "587d0a83-97f5-478a-90ff-e737039562ab", "name": "Re-link a document", "request": { "name": "Re-link a document", @@ -24073,7 +24073,7 @@ }, "response": [ { - "id": "16453a84-c12c-4a5f-b91f-31339573117a", + "id": "62a551a2-9dd8-4d93-9d72-eb664adc6af4", "name": "Accepted", "originalRequest": { "url": { @@ -24129,7 +24129,7 @@ "_postman_previewlanguage": "json" }, { - "id": "a4bedf98-25f5-4721-adbc-c3a0b4d762e3", + "id": "cdeaec32-acd0-4fc1-bbb4-e84b3f954032", "name": "Not Found", "originalRequest": { "url": { @@ -24180,7 +24180,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -24191,7 +24191,7 @@ } }, { - "id": "26b0062c-efff-4a6d-b8f3-3f74c94b479a", + "id": "60c2a213-c411-4248-b739-bef4d2cf8bb4", "name": "Rotate a document", "request": { "name": "Rotate a document", @@ -24235,7 +24235,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"degrees\": 90\n}", + "raw": "{\n \"degrees\": 270\n}", "options": { "raw": { "headerFamily": "json", @@ -24247,7 +24247,7 @@ }, "response": [ { - "id": "9240d31a-7675-4100-848b-aa2c1f4c2ddd", + "id": "c66749fc-b2f1-4f43-902f-3d965d8a1170", "name": "Accepted", "originalRequest": { "url": { @@ -24294,7 +24294,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"degrees\": 90\n}", + "raw": "{\n \"degrees\": 270\n}", "options": { "raw": { "headerFamily": "json", @@ -24316,7 +24316,7 @@ "_postman_previewlanguage": "json" }, { - "id": "45f27601-3c4d-485b-aed0-398341d6c087", + "id": "02ea28b6-be7c-44a1-9be6-215720152be3", "name": "Not Found", "originalRequest": { "url": { @@ -24363,7 +24363,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"degrees\": 90\n}", + "raw": "{\n \"degrees\": 270\n}", "options": { "raw": { "headerFamily": "json", @@ -24380,12 +24380,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "c8b3dcb9-aba9-4cc4-ad19-a64b0d9ae748", + "id": "0895938d-c115-4fee-8a9d-bec2bbc73693", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -24432,7 +24432,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"degrees\": 90\n}", + "raw": "{\n \"degrees\": 270\n}", "options": { "raw": { "headerFamily": "json", @@ -24449,7 +24449,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -24466,7 +24466,7 @@ "description": "", "item": [ { - "id": "de2263ce-807c-4871-9a10-1c5b329c246d", + "id": "06bdd34d-093b-4f5c-b0ad-3e177d376dab", "name": "List email submissions", "request": { "name": "List email submissions", @@ -24524,7 +24524,7 @@ }, "response": [ { - "id": "dd2d8e1a-e662-40ba-90ca-d9f7e0978bc6", + "id": "e132f6b9-08c6-45f5-ac3f-f6e02d4f5d84", "name": "OK", "originalRequest": { "url": { @@ -24595,7 +24595,7 @@ "_postman_previewlanguage": "json" }, { - "id": "4253130e-b6b6-4164-846b-a97879082ba0", + "id": "b1acb863-8b44-4cfc-af49-b85622af3097", "name": "Bad Request", "originalRequest": { "url": { @@ -24661,12 +24661,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "1eb874f4-c0de-4eed-af7e-97acaeb41a24", + "id": "c7ebf898-6706-43a3-af6d-64feabf5d575", "name": "Unauthorized", "originalRequest": { "url": { @@ -24732,7 +24732,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -24743,7 +24743,7 @@ } }, { - "id": "0a8a2f53-69b5-4103-8fd0-911e64ba5706", + "id": "cf420471-62d6-4355-aa92-de514c16086f", "name": "Get an email submission", "request": { "name": "Get an email submission", @@ -24792,7 +24792,7 @@ }, "response": [ { - "id": "698b854c-f542-4be5-bebd-689c3829d2bc", + "id": "03e466cd-2041-4ecd-8add-a085f2a45ec1", "name": "OK", "originalRequest": { "url": { @@ -24857,7 +24857,7 @@ "_postman_previewlanguage": "json" }, { - "id": "68eb2e1c-e2c7-4485-991b-346b8911d123", + "id": "fe5010de-e525-4c28-8f4e-f14647cfaffd", "name": "Bad Request", "originalRequest": { "url": { @@ -24917,12 +24917,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "b44a90c2-6d7e-413e-9114-b8cb710eaf46", + "id": "9a8eb698-13f9-4040-b54c-a031e94a0393", "name": "Not Found", "originalRequest": { "url": { @@ -24982,7 +24982,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -24999,7 +24999,7 @@ "description": "", "item": [ { - "id": "896a6b9a-f22f-47d4-a123-8e651d37f289", + "id": "82d5cf34-c02d-4979-be0a-d78e46d16bf4", "name": "Get a document schema", "request": { "name": "Get a document schema", @@ -25038,7 +25038,7 @@ }, "response": [ { - "id": "da7997d5-a589-4fb9-8661-0ba52e527c5a", + "id": "17b0f259-a34c-45aa-8e4a-e712d7d9f02c", "name": "OK", "originalRequest": { "url": { @@ -25088,12 +25088,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"document_schema\",\n \"attributes\": {\n \"document_type\": \"\",\n \"label\": \"\",\n \"schema_version\": \"\",\n \"full_version\": \"\",\n \"current\": \"\",\n \"draft\": \"\",\n \"active_at\": \"\",\n \"schema_format\": \"json_schema\",\n \"description\": \"\",\n \"schema_payload\": {\n \"key_0\": 6018.917961518286,\n \"key_1\": 2336.0709908530152\n },\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"document_schema\",\n \"attributes\": {\n \"document_type\": \"\",\n \"label\": \"\",\n \"schema_version\": \"\",\n \"full_version\": \"\",\n \"current\": \"\",\n \"draft\": \"\",\n \"active_at\": \"\",\n \"schema_format\": \"json_schema\",\n \"description\": \"\",\n \"schema_payload\": {\n \"key_0\": 7209,\n \"key_1\": 8630\n },\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"links\": {\n \"self\": \"\"\n }\n },\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "e99aa28d-7126-42e1-b02c-dadf017d2e2f", + "id": "b0472038-569a-4bea-9b11-9623174a3603", "name": "Unauthorized", "originalRequest": { "url": { @@ -25143,12 +25143,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "c62e6bca-e138-47e0-98e4-3a4db04cf385", + "id": "49768597-f1f8-4bd2-a5ad-5e623d6a941a", "name": "Not Found", "originalRequest": { "url": { @@ -25198,7 +25198,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -25215,7 +25215,7 @@ "description": "", "item": [ { - "id": "2afb7e23-8880-433f-9ccc-2e03bb7e70cb", + "id": "69221690-32f9-4b18-9e11-f6707b78a008", "name": "Search shipments, containers, and tracking requests", "request": { "name": "Search shipments, containers, and tracking requests", @@ -25255,7 +25255,7 @@ }, "response": [ { - "id": "0941a2fa-a305-45cb-95ed-2bb74b83698b", + "id": "ed2f058f-9606-46ff-87a0-dfdae9d9b295", "name": "Successful search results", "originalRequest": { "url": { @@ -25303,12 +25303,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"search_result\",\n \"attributes\": {\n \"entity_type\": \"cargo\",\n \"number\": \"\",\n \"shipment_id\": \"\",\n \"scac\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_name\": \"\",\n \"containers_count\": \"\",\n \"tracking_stopped\": \"\",\n \"tracking_stopped_reason\": \"\",\n \"status\": \"\",\n \"failed_reason\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"updated_at\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"search_result\",\n \"attributes\": {\n \"entity_type\": \"tracking_request\",\n \"number\": \"\",\n \"shipment_id\": \"\",\n \"scac\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_name\": \"\",\n \"containers_count\": \"\",\n \"tracking_stopped\": \"\",\n \"tracking_stopped_reason\": \"\",\n \"status\": \"\",\n \"failed_reason\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"updated_at\": \"\"\n }\n }\n ]\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"search_result\",\n \"attributes\": {\n \"entity_type\": \"tracking_request\",\n \"number\": \"\",\n \"shipment_id\": \"\",\n \"scac\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_name\": \"\",\n \"containers_count\": \"\",\n \"tracking_stopped\": \"\",\n \"tracking_stopped_reason\": \"\",\n \"status\": \"\",\n \"failed_reason\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"updated_at\": \"\"\n }\n },\n {\n \"id\": \"\",\n \"type\": \"search_result\",\n \"attributes\": {\n \"entity_type\": \"cargo\",\n \"number\": \"\",\n \"shipment_id\": \"\",\n \"scac\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_name\": \"\",\n \"containers_count\": \"\",\n \"tracking_stopped\": \"\",\n \"tracking_stopped_reason\": \"\",\n \"status\": \"\",\n \"failed_reason\": \"\",\n \"ref_numbers\": [\n \"\",\n \"\"\n ],\n \"created_at\": \"\",\n \"updated_at\": \"\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "c554b34a-7bbf-4b8b-9c10-c2fa077ada34", + "id": "feee5eb1-4f90-4106-b24b-ccadd9e11259", "name": "Bad request — missing required `query` parameter", "originalRequest": { "url": { @@ -25361,7 +25361,7 @@ "_postman_previewlanguage": "json" }, { - "id": "cc1577f4-67e7-48ff-9c95-4488a32037b6", + "id": "7d5b525a-260f-4b86-b290-db6f1112b34a", "name": "Unauthorized — missing or invalid API token", "originalRequest": { "url": { @@ -25409,7 +25409,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -25426,7 +25426,7 @@ "description": "", "item": [ { - "id": "8acbdf3f-214f-4059-b1b6-96a5bc4a2d3e", + "id": "762adb3b-f7bc-411a-b470-12e4b9359bae", "name": "list-parties", "request": { "name": "list-parties", @@ -25475,7 +25475,7 @@ }, "response": [ { - "id": "e734f01b-ce3f-4751-9f10-d0b85f6a4771", + "id": "8a22c07f-e5e0-41e2-87e8-b4fac5b16d08", "name": "OK", "originalRequest": { "url": { @@ -25543,7 +25543,7 @@ } }, { - "id": "9d4f8239-6736-450d-80a0-634e3fe85717", + "id": "5394c9ac-ed11-46ad-8645-c8ca2a98acaf", "name": "post-party", "request": { "name": "post-party", @@ -25586,7 +25586,7 @@ }, "response": [ { - "id": "1ddfdb2e-0002-43a5-9d9d-696c05cddd4f", + "id": "6ad69e65-f617-4fcc-a876-a9c7f9e3705b", "name": "Party Created", "originalRequest": { "url": { @@ -25642,7 +25642,7 @@ "_postman_previewlanguage": "json" }, { - "id": "f6ea76e5-02c2-43eb-a720-ed704f5fb575", + "id": "f6fb8321-0313-4837-903d-4f83a33f18ca", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -25693,7 +25693,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -25704,7 +25704,7 @@ } }, { - "id": "5f4711ac-ea72-47e7-83cf-638337580b65", + "id": "fe683042-b737-4d1d-a311-0324bdde83ba", "name": "List shipment party roles", "request": { "name": "List shipment party roles", @@ -25747,7 +25747,7 @@ }, "response": [ { - "id": "1a25653d-e8ef-4a59-b5a7-19aed1e93cf2", + "id": "63c28519-03b1-4243-a50e-350cc6282eba", "name": "OK", "originalRequest": { "url": { @@ -25798,12 +25798,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"freight_forwarder\",\n \"roleable_type\": \"Shipment\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"notify_party\",\n \"roleable_type\": \"Cargo\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n ],\n \"included\": [\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n },\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"customs_broker\",\n \"roleable_type\": \"Cargo\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"shipper\",\n \"roleable_type\": \"Cargo\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n ],\n \"included\": [\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n },\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "aebf6eca-1982-45b8-ac0e-1319a61e3a22", + "id": "a4d142d3-fd81-4236-9142-3aac5e93acce", "name": "Unauthorized. Also returned when the record belongs to another account.", "originalRequest": { "url": { @@ -25854,12 +25854,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "618f1d58-4942-42c5-ab00-dce42a233890", + "id": "e02335b1-81b7-4145-9f4d-2c7c6f7c7370", "name": "Not Found", "originalRequest": { "url": { @@ -25910,7 +25910,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -25921,7 +25921,7 @@ } }, { - "id": "3255aac8-9c3c-4f7b-a427-7070ccbd89ae", + "id": "c01175da-02ee-48e3-9c81-e4603c44629e", "name": "Assign a shipment party role", "request": { "name": "Assign a shipment party role", @@ -25965,7 +25965,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"freight_forwarder\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"customer\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -25977,7 +25977,7 @@ }, "response": [ { - "id": "df2aad8d-881d-4f8d-bf68-99582ec9b443", + "id": "7516141f-0184-4e90-9176-38cd2cfd16d5", "name": "Created", "originalRequest": { "url": { @@ -26024,7 +26024,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"freight_forwarder\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"customer\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -26041,12 +26041,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"pickup_dray_carrier\",\n \"roleable_type\": \"Shipment\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n },\n \"included\": [\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n },\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n }\n ],\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"shipper\",\n \"roleable_type\": \"Cargo\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n },\n \"included\": [\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n },\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n }\n ],\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "045060a3-c3bd-47b8-baa1-f5aba81b5e1f", + "id": "17775fc1-cf2b-4e79-8a24-df2b478b4023", "name": "Unauthorized. Also returned when the party or the record belongs to another account.", "originalRequest": { "url": { @@ -26093,7 +26093,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"freight_forwarder\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"customer\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -26110,12 +26110,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "d8f61ab5-1dea-4367-beb4-4ed8d0dc2ab2", + "id": "0415f086-d1f2-4e8d-b81b-6b3c5cd10708", "name": "Not Found", "originalRequest": { "url": { @@ -26162,7 +26162,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"freight_forwarder\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"customer\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -26179,12 +26179,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "6c9ea371-e902-4184-b824-657b7385ada1", + "id": "cfdfdb1b-1523-44b8-8c58-e32bac4920ef", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -26231,7 +26231,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "{\n \"data\": {\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"freight_forwarder\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", + "raw": "{\n \"data\": {\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"customer\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n}", "options": { "raw": { "headerFamily": "json", @@ -26248,7 +26248,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -26259,7 +26259,7 @@ } }, { - "id": "2788ccef-2d09-4536-a0d5-e60d88a3999e", + "id": "cb79c2b5-c9c3-4b78-b640-af4ecd671549", "name": "Remove a shipment party role", "request": { "name": "Remove a shipment party role", @@ -26313,7 +26313,7 @@ }, "response": [ { - "id": "831949dd-9d3d-456f-81fd-4c2ebb65358c", + "id": "056ebd4e-4dd9-4f3f-aa75-946c22c2dc18", "name": "No Content", "originalRequest": { "url": { @@ -26370,7 +26370,7 @@ "_postman_previewlanguage": "text" }, { - "id": "535839d9-62d9-421c-9b08-f7b01fab11f4", + "id": "d134ce32-3320-4f31-85d4-512d13423842", "name": "Unauthorized. Also returned when the record belongs to another account.", "originalRequest": { "url": { @@ -26432,12 +26432,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "e89fed45-800c-4b94-bb34-4ea56b5bb05d", + "id": "f42021de-ae41-47ba-9f18-fc139ee5c402", "name": "Not Found", "originalRequest": { "url": { @@ -26499,7 +26499,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -26510,7 +26510,7 @@ } }, { - "id": "4e417203-ee11-422b-b04e-9ad1f53c968d", + "id": "4cb632be-cbee-4fe4-86b9-840c8ad2d191", "name": "List container party roles", "request": { "name": "List container party roles", @@ -26553,7 +26553,7 @@ }, "response": [ { - "id": "eab2249e-0355-40ef-838f-27adecd5ef36", + "id": "937a8650-e16a-417b-af56-500f40f1a615", "name": "OK", "originalRequest": { "url": { @@ -26604,12 +26604,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"freight_forwarder\",\n \"roleable_type\": \"Shipment\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"notify_party\",\n \"roleable_type\": \"Cargo\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n ],\n \"included\": [\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n },\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", + "body": "{\n \"data\": [\n {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"customs_broker\",\n \"roleable_type\": \"Cargo\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n },\n {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"shipper\",\n \"roleable_type\": \"Cargo\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n }\n ],\n \"included\": [\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n },\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n }\n ],\n \"links\": {\n \"self\": \"\",\n \"current\": \"\",\n \"first\": \"\",\n \"prev\": \"\",\n \"next\": \"\",\n \"last\": \"\"\n },\n \"meta\": {\n \"size\": \"\",\n \"total\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "2a28fc7a-84da-48e0-bda0-e29f04bc33bc", + "id": "507b38c7-15cf-43e3-b185-c10441b8138c", "name": "Unauthorized. Also returned when the record belongs to another account.", "originalRequest": { "url": { @@ -26660,12 +26660,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "ffd54123-9a49-4736-81d0-c9eee7eaaebe", + "id": "022de896-e16b-4ca1-ac54-24ac9073a4b0", "name": "Not Found", "originalRequest": { "url": { @@ -26716,7 +26716,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -26727,7 +26727,7 @@ } }, { - "id": "c11a1107-61fe-4939-9d74-a0a0022add10", + "id": "d88766c1-2cd2-4d29-948f-a22eb7f902df", "name": "Assign a container party role", "request": { "name": "Assign a container party role", @@ -26783,7 +26783,7 @@ }, "response": [ { - "id": "8aa60a98-7c8c-4759-b53f-c5872cba472d", + "id": "e84de12e-6290-410c-8595-e4f2c8037b35", "name": "Created", "originalRequest": { "url": { @@ -26847,12 +26847,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"pickup_dray_carrier\",\n \"roleable_type\": \"Shipment\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n },\n \"included\": [\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n },\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n }\n ],\n \"links\": {\n \"self\": \"\"\n }\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"party_role\",\n \"attributes\": {\n \"role\": \"shipper\",\n \"roleable_type\": \"Cargo\",\n \"roleable_id\": \"\",\n \"created_at\": \"\",\n \"updated_at\": \"\"\n },\n \"relationships\": {\n \"party\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"party\"\n }\n }\n }\n },\n \"included\": [\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n },\n {\n \"attributes\": {\n \"company_name\": \"\"\n },\n \"id\": \"\",\n \"type\": \"party\"\n }\n ],\n \"links\": {\n \"self\": \"\"\n }\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "2a098e6d-f039-4ef9-9254-65eb40b19b92", + "id": "fcfa1bd2-3702-4689-a39b-7ded706af515", "name": "Unauthorized. Also returned when the party or the record belongs to another account.", "originalRequest": { "url": { @@ -26916,12 +26916,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "c4364d4f-91c9-4940-9ce8-7c93de4b81d8", + "id": "4030860c-8393-4f2d-9c64-2b191d5517b5", "name": "Not Found", "originalRequest": { "url": { @@ -26985,12 +26985,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "51dfbe04-55b5-4f05-833c-df2c873d9057", + "id": "7e7ce279-fcad-4a8c-8877-c5f971b7cfd9", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -27054,7 +27054,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -27065,7 +27065,7 @@ } }, { - "id": "a7986e98-687b-4f94-9237-8ff47727d6e3", + "id": "35ea609c-35c6-4abe-9929-0c75046417d2", "name": "Remove a container party role", "request": { "name": "Remove a container party role", @@ -27119,7 +27119,7 @@ }, "response": [ { - "id": "84c47310-7660-4c01-bc4e-460baf04bef6", + "id": "d1fb18e7-893e-47d4-a836-8d1ffc1903d8", "name": "No Content", "originalRequest": { "url": { @@ -27176,7 +27176,7 @@ "_postman_previewlanguage": "text" }, { - "id": "56b46ee6-8b6f-4c89-95c6-975576c1af91", + "id": "ead85072-cf00-416b-8d59-cf2554eb2730", "name": "Unauthorized. Also returned when the record belongs to another account.", "originalRequest": { "url": { @@ -27238,12 +27238,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "98bafa5c-0a4a-47b4-9089-7c912df3cc96", + "id": "52998256-47cb-4aa9-9565-5a2b08cffff0", "name": "Not Found", "originalRequest": { "url": { @@ -27305,7 +27305,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -27316,7 +27316,7 @@ } }, { - "id": "f1594bb7-fc41-4615-85e9-16e53b27ef70", + "id": "b725613a-e6b1-49ac-9096-685d030f9cce", "name": "get-parties-id", "request": { "name": "get-parties-id", @@ -27358,7 +27358,7 @@ }, "response": [ { - "id": "c162f598-e3d3-4043-884b-b2664cf57920", + "id": "72ca9cac-a29f-46fd-bac8-ea95f412d5ae", "name": "OK", "originalRequest": { "url": { @@ -27413,7 +27413,7 @@ "_postman_previewlanguage": "json" }, { - "id": "b7ed397c-e02e-4a76-8ab2-f75f81a5f670", + "id": "1ff6ddc1-bb89-4449-93b5-261e5b87881b", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -27463,12 +27463,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "e90e0d1b-a136-4d2b-9e5a-9aab53d637ec", + "id": "ecf2ce1e-cd05-4432-8088-59ca89b38bce", "name": "Not Found", "originalRequest": { "url": { @@ -27518,7 +27518,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -27529,7 +27529,7 @@ } }, { - "id": "a5d383d0-00b7-467f-b19d-03e1f8522749", + "id": "bb89edf3-6265-4128-80e3-6c63fd8f86b2", "name": "edit-party", "request": { "name": "edit-party", @@ -27584,7 +27584,7 @@ }, "response": [ { - "id": "d1043e48-1cc1-4840-ac03-9c4bd4db6cb6", + "id": "84bea778-40eb-4792-81a6-2a613c3a89e7", "name": "OK", "originalRequest": { "url": { @@ -27652,7 +27652,7 @@ "_postman_previewlanguage": "json" }, { - "id": "83607f28-f794-49e2-8e5d-52f78a256b3b", + "id": "823bd3f0-7613-4397-900e-c5fbb39a3ec8", "name": "Unauthorized. The API token is missing or invalid, or the account may not perform this action.", "originalRequest": { "url": { @@ -27715,12 +27715,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "7f28df64-7712-43ad-8c45-70384ca2e203", + "id": "0d8cba78-f7f2-4d4f-b072-44d14a958489", "name": "Not Found", "originalRequest": { "url": { @@ -27783,12 +27783,12 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "2a49f4ca-f293-4036-985b-71d418e01f77", + "id": "2308bdaa-1bcc-4a9e-a3b3-83834339dc7d", "name": "Unprocessable Entity", "originalRequest": { "url": { @@ -27851,7 +27851,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -27868,7 +27868,7 @@ "description": "", "item": [ { - "id": "37a51408-2e27-4404-8094-d5efd2f35fda", + "id": "7bdd7eba-92df-4bb9-a501-96bac201d443", "name": "Get the current credential", "request": { "name": "Get the current credential", @@ -27907,7 +27907,7 @@ }, "response": [ { - "id": "b5c37422-9d62-49a5-89db-87b33ea1be15", + "id": "5be7aefc-b134-49d5-b400-ae042757cfa1", "name": "OK", "originalRequest": { "url": { @@ -27954,12 +27954,12 @@ "value": "application/json" } ], - "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"credential\",\n \"attributes\": {\n \"kind\": \"user\",\n \"channel\": \"dashboard\",\n \"features\": {\n \"data_out_api\": {\n \"status\": \"requires_paid_plan\"\n },\n \"custom_fields\": {\n \"status\": \"available\"\n },\n \"routing_data\": {\n \"status\": \"requires_user_credential\"\n },\n \"rail_data\": {\n \"status\": \"requires_paid_plan\"\n },\n \"stop_tracking\": {\n \"status\": \"not_enabled\"\n },\n \"trade_intel\": {\n \"status\": \"requires_user_credential\"\n }\n },\n \"name\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\",\n \"company_type\": \"software_company\",\n \"scac\": \"\",\n \"abbr_name\": \"\",\n \"city\": \"\",\n \"state_abbr\": \"\",\n \"country\": \"\",\n \"plan\": \"free_plan\",\n \"tracking_slots\": {\n \"limit\": \"\",\n \"used\": \"\",\n \"remaining\": \"\"\n }\n }\n }\n ]\n}", + "body": "{\n \"data\": {\n \"id\": \"\",\n \"type\": \"credential\",\n \"attributes\": {\n \"kind\": \"user\",\n \"channel\": \"mcp\",\n \"features\": {\n \"data_out_api\": {\n \"status\": \"requires_paid_plan\"\n },\n \"custom_fields\": {\n \"status\": \"requires_paid_plan\"\n },\n \"routing_data\": {\n \"status\": \"requires_paid_plan\"\n },\n \"rail_data\": {\n \"status\": \"requires_user_credential\"\n },\n \"stop_tracking\": {\n \"status\": \"requires_paid_plan\"\n },\n \"trade_intel\": {\n \"status\": \"requires_user_credential\"\n }\n },\n \"name\": \"\"\n },\n \"relationships\": {\n \"account\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"account\"\n }\n },\n \"user\": {\n \"data\": {\n \"id\": \"\",\n \"type\": \"user\"\n }\n }\n }\n },\n \"included\": [\n {\n \"id\": \"\",\n \"type\": \"account\",\n \"attributes\": {\n \"company_name\": \"\",\n \"company_type\": \"terminal_49\",\n \"scac\": \"\",\n \"abbr_name\": \"\",\n \"city\": \"\",\n \"state_abbr\": \"\",\n \"country\": \"\",\n \"plan\": \"churned\",\n \"tracking_slots\": {\n \"limit\": \"\",\n \"used\": \"\",\n \"remaining\": \"\"\n }\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "id": "dcabd2c2-46e9-48d3-bbfb-005aa535e346", + "id": "64993d07-dfb7-4348-83b8-bcecef29ce95", "name": "Unauthorized. The credential is missing, invalid, disabled, or names an account it cannot access.", "originalRequest": { "url": { @@ -28006,7 +28006,4460 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ] + }, + { + "name": "Trade Intelligence", + "description": "Trade intelligence answers questions about who imports what into the US, from where, on which carriers, and how that changes over time. The data is US import bill-of-lading records (US Customs vessel manifests): every ocean container landed at a US port (plus US-bound cargo landed at Vancouver, BC) from January 2022 to today, refreshed daily. It does not include air freight, exports, or domestic moves.\n\n**Access.** Trade intelligence is enabled per account. Accounts without it receive `403 Forbidden` with `{\"error\": \"Trade intelligence is not enabled for this account\"}`; contact sales@terminal49.com to enable it. Requests are limited to roughly 120 per minute per account (`429` with `{\"error\": \"Rate limit exceeded; retry in a minute\"}`).\n\n**Format.** These endpoints accept and return plain JSON, not JSON:API. Send `Content-Type: application/json` on `POST` requests and authenticate exactly like every other v2 endpoint (`Authorization: Token YOUR_API_KEY`).\n\n**Typical flow.** Resolve a name or product first, then analyze: `companies/search` or `commodities/search` give you the exact `company_name` or `hs4` to pass to `companies/profile`, `importers/top`, `trends`, or `breakdown`. Container and bill of lading numbers go straight to `containers/lookup` and `bills_of_lading/lookup`.\n\n**Reading the numbers.**\n\n- **Volume is physical containers.** Each box is counted once, even when it appears on several bills of lading. A container carrying several HS codes counts once per code and companies can share containers, so do not add volumes across HS codes or companies; take market totals from `trends` or `breakdown` without a company filter.\n- **Estimated value is a modelled USD estimate**, not the declared customs value.\n- **The current month is partial.** `trends` and `breakdown` include it by default; `companies/profile` and `importers/top` use full calendar months. Compare full months against the same months a year earlier.\n- **Absent volume is not small volume.** Importers can ask US Customs to withhold their name from manifests, and much large-retail freight is booked under forwarders or suppliers. Treat a company's figures as a floor, never as its size.\n- **One company, many names.** Company names are normalized but split by state, and large importers use several names (distribution, merchandising, and DC entities). Related entities are separate companies; report them separately. `companies/search` ranks by match quality, not by size.\n- **Companies are the consignee or notify party on the bill.** Forwarders, NVOCCs, and customs brokers appear alongside cargo owners. A high notify-party share, or LOGISTICS, FREIGHT, SHIPPING, CUSTOMS, or BROKERAGE in the name, usually indicates a logistics provider.\n- **Carriers, countries, and ports use the manifests' spellings**, and carriers appear under spelling variants (for example `CMA CGM` and `CMA CGM AMERICA LLC`). Filter with substrings and merge variants before computing shares.\n- **HS4 descriptions are truncated.** Check `common_goods` from `commodities/search` before relying on a code.", + "item": [ + { + "id": "1807a3b8-bf1c-49f1-91c4-0b7c176483b9", + "name": "Get trade intelligence coverage", + "request": { + "name": "Get trade intelligence coverage", + "description": { + "content": "Returns the window the search index covers, how far back history goes, which month is still partial, and when the data was last built. Call it to learn the exact `since_month` and `facts_since_month` before quoting a period, and to confirm the account has trade intelligence enabled (a `403` means it does not).\n\nThe data is US import bill-of-lading records (US Customs vessel manifests), January 2022 onward, refreshed daily.", + "type": "text/plain" + }, + "url": { + "path": [ + "trade_intel", + "meta" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": null + }, + "response": [ + { + "id": "8f7b2946-9a9c-4f31-b89b-bd577ba742ae", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "meta" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"since_month\": \"\",\n \"until_month_exclusive\": \"\",\n \"months\": \"\",\n \"min_containers\": \"\",\n \"companies\": \"\",\n \"hs_codes\": \"\",\n \"facts_since_month\": \"\",\n \"facts_until_exclusive\": \"\",\n \"partial_month\": \"\",\n \"mode\": \"\",\n \"facts_hash\": \"\",\n \"refreshed_since\": \"\",\n \"fact_rows\": {\n \"lane_month\": \"\",\n \"company_month\": \"\",\n \"commodity_month\": \"\",\n \"hs_lane_month\": \"\"\n },\n \"volume_measure\": \"\",\n \"built_at\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "a60faf2e-9d23-46b0-9d35-e98752fb755e", + "name": "Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "meta" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "f679697b-c91d-4329-825a-f157ee0fa4c4", + "name": "Unauthorized - the API key is missing or invalid.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "meta" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "Unauthorized", + "code": 401, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "b887c769-2a0b-49f0-987e-51446b71f686", + "name": "Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "meta" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "Forbidden", + "code": 403, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "7ae245d0-3c36-40ea-8816-eb13c43b3b14", + "name": "Too Many Requests - about 120 requests per minute are allowed per account.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "meta" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "Too Many Requests", + "code": 429, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "ef0b92f2-4eec-4857-a9a7-4694dc9f1f29", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "meta" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "Bad Gateway", + "code": 502, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "4860b73d-aa35-4c91-be33-4af7364b649a", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "meta" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "Gateway Timeout", + "code": 504, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "c9a79f68-8d6f-4240-9027-517fd35d2fd2", + "name": "Search importers", + "request": { + "name": "Search importers", + "description": { + "content": "Find US importers by name, by what they import, or both, from US import bill-of-lading records (US Customs vessel manifests). `name` is a fuzzy match (partial or misspelled names are fine); `imports` is a semantic match on product descriptions. With neither, the largest importers matching the other filters are returned. Each result carries 12-full-month containers (split by consignee and notify party), TEUs, estimated value, and top ports, origins, carriers, and HS4 headings.\n\n**Results are ranked by match quality, not size.** A fuzzy search for a well-known retailer can return a small, similarly named company above the retailer itself; check `containers` before choosing a row. Companies are split by state and large importers use several names, so look through the whole list before concluding a company is small. Importers can also have their names withheld from manifests, so absent volume does not mean low volume.\n\nTake `company_name` from a result and pass it unchanged to `companies/profile` for monthly history.", + "type": "text/plain" + }, + "url": { + "path": [ + "trade_intel", + "companies", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"\",\n \"imports\": \"\",\n \"state\": \"Sb\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"min_containers\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": null + }, + "response": [ + { + "id": "e0e5b044-3a6d-4eac-ad53-f56bbbfb73d9", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"\",\n \"imports\": \"\",\n \"state\": \"Sb\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"min_containers\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"index\": {\n \"since_month\": \"\",\n \"until_month_exclusive\": \"\",\n \"months\": \"\",\n \"min_containers\": \"\",\n \"companies\": \"\",\n \"hs_codes\": \"\",\n \"facts_since_month\": \"\",\n \"facts_until_exclusive\": \"\",\n \"partial_month\": \"\",\n \"mode\": \"\",\n \"facts_hash\": \"\",\n \"refreshed_since\": \"\",\n \"fact_rows\": {\n \"lane_month\": \"\",\n \"company_month\": \"\",\n \"commodity_month\": \"\",\n \"hs_lane_month\": \"\"\n },\n \"volume_measure\": \"\",\n \"built_at\": \"\"\n },\n \"results\": [\n {\n \"company_name\": \"\",\n \"company_state\": \"\",\n \"containers\": \"\",\n \"containers_as_consignee\": \"\",\n \"containers_as_notify_party\": \"\",\n \"teus\": \"\",\n \"estimated_value\": \"\",\n \"reefer_share\": \"\",\n \"first_month\": \"\",\n \"last_month\": \"\",\n \"top_ports\": [\n {\n \"name\": \"\",\n \"containers\": \"\"\n },\n {\n \"name\": \"\",\n \"containers\": \"\"\n }\n ],\n \"top_origins\": [\n {\n \"name\": \"\",\n \"containers\": \"\"\n },\n {\n \"name\": \"\",\n \"containers\": \"\"\n }\n ],\n \"top_carriers\": [\n {\n \"name\": \"\",\n \"containers\": \"\"\n },\n {\n \"name\": \"\",\n \"containers\": \"\"\n }\n ],\n \"top_commodities\": [\n {\n \"hs4\": \"\",\n \"description\": \"\",\n \"containers\": \"\",\n \"estimated_value\": \"\"\n },\n {\n \"hs4\": \"\",\n \"description\": \"\",\n \"containers\": \"\",\n \"estimated_value\": \"\"\n }\n ],\n \"score\": \"\"\n },\n {\n \"company_name\": \"\",\n \"company_state\": \"\",\n \"containers\": \"\",\n \"containers_as_consignee\": \"\",\n \"containers_as_notify_party\": \"\",\n \"teus\": \"\",\n \"estimated_value\": \"\",\n \"reefer_share\": \"\",\n \"first_month\": \"\",\n \"last_month\": \"\",\n \"top_ports\": [\n {\n \"name\": \"\",\n \"containers\": \"\"\n },\n {\n \"name\": \"\",\n \"containers\": \"\"\n }\n ],\n \"top_origins\": [\n {\n \"name\": \"\",\n \"containers\": \"\"\n },\n {\n \"name\": \"\",\n \"containers\": \"\"\n }\n ],\n \"top_carriers\": [\n {\n \"name\": \"\",\n \"containers\": \"\"\n },\n {\n \"name\": \"\",\n \"containers\": \"\"\n }\n ],\n \"top_commodities\": [\n {\n \"hs4\": \"\",\n \"description\": \"\",\n \"containers\": \"\",\n \"estimated_value\": \"\"\n },\n {\n \"hs4\": \"\",\n \"description\": \"\",\n \"containers\": \"\",\n \"estimated_value\": \"\"\n }\n ],\n \"score\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "34af8e06-9dbd-459b-82b1-93e39f61d19c", + "name": "Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"\",\n \"imports\": \"\",\n \"state\": \"Sb\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"min_containers\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "9ae4e650-8e00-4e89-a612-31ef05ffd39a", + "name": "Unauthorized - the API key is missing or invalid.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"\",\n \"imports\": \"\",\n \"state\": \"Sb\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"min_containers\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unauthorized", + "code": 401, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "b9ff311e-c2e2-4a8f-912f-be883a183b1d", + "name": "Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"\",\n \"imports\": \"\",\n \"state\": \"Sb\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"min_containers\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Forbidden", + "code": 403, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "a0027af3-1954-4d9f-9479-0de016fac0a3", + "name": "Unprocessable Entity - either the body failed schema validation (a value out of range, a malformed month, or an unknown enum value), reported in `detail`, or the request would read more data than the query cost cap allows, reported in `error`. Narrow the time window or filters for the second.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"\",\n \"imports\": \"\",\n \"state\": \"Sb\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"min_containers\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unprocessable Entity (WebDAV) (RFC 4918)", + "code": 422, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"detail\": [\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n },\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "6a80fb8c-0330-45c8-baba-e216419685a6", + "name": "Too Many Requests - about 120 requests per minute are allowed per account.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"\",\n \"imports\": \"\",\n \"state\": \"Sb\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"min_containers\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Too Many Requests", + "code": 429, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "d0049705-c3ad-47a9-8bd2-4f5fc03d0f48", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"\",\n \"imports\": \"\",\n \"state\": \"Sb\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"min_containers\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Gateway", + "code": 502, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "2a68790f-67cc-46e9-a8c0-24ec6cce3202", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"\",\n \"imports\": \"\",\n \"state\": \"Sb\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"min_containers\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Gateway Timeout", + "code": 504, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "1ed67a38-de60-4de7-9f69-8dbecc38bb85", + "name": "Get an importer profile", + "request": { + "name": "Get an importer profile", + "description": { + "content": "Import profile for one company from US import bill-of-lading records (US Customs vessel manifests): totals (containers as consignee and as notify party, TEUs), a monthly series, ports of discharge, origin countries, carriers, destination states, and HS4 headings with estimated value.\n\n`company_name` must be the exact normalized name returned by `companies/search`. The period is `months` full calendar months ending last month, so the current, partial month is excluded; use `months: 24` or more to compare a year against the same months a year earlier.\n\nVolume is physical containers, each counted once. Estimated values are modelled USD estimates, not declared customs values. A company's figures are a floor: related entities and alternative names are separate companies, and importers can have their names withheld from manifests. Carrier names are as spelled on manifests; merge variants before computing shares.", + "type": "text/plain" + }, + "url": { + "path": [ + "trade_intel", + "companies", + "profile" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"company_name\": \"\",\n \"company_state\": \"oF\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": null + }, + "response": [ + { + "id": "5d804e44-4abc-40d1-89d0-4b6e5c39fbcc", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "profile" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"company_name\": \"\",\n \"company_state\": \"oF\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"company_name\": \"\",\n \"company_state\": \"\",\n \"since\": \"\",\n \"found\": \"\",\n \"until\": \"\",\n \"totals\": {\n \"containers\": \"\",\n \"containers_as_consignee\": \"\",\n \"containers_as_notify_party\": \"\",\n \"teus\": \"\",\n \"states\": [\n \"\",\n \"\"\n ]\n },\n \"monthly\": [\n {\n \"month\": \"\",\n \"containers\": \"\",\n \"teus\": \"\"\n },\n {\n \"month\": \"\",\n \"containers\": \"\",\n \"teus\": \"\"\n }\n ],\n \"ports_of_discharge\": [\n {\n \"name\": \"\",\n \"containers\": \"\",\n \"teus\": \"\"\n },\n {\n \"name\": \"\",\n \"containers\": \"\",\n \"teus\": \"\"\n }\n ],\n \"origin_countries\": [\n {\n \"name\": \"\",\n \"containers\": \"\",\n \"teus\": \"\"\n },\n {\n \"name\": \"\",\n \"containers\": \"\",\n \"teus\": \"\"\n }\n ],\n \"carriers\": [\n {\n \"name\": \"\",\n \"containers\": \"\",\n \"teus\": \"\"\n },\n {\n \"name\": \"\",\n \"containers\": \"\",\n \"teus\": \"\"\n }\n ],\n \"destination_states\": [\n {\n \"name\": \"\",\n \"containers\": \"\",\n \"teus\": \"\"\n },\n {\n \"name\": \"\",\n \"containers\": \"\",\n \"teus\": \"\"\n }\n ],\n \"commodities_hs4\": [\n {\n \"hs4\": \"\",\n \"description\": \"\",\n \"containers\": \"\",\n \"estimated_value\": \"\"\n },\n {\n \"hs4\": \"\",\n \"description\": \"\",\n \"containers\": \"\",\n \"estimated_value\": \"\"\n }\n ],\n \"notes\": [\n \"\",\n \"\"\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "e5a4ba41-8964-411b-b9e6-3f180f7f233d", + "name": "Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "profile" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"company_name\": \"\",\n \"company_state\": \"oF\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "fd59569e-d5c8-467c-9ebb-bc2a4fbd9fb9", + "name": "Unauthorized - the API key is missing or invalid.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "profile" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"company_name\": \"\",\n \"company_state\": \"oF\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unauthorized", + "code": 401, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "3511d676-d4aa-420f-b73a-a9d6fe83bae6", + "name": "Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "profile" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"company_name\": \"\",\n \"company_state\": \"oF\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Forbidden", + "code": 403, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "aaff7101-6617-493d-b56d-39a3c1304a22", + "name": "Unprocessable Entity - either the body failed schema validation (a value out of range, a malformed month, or an unknown enum value), reported in `detail`, or the request would read more data than the query cost cap allows, reported in `error`. Narrow the time window or filters for the second.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "profile" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"company_name\": \"\",\n \"company_state\": \"oF\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unprocessable Entity (WebDAV) (RFC 4918)", + "code": 422, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"detail\": [\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n },\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "ca1c1d53-e235-458b-b889-c5a1a16b8357", + "name": "Too Many Requests - about 120 requests per minute are allowed per account.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "profile" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"company_name\": \"\",\n \"company_state\": \"oF\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Too Many Requests", + "code": 429, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "7fd5775c-21c7-4850-86b6-ed26c6069e8b", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "profile" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"company_name\": \"\",\n \"company_state\": \"oF\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Gateway", + "code": 502, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "5dd34f2c-8883-4d2f-9e65-b30549fa3986", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "companies", + "profile" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"company_name\": \"\",\n \"company_state\": \"oF\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Gateway Timeout", + "code": 504, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "34a429ba-b482-4ca3-b9a9-7b067d2ce663", + "name": "Search commodities", + "request": { + "name": "Search commodities", + "description": { + "content": "Resolve a product description, or an HS code prefix, to 4-digit HS headings. Each result carries the heading description, goods commonly declared under it on bills of lading, 12-month estimated import value, and the number of importing companies.\n\nHS heading descriptions are truncated and headings are broader than everyday product names (HS 0306 covers all frozen crustaceans, not only shrimp), so check `common_goods` before relying on a code. Feed `hs4` into `importers/top` or into the `hs4` filter of `trends` and `breakdown`.", + "type": "text/plain" + }, + "url": { + "path": [ + "trade_intel", + "commodities", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"query\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": null + }, + "response": [ + { + "id": "ed75a510-0c6a-4221-827f-3a3b74c791bf", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "commodities", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"query\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"results\": [\n {\n \"hs4\": \"\",\n \"description\": \"\",\n \"estimated_value\": \"\",\n \"companies\": \"\",\n \"common_goods\": [\n \"\",\n \"\"\n ],\n \"score\": \"\"\n },\n {\n \"hs4\": \"\",\n \"description\": \"\",\n \"estimated_value\": \"\",\n \"companies\": \"\",\n \"common_goods\": [\n \"\",\n \"\"\n ],\n \"score\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "808fef89-f1bd-4a6a-a3b5-3a1fb6f3140b", + "name": "Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "commodities", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"query\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "a014f5bb-aeac-4f2f-874b-18cfab484f59", + "name": "Unauthorized - the API key is missing or invalid.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "commodities", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"query\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unauthorized", + "code": 401, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "529e50e5-84d3-47b4-b65a-198e452d0331", + "name": "Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "commodities", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"query\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Forbidden", + "code": 403, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "382f25aa-2a8c-42d1-97a6-b748c2e7c4e6", + "name": "Unprocessable Entity - either the body failed schema validation (a value out of range, a malformed month, or an unknown enum value), reported in `detail`, or the request would read more data than the query cost cap allows, reported in `error`. Narrow the time window or filters for the second.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "commodities", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"query\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unprocessable Entity (WebDAV) (RFC 4918)", + "code": 422, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"detail\": [\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n },\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "81bf84ca-a5e7-46b3-86aa-a7db1f505922", + "name": "Too Many Requests - about 120 requests per minute are allowed per account.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "commodities", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"query\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Too Many Requests", + "code": 429, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "2cdd367e-c379-4dfb-85b8-681fbafb6d40", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "commodities", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"query\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Gateway", + "code": 502, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "4f4df308-1045-4be1-962a-77f3728ca95c", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "commodities", + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"query\": \"\",\n \"limit\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Gateway Timeout", + "code": 504, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "d71b6e76-5d13-44ad-9a7e-ae7deea8226a", + "name": "Rank importers", + "request": { + "name": "Rank importers", + "description": { + "content": "Rank US importers by physical containers over `months` full calendar months, optionally restricted to one HS4 heading, a port of discharge, or an origin country. Estimated value is included when `hs4` is given.\n\nThe ranking is built from US import bill-of-lading records (US Customs vessel manifests), so it lists consignees and notify parties: forwarders, NVOCCs, and customs brokers appear alongside cargo owners, and the response does not say which is which or give each company's total volume. Run `companies/search` on shortlisted names to get the consignee/notify split and totals. Large importers can be split across several names and states, and some have their names withheld from manifests, so absence from the ranking does not mean low volume.", + "type": "text/plain" + }, + "url": { + "path": [ + "trade_intel", + "importers", + "top" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"hs4\": \"1280\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"months\": 12,\n \"limit\": 20\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": null + }, + "response": [ + { + "id": "db00d4a2-f495-4aa7-a24d-0f54e3d3d063", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "importers", + "top" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"hs4\": \"1280\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"months\": 12,\n \"limit\": 20\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"since\": \"\",\n \"until\": \"\",\n \"ranked_by\": \"\",\n \"filters\": {\n \"hs4\": \"\",\n \"pod\": \"\",\n \"origin_country\": \"\"\n },\n \"notes\": [\n \"\",\n \"\"\n ],\n \"importers\": [\n {\n \"company_name\": \"\",\n \"states\": [\n \"\",\n \"\"\n ],\n \"containers\": \"\",\n \"teus\": \"\",\n \"estimated_value\": \"\"\n },\n {\n \"company_name\": \"\",\n \"states\": [\n \"\",\n \"\"\n ],\n \"containers\": \"\",\n \"teus\": \"\",\n \"estimated_value\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "bcd8c792-a894-451d-971a-92e1a53b8543", + "name": "Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "importers", + "top" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"hs4\": \"1280\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"months\": 12,\n \"limit\": 20\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "9802d410-aced-49e8-b261-8a62deed3298", + "name": "Unauthorized - the API key is missing or invalid.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "importers", + "top" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"hs4\": \"1280\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"months\": 12,\n \"limit\": 20\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unauthorized", + "code": 401, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "1001aa18-7a03-4543-8d49-fa1b35308be9", + "name": "Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "importers", + "top" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"hs4\": \"1280\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"months\": 12,\n \"limit\": 20\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Forbidden", + "code": 403, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "50413fcb-139f-4878-a94a-26ba8913cbc3", + "name": "Unprocessable Entity - either the body failed schema validation (a value out of range, a malformed month, or an unknown enum value), reported in `detail`, or the request would read more data than the query cost cap allows, reported in `error`. Narrow the time window or filters for the second.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "importers", + "top" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"hs4\": \"1280\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"months\": 12,\n \"limit\": 20\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unprocessable Entity (WebDAV) (RFC 4918)", + "code": 422, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"detail\": [\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n },\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "39e87b01-f3ae-45d6-8a94-6d13b84a1c58", + "name": "Too Many Requests - about 120 requests per minute are allowed per account.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "importers", + "top" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"hs4\": \"1280\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"months\": 12,\n \"limit\": 20\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Too Many Requests", + "code": 429, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "fbd99479-3e5d-492a-8f1f-28e81572a7de", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "importers", + "top" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"hs4\": \"1280\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"months\": 12,\n \"limit\": 20\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Gateway", + "code": 502, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "b06ae296-7d41-4d6a-afae-34c9e6bda55f", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "importers", + "top" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"hs4\": \"1280\",\n \"port_of_discharge\": \"\",\n \"origin_country\": \"\",\n \"months\": 12,\n \"limit\": 20\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Gateway Timeout", + "code": 504, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "3c720c15-33c5-4ee2-a93f-59124adc39fd", + "name": "Get import trends", + "request": { + "name": "Get import trends", + "description": { + "content": "Monthly, quarterly, or yearly series of containers, TEUs, or estimated value, optionally split by up to two dimensions (keeping the top N groups) and filtered by any dimension. Volume is physical containers, each counted once.\n\n**Defaults.** Without `since` the series covers the 24 months ending with `until`, so it starts 23 months before `until`, but history is available back to January 2022 (`facts_since_month` in `meta`). Without `until` the series ends with the current, partial month, which is flagged `partial`; exclude it from comparisons and compare like periods (the same months a year earlier).\n\n**Filters.** `company` is a substring match, so `IKEA` also matches `IKEA SUPPLY AG`; for one company's own series use `companies/profile`. Countries, ports, and carriers use the manifests' spellings and carriers appear under variants, so filter with substrings and merge variants before computing shares. Market totals come from a series without a `company` filter; do not add volumes across HS codes or companies, since a container can carry several codes and companies can share containers.\n\nThe response names the fact table used in `fact` and lists counting caveats in `notes`.", + "type": "text/plain" + }, + "url": { + "path": [ + "trade_intel", + "trends" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"measure\": \"containers\",\n \"group_by\": [\n \"carrier\",\n \"origin_country\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"rC\",\n \"hs4\": \"9827\",\n \"hs2\": \"48\",\n \"carrier\": \"\",\n \"scac\": \"ATqd\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"GULF\",\n \"dest_state\": \"wT\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"interval\": \"month\",\n \"since\": \"3596-11\",\n \"until\": \"0024-04\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": null + }, + "response": [ + { + "id": "b55a2286-6915-4bd4-8bf5-f25a3968e399", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "trends" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"measure\": \"containers\",\n \"group_by\": [\n \"carrier\",\n \"origin_country\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"rC\",\n \"hs4\": \"9827\",\n \"hs2\": \"48\",\n \"carrier\": \"\",\n \"scac\": \"ATqd\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"GULF\",\n \"dest_state\": \"wT\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"interval\": \"month\",\n \"since\": \"3596-11\",\n \"until\": \"0024-04\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"measure\": \"containers\",\n \"interval\": \"month\",\n \"since\": \"\",\n \"until\": \"\",\n \"group_by\": [\n \"pod_coast\",\n \"reefer\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"zp\",\n \"hs4\": \"9087\",\n \"hs2\": \"49\",\n \"carrier\": \"\",\n \"scac\": \"MHKX\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"aX\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"fact\": \"\",\n \"notes\": [\n \"\",\n \"\"\n ],\n \"series\": [\n {\n \"period\": \"\",\n \"value\": \"\",\n \"partial\": \"\"\n },\n {\n \"period\": \"\",\n \"value\": \"\",\n \"partial\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "84d8adb1-937b-4144-b1c4-67f975708fea", + "name": "Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "trends" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"measure\": \"containers\",\n \"group_by\": [\n \"carrier\",\n \"origin_country\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"rC\",\n \"hs4\": \"9827\",\n \"hs2\": \"48\",\n \"carrier\": \"\",\n \"scac\": \"ATqd\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"GULF\",\n \"dest_state\": \"wT\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"interval\": \"month\",\n \"since\": \"3596-11\",\n \"until\": \"0024-04\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "c407d841-f00d-43a5-b06b-9b12b3319660", + "name": "Unauthorized - the API key is missing or invalid.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "trends" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"measure\": \"containers\",\n \"group_by\": [\n \"carrier\",\n \"origin_country\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"rC\",\n \"hs4\": \"9827\",\n \"hs2\": \"48\",\n \"carrier\": \"\",\n \"scac\": \"ATqd\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"GULF\",\n \"dest_state\": \"wT\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"interval\": \"month\",\n \"since\": \"3596-11\",\n \"until\": \"0024-04\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unauthorized", + "code": 401, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "2d34e1f1-33be-4a6e-93f8-0173d0006495", + "name": "Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "trends" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"measure\": \"containers\",\n \"group_by\": [\n \"carrier\",\n \"origin_country\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"rC\",\n \"hs4\": \"9827\",\n \"hs2\": \"48\",\n \"carrier\": \"\",\n \"scac\": \"ATqd\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"GULF\",\n \"dest_state\": \"wT\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"interval\": \"month\",\n \"since\": \"3596-11\",\n \"until\": \"0024-04\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Forbidden", + "code": 403, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "8dbbcf2a-280b-4aa0-80b4-b667ec66cf68", + "name": "Unprocessable Entity - either the body failed schema validation (a value out of range, a malformed month, or an unknown enum value), reported in `detail`, or the request would read more data than the query cost cap allows, reported in `error`. Narrow the time window or filters for the second.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "trends" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"measure\": \"containers\",\n \"group_by\": [\n \"carrier\",\n \"origin_country\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"rC\",\n \"hs4\": \"9827\",\n \"hs2\": \"48\",\n \"carrier\": \"\",\n \"scac\": \"ATqd\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"GULF\",\n \"dest_state\": \"wT\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"interval\": \"month\",\n \"since\": \"3596-11\",\n \"until\": \"0024-04\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unprocessable Entity (WebDAV) (RFC 4918)", + "code": 422, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"detail\": [\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n },\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "798ed43b-df0b-4636-996b-e6d0376483c8", + "name": "Too Many Requests - about 120 requests per minute are allowed per account.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "trends" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"measure\": \"containers\",\n \"group_by\": [\n \"carrier\",\n \"origin_country\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"rC\",\n \"hs4\": \"9827\",\n \"hs2\": \"48\",\n \"carrier\": \"\",\n \"scac\": \"ATqd\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"GULF\",\n \"dest_state\": \"wT\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"interval\": \"month\",\n \"since\": \"3596-11\",\n \"until\": \"0024-04\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Too Many Requests", + "code": 429, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "351d19c0-fa2e-4e87-955f-a27df2dbee1f", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "trends" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"measure\": \"containers\",\n \"group_by\": [\n \"carrier\",\n \"origin_country\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"rC\",\n \"hs4\": \"9827\",\n \"hs2\": \"48\",\n \"carrier\": \"\",\n \"scac\": \"ATqd\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"GULF\",\n \"dest_state\": \"wT\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"interval\": \"month\",\n \"since\": \"3596-11\",\n \"until\": \"0024-04\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Gateway", + "code": 502, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "503bb045-06e9-487d-8a27-6837e224e6db", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "trends" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"measure\": \"containers\",\n \"group_by\": [\n \"carrier\",\n \"origin_country\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"rC\",\n \"hs4\": \"9827\",\n \"hs2\": \"48\",\n \"carrier\": \"\",\n \"scac\": \"ATqd\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"GULF\",\n \"dest_state\": \"wT\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"interval\": \"month\",\n \"since\": \"3596-11\",\n \"until\": \"0024-04\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Gateway Timeout", + "code": 504, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "2302f504-f886-410b-b729-d91f45c75972", + "name": "Get an import breakdown", + "request": { + "name": "Get an import breakdown", + "description": { + "content": "Nested totals over a dimension hierarchy (for example region > country > port, or HS2 > HS4), with a grand total at level 0 and subtotals at every level, keeping the top N children under each parent. Volume is physical containers, each counted once; estimated value is a modelled USD estimate.\n\nDefaults to the 12 months ending with the current, partial month (`since` is 11 months before `until`); set `since` and `until` to full months for comparisons. The `company` filter is a substring match. Countries, ports, and carriers use the manifests' spellings, so filter with substrings and merge carrier variants before computing shares. Do not add values across HS codes or companies; use a breakdown without a `company` filter for market totals.", + "type": "text/plain" + }, + "url": { + "path": [ + "trade_intel", + "breakdown" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"dims\": [\n \"scac\"\n ],\n \"measure\": \"containers\",\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"ES\",\n \"hs4\": \"5367\",\n \"hs2\": \"00\",\n \"carrier\": \"\",\n \"scac\": \"PVHT\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"xn\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"since\": \"0433-11\",\n \"until\": \"9305-06\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": null + }, + "response": [ + { + "id": "fccb0d23-d191-485a-ae41-2b46161ff3fe", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "breakdown" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"dims\": [\n \"scac\"\n ],\n \"measure\": \"containers\",\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"ES\",\n \"hs4\": \"5367\",\n \"hs2\": \"00\",\n \"carrier\": \"\",\n \"scac\": \"PVHT\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"xn\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"since\": \"0433-11\",\n \"until\": \"9305-06\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"measure\": \"containers\",\n \"dims\": [\n \"hs2\",\n \"pod_coast\"\n ],\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"Jl\",\n \"hs4\": \"6534\",\n \"hs2\": \"64\",\n \"carrier\": \"\",\n \"scac\": \"RyOL\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"bB\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"since\": \"\",\n \"until\": \"\",\n \"fact\": \"\",\n \"notes\": [\n \"\",\n \"\"\n ],\n \"rows\": [\n {\n \"level\": \"\",\n \"value\": \"\"\n },\n {\n \"level\": \"\",\n \"value\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "900a48e0-6b9a-47ca-b277-0dccfcd234c3", + "name": "Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "breakdown" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"dims\": [\n \"scac\"\n ],\n \"measure\": \"containers\",\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"ES\",\n \"hs4\": \"5367\",\n \"hs2\": \"00\",\n \"carrier\": \"\",\n \"scac\": \"PVHT\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"xn\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"since\": \"0433-11\",\n \"until\": \"9305-06\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "1e5b3f2e-840e-4b85-ad7a-662c44bc2ba7", + "name": "Unauthorized - the API key is missing or invalid.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "breakdown" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"dims\": [\n \"scac\"\n ],\n \"measure\": \"containers\",\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"ES\",\n \"hs4\": \"5367\",\n \"hs2\": \"00\",\n \"carrier\": \"\",\n \"scac\": \"PVHT\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"xn\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"since\": \"0433-11\",\n \"until\": \"9305-06\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unauthorized", + "code": 401, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "f5fd222f-e2de-42df-90c5-ff5a58263230", + "name": "Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "breakdown" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"dims\": [\n \"scac\"\n ],\n \"measure\": \"containers\",\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"ES\",\n \"hs4\": \"5367\",\n \"hs2\": \"00\",\n \"carrier\": \"\",\n \"scac\": \"PVHT\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"xn\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"since\": \"0433-11\",\n \"until\": \"9305-06\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Forbidden", + "code": 403, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "9d81121d-b26f-492a-b56f-d0b4c912cef9", + "name": "Unprocessable Entity - either the body failed schema validation (a value out of range, a malformed month, or an unknown enum value), reported in `detail`, or the request would read more data than the query cost cap allows, reported in `error`. Narrow the time window or filters for the second.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "breakdown" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"dims\": [\n \"scac\"\n ],\n \"measure\": \"containers\",\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"ES\",\n \"hs4\": \"5367\",\n \"hs2\": \"00\",\n \"carrier\": \"\",\n \"scac\": \"PVHT\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"xn\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"since\": \"0433-11\",\n \"until\": \"9305-06\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unprocessable Entity (WebDAV) (RFC 4918)", + "code": 422, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"detail\": [\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n },\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "8b30d074-b13a-40e5-b81a-4c8d69b4105d", + "name": "Too Many Requests - about 120 requests per minute are allowed per account.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "breakdown" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"dims\": [\n \"scac\"\n ],\n \"measure\": \"containers\",\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"ES\",\n \"hs4\": \"5367\",\n \"hs2\": \"00\",\n \"carrier\": \"\",\n \"scac\": \"PVHT\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"xn\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"since\": \"0433-11\",\n \"until\": \"9305-06\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Too Many Requests", + "code": 429, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "5c0dfd73-d177-4010-86ec-f657d1ed9db6", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "breakdown" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"dims\": [\n \"scac\"\n ],\n \"measure\": \"containers\",\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"ES\",\n \"hs4\": \"5367\",\n \"hs2\": \"00\",\n \"carrier\": \"\",\n \"scac\": \"PVHT\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"xn\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"since\": \"0433-11\",\n \"until\": \"9305-06\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Gateway", + "code": 502, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "09d8768f-4d9e-43ab-9ad7-e99cc2b55ce6", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "breakdown" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"dims\": [\n \"scac\"\n ],\n \"measure\": \"containers\",\n \"filters\": {\n \"company\": \"\",\n \"company_state\": \"ES\",\n \"hs4\": \"5367\",\n \"hs2\": \"00\",\n \"carrier\": \"\",\n \"scac\": \"PVHT\",\n \"origin_country\": \"\",\n \"origin_region\": \"\",\n \"pol\": \"\",\n \"pol_country\": \"\",\n \"pod\": \"\",\n \"pod_coast\": \"WEST\",\n \"dest_state\": \"xn\",\n \"container_type\": \"\",\n \"reefer\": \"\"\n },\n \"since\": \"0433-11\",\n \"until\": \"9305-06\",\n \"top\": 10\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Gateway Timeout", + "code": 504, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "9c229450-29c4-4693-8df6-e2084beb854b", + "name": "Look up a container's import record", + "request": { + "name": "Look up a container's import record", + "description": { + "content": "The most recent US import of a container from US import bill-of-lading records (US Customs vessel manifests): the bills of lading it travelled under (carrier, vessel, voyage, ports, destination) and the commodity lines on those bills with consignee, shipper, and notify party.\n\nOnly the most recent US import per container is on record; earlier trips are not returned. A malformed number returns `200` with `found: false` and an `error`; a well-formed number with no record returns `found: false`. Commodity lines are capped at 200 (`commodities_truncated`). This lookup reads record-level data and can take several seconds.", + "type": "text/plain" + }, + "url": { + "path": [ + "trade_intel", + "containers", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"container_number\": \"\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": null + }, + "response": [ + { + "id": "13842ad0-a753-49d2-9306-41a48486c1ed", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "containers", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"container_number\": \"\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"container_number\": \"\",\n \"found\": \"\",\n \"error\": \"\",\n \"latest_import\": {\n \"key_0\": 6464,\n \"key_1\": false\n },\n \"bills_of_lading\": [\n {\n \"imported_on\": \"\",\n \"master_bill_of_lading_number\": \"\",\n \"house_bill_of_lading_number\": \"\",\n \"scac\": \"\",\n \"scac_name\": \"\",\n \"vessel_name\": \"\",\n \"voyage_number\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_lading_country\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_city\": \"\",\n \"destination_state\": \"\",\n \"ultimate_origin_country\": \"\",\n \"container_type_short_description\": \"\",\n \"container_teu\": \"\",\n \"container_reefer_flag\": \"\"\n },\n {\n \"imported_on\": \"\",\n \"master_bill_of_lading_number\": \"\",\n \"house_bill_of_lading_number\": \"\",\n \"scac\": \"\",\n \"scac_name\": \"\",\n \"vessel_name\": \"\",\n \"voyage_number\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_lading_country\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_city\": \"\",\n \"destination_state\": \"\",\n \"ultimate_origin_country\": \"\",\n \"container_type_short_description\": \"\",\n \"container_teu\": \"\",\n \"container_reefer_flag\": \"\"\n }\n ],\n \"commodities\": [\n {\n \"imported_on\": \"\",\n \"master_bill_of_lading_number\": \"\",\n \"house_bill_of_lading_number\": \"\",\n \"consignee\": \"\",\n \"consignee_city\": \"\",\n \"consignee_state\": \"\",\n \"notify_party\": \"\",\n \"shipper\": \"\",\n \"shipper_country\": \"\",\n \"commodity_short_description\": \"\",\n \"commodity_hs_code_6\": \"\",\n \"commodity_hs_code_6_description\": \"\",\n \"commodity_quantity\": \"\",\n \"commodity_quantity_uom\": \"\",\n \"commodity_estimated_value\": \"\",\n \"bol_metric_tons\": \"\",\n \"bol_teus\": \"\",\n \"nvocc_scac\": \"\",\n \"nvocc_scac_description\": \"\"\n },\n {\n \"imported_on\": \"\",\n \"master_bill_of_lading_number\": \"\",\n \"house_bill_of_lading_number\": \"\",\n \"consignee\": \"\",\n \"consignee_city\": \"\",\n \"consignee_state\": \"\",\n \"notify_party\": \"\",\n \"shipper\": \"\",\n \"shipper_country\": \"\",\n \"commodity_short_description\": \"\",\n \"commodity_hs_code_6\": \"\",\n \"commodity_hs_code_6_description\": \"\",\n \"commodity_quantity\": \"\",\n \"commodity_quantity_uom\": \"\",\n \"commodity_estimated_value\": \"\",\n \"bol_metric_tons\": \"\",\n \"bol_teus\": \"\",\n \"nvocc_scac\": \"\",\n \"nvocc_scac_description\": \"\"\n }\n ],\n \"commodities_truncated\": \"\",\n \"note\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "8d050761-1f84-41db-96d1-b45bea36140a", + "name": "Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "containers", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"container_number\": \"\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "1c1ecbaf-9d8a-4277-9c30-ca0373b3a1e9", + "name": "Unauthorized - the API key is missing or invalid.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "containers", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"container_number\": \"\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unauthorized", + "code": 401, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "00d36d48-9103-4001-80d0-2bade4ec6b75", + "name": "Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "containers", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"container_number\": \"\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Forbidden", + "code": 403, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "0082988b-80d1-4397-9d49-97bfdac41e06", + "name": "Unprocessable Entity - either the body failed schema validation (a value out of range, a malformed month, or an unknown enum value), reported in `detail`, or the request would read more data than the query cost cap allows, reported in `error`. Narrow the time window or filters for the second.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "containers", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"container_number\": \"\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unprocessable Entity (WebDAV) (RFC 4918)", + "code": 422, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"detail\": [\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n },\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "6159d382-0b7b-49f9-8342-f5e1c10b3e2f", + "name": "Too Many Requests - about 120 requests per minute are allowed per account.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "containers", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"container_number\": \"\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Too Many Requests", + "code": 429, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "4330aaf6-2580-485f-a282-878652428b37", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "containers", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"container_number\": \"\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Gateway", + "code": 502, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "b48a1901-17cc-441b-bd35-e2cac5673eed", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "containers", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"container_number\": \"\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Gateway Timeout", + "code": 504, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "0d0af0fc-be78-4187-87a5-d1655a08682a", + "name": "Look up a bill of lading", + "request": { + "name": "Look up a bill of lading", + "description": { + "content": "The import record for a master or house bill of lading from US import bill-of-lading records (US Customs vessel manifests): the containers that moved under it and the commodity lines with consignee, shipper, and notify party.\n\nThe search covers the last `months` months (default 12). Up to 50 matching bill records are used (`bills_truncated`), and containers and commodity lines are each capped at 200 (`containers_truncated`, `commodities_truncated`). When nothing matches, `found` is `false` and `searched_since` tells you how far back the search went. This lookup reads record-level data and can take several seconds.", + "type": "text/plain" + }, + "url": { + "path": [ + "trade_intel", + "bills_of_lading", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"bol_number\": \"\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": null + }, + "response": [ + { + "id": "ff6fba6e-a4c6-4f7a-8255-4ace2321c145", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "bills_of_lading", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"bol_number\": \"\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"bol_number\": \"\",\n \"found\": \"\",\n \"searched_since\": \"\",\n \"bills_matched\": \"\",\n \"bills_truncated\": \"\",\n \"containers\": [\n {\n \"container_number\": \"\",\n \"imported_on\": \"\",\n \"scac\": \"\",\n \"vessel_name\": \"\",\n \"voyage_number\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_city\": \"\",\n \"destination_state\": \"\",\n \"container_type_short_description\": \"\",\n \"container_teu\": \"\"\n },\n {\n \"container_number\": \"\",\n \"imported_on\": \"\",\n \"scac\": \"\",\n \"vessel_name\": \"\",\n \"voyage_number\": \"\",\n \"port_of_lading_name\": \"\",\n \"port_of_discharge_name\": \"\",\n \"destination_city\": \"\",\n \"destination_state\": \"\",\n \"container_type_short_description\": \"\",\n \"container_teu\": \"\"\n }\n ],\n \"containers_truncated\": \"\",\n \"commodities\": [\n {\n \"imported_on\": \"\",\n \"master_bill_of_lading_number\": \"\",\n \"house_bill_of_lading_number\": \"\",\n \"consignee\": \"\",\n \"consignee_city\": \"\",\n \"consignee_state\": \"\",\n \"notify_party\": \"\",\n \"shipper\": \"\",\n \"shipper_country\": \"\",\n \"commodity_short_description\": \"\",\n \"commodity_hs_code_6\": \"\",\n \"commodity_hs_code_6_description\": \"\",\n \"commodity_quantity\": \"\",\n \"commodity_quantity_uom\": \"\",\n \"commodity_estimated_value\": \"\",\n \"bol_metric_tons\": \"\",\n \"bol_teus\": \"\",\n \"nvocc_scac\": \"\",\n \"nvocc_scac_description\": \"\"\n },\n {\n \"imported_on\": \"\",\n \"master_bill_of_lading_number\": \"\",\n \"house_bill_of_lading_number\": \"\",\n \"consignee\": \"\",\n \"consignee_city\": \"\",\n \"consignee_state\": \"\",\n \"notify_party\": \"\",\n \"shipper\": \"\",\n \"shipper_country\": \"\",\n \"commodity_short_description\": \"\",\n \"commodity_hs_code_6\": \"\",\n \"commodity_hs_code_6_description\": \"\",\n \"commodity_quantity\": \"\",\n \"commodity_quantity_uom\": \"\",\n \"commodity_estimated_value\": \"\",\n \"bol_metric_tons\": \"\",\n \"bol_teus\": \"\",\n \"nvocc_scac\": \"\",\n \"nvocc_scac_description\": \"\"\n }\n ],\n \"commodities_truncated\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "f96a3dfd-a4aa-4aa9-846c-3c52968d4b19", + "name": "Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "bills_of_lading", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"bol_number\": \"\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "6f4854fb-2b42-4ee9-81b6-cf4e4dcd9131", + "name": "Unauthorized - the API key is missing or invalid.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "bills_of_lading", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"bol_number\": \"\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unauthorized", + "code": 401, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "a2684098-7684-4662-8649-a7e768c3d1b7", + "name": "Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "bills_of_lading", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"bol_number\": \"\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Forbidden", + "code": 403, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "05a29eaa-0187-4ff8-be67-72be4aa7c677", + "name": "Unprocessable Entity - either the body failed schema validation (a value out of range, a malformed month, or an unknown enum value), reported in `detail`, or the request would read more data than the query cost cap allows, reported in `error`. Narrow the time window or filters for the second.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "bills_of_lading", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"bol_number\": \"\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Unprocessable Entity (WebDAV) (RFC 4918)", + "code": 422, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"detail\": [\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n },\n {\n \"loc\": [\n \"\",\n \"\"\n ],\n \"msg\": \"\",\n \"type\": \"\"\n }\n ]\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "5e220fac-8af5-46e5-b4f3-a8a4b4ab8bed", + "name": "Too Many Requests - about 120 requests per minute are allowed per account.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "bills_of_lading", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"bol_number\": \"\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Too Many Requests", + "code": 429, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "1a915a7a-ad68-476b-a897-41688480b5da", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "bills_of_lading", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"bol_number\": \"\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Gateway", + "code": 502, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", + "cookie": [], + "_postman_previewlanguage": "json" + }, + { + "id": "a1066e05-5f99-4717-bfc9-a5501828a4b8", + "name": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "originalRequest": { + "url": { + "path": [ + "trade_intel", + "bills_of_lading", + "lookup" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"bol_number\": \"\",\n \"months\": 12\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Gateway Timeout", + "code": 504, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -28023,7 +32476,7 @@ "description": "", "item": [ { - "id": "c0a73e58-502e-48cb-ae45-e69220b7c9f2", + "id": "eb90c197-2b30-4c23-a63b-48dcb90b44fc", "name": "Shipping Lines", "request": { "name": "Shipping Lines", @@ -28053,7 +32506,7 @@ }, "response": [ { - "id": "255f5e17-24ca-458b-8cb5-86cab0814e64", + "id": "1b7b2e97-5b77-4fdf-932d-a948da65891c", "name": "OK", "originalRequest": { "url": { @@ -28102,7 +32555,7 @@ } }, { - "id": "ab1d8c84-7d42-4d67-9218-b9635b1196c1", + "id": "7dc48c5d-d625-49e3-a00b-f909e7e81a11", "name": "Get a single shipping line", "request": { "name": "Get a single shipping line", @@ -28144,7 +32597,7 @@ }, "response": [ { - "id": "d04dc5df-71a5-432c-8919-2e46957a25d3", + "id": "4569a7cd-e430-458d-b7e2-993eda172a35", "name": "OK", "originalRequest": { "url": { @@ -28199,7 +32652,7 @@ "_postman_previewlanguage": "json" }, { - "id": "84fc116e-677c-44a5-993a-f1556cb422ee", + "id": "efbc1fe8-7b74-4869-a904-98228555d064", "name": "Not Found", "originalRequest": { "url": { @@ -28249,7 +32702,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -28266,7 +32719,7 @@ "description": "", "item": [ { - "id": "20767378-14f5-4db5-a340-1d91d48012c9", + "id": "1d3bce22-84b4-418d-9375-191a55268380", "name": "Get a vessel using the id", "request": { "name": "Get a vessel using the id", @@ -28327,7 +32780,7 @@ }, "response": [ { - "id": "9e99b78a-a7e4-4881-995d-91468446aa6d", + "id": "711c2720-3938-46ea-9c07-a2e7508fa4b6", "name": "OK", "originalRequest": { "url": { @@ -28401,7 +32854,7 @@ "_postman_previewlanguage": "json" }, { - "id": "8750b806-2b93-4e91-bd7e-5121e69a6282", + "id": "73f6a46e-1153-4e60-aa60-528c4bef4c50", "name": "Forbidden - Feature not enabled", "originalRequest": { "url": { @@ -28475,7 +32928,7 @@ "_postman_previewlanguage": "json" }, { - "id": "ba0e1e7b-6908-468f-bd34-9213f8d7a859", + "id": "b9b32172-07d8-40c1-a1d5-082d09aa6b5d", "name": "Not Found", "originalRequest": { "url": { @@ -28544,7 +32997,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -28555,7 +33008,7 @@ } }, { - "id": "ac556458-c292-43c9-b81d-23235dea8f6c", + "id": "418af6a1-5a96-477c-a592-69ee77af0e60", "name": "Get a vessel using the imo", "request": { "name": "Get a vessel using the imo", @@ -28616,7 +33069,7 @@ }, "response": [ { - "id": "46dc3cfb-ec24-47da-a810-c5675b70d255", + "id": "0d61c7a8-9586-4d29-bf54-f50baa77570c", "name": "OK", "originalRequest": { "url": { @@ -28690,7 +33143,7 @@ "_postman_previewlanguage": "json" }, { - "id": "90881839-dc15-4d58-9e1d-a80be1d6dd74", + "id": "a0eaf76d-a24a-42c8-b318-8a5ed438539d", "name": "Forbidden - Feature not enabled", "originalRequest": { "url": { @@ -28764,7 +33217,7 @@ "_postman_previewlanguage": "json" }, { - "id": "ddf9090f-b7f4-4c74-b677-95590bb9cdfc", + "id": "d94b3352-f6ec-4dff-b84d-c380dc2ea190", "name": "Not Found", "originalRequest": { "url": { @@ -28833,7 +33286,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -28844,7 +33297,7 @@ } }, { - "id": "7e7f0c89-fb34-4260-becb-78ab9b55c4ad", + "id": "664704ad-3353-4e15-8bbe-9dbc648603d9", "name": "Get vessel future positions", "request": { "name": "Get vessel future positions", @@ -28906,7 +33359,7 @@ }, "response": [ { - "id": "b6c1be48-9bfa-4f5c-9934-1bac89836823", + "id": "96abfff4-2493-40f4-82b5-155aae64ce81", "name": "OK", "originalRequest": { "url": { @@ -28981,7 +33434,7 @@ "_postman_previewlanguage": "json" }, { - "id": "802074f3-733a-4889-a1fe-4ccaec102c7b", + "id": "365ed033-aced-4c64-971e-cba65fdeb3d0", "name": "Forbidden - Routing data feature is not enabled for this account", "originalRequest": { "url": { @@ -29056,7 +33509,7 @@ "_postman_previewlanguage": "json" }, { - "id": "a1a40c6f-8308-43ca-ad25-7249e308b265", + "id": "88550f84-f302-40b2-96ff-5813b4c9f14e", "name": "Not Found", "originalRequest": { "url": { @@ -29126,7 +33579,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -29137,7 +33590,7 @@ } }, { - "id": "7bdc436b-6210-4235-b9f9-c5e4cf03ebdd", + "id": "1bdab172-e173-4aac-b634-7740d32e45a1", "name": "Get vessel future positions from coordinates", "request": { "name": "Get vessel future positions from coordinates", @@ -29217,7 +33670,7 @@ }, "response": [ { - "id": "e29048c6-9e26-4ce2-946b-3013dff869bb", + "id": "2e14f093-896c-4f7a-b404-e14a8f714957", "name": "OK", "originalRequest": { "url": { @@ -29310,7 +33763,7 @@ "_postman_previewlanguage": "json" }, { - "id": "ed49e931-ae70-4902-8033-a1a38e7c37f6", + "id": "d8ec4aa9-439e-4142-9085-1ff260d884e6", "name": "Forbidden - Routing data feature is not enabled for this account", "originalRequest": { "url": { @@ -29403,7 +33856,7 @@ "_postman_previewlanguage": "json" }, { - "id": "29f3ad6d-8f41-4b6b-b1d6-4b3fd46451c4", + "id": "5fb0c4d7-45b2-4808-97b2-a94b9dd7cb6d", "name": "Not Found", "originalRequest": { "url": { @@ -29491,7 +33944,7 @@ "value": "application/json" } ], - "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": false,\n \"key_1\": 9566.510244210951\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": \"string\"\n }\n }\n ]\n}", + "body": "{\n \"errors\": [\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": true,\n \"key_1\": true,\n \"key_2\": false,\n \"key_3\": 3134.1327199128923\n }\n },\n {\n \"detail\": \"\",\n \"title\": \"\",\n \"source\": {\n \"pointer\": \"\",\n \"parameter\": \"\"\n },\n \"code\": \"\",\n \"status\": \"\",\n \"meta\": {\n \"key_0\": 7615.969185104593,\n \"key_1\": 3027.332280913456,\n \"key_2\": true,\n \"key_3\": \"string\"\n }\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -29532,7 +33985,7 @@ } ], "info": { - "_postman_id": "7ce6036d-58ef-4bb0-94a6-4945e5d39000", + "_postman_id": "73b3c1e6-033f-4234-8260-1602fcfe31f8", "name": "Terminal49 API Reference", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "description": { diff --git a/chatgpt-app-submission.json b/chatgpt-app-submission.json index eb490e732..10a69f498 100644 --- a/chatgpt-app-submission.json +++ b/chatgpt-app-submission.json @@ -4,7 +4,7 @@ "app_info": { "display_name": "Terminal49", "subtitle": "Track shipping containers", - "description": "Terminal49 helps users find and monitor ocean shipments and containers, filter and count their container worklists (by status, terminal, carrier, holds, last free day, arrival, or company), inspect routes and transport events, check supported shipping lines, and create new tracking requests through ChatGPT.", + "description": "Terminal49 helps users find and monitor ocean shipments and containers, filter and count their container worklists (by status, terminal, carrier, holds, last free day, arrival, or company), inspect routes and transport events, check supported shipping lines, create new tracking requests, and, where trade intelligence is enabled, research US ocean import markets (importers, products, origins, ports, and carriers) through ChatGPT.", "category": "BUSINESS" }, "tools": { @@ -175,6 +175,90 @@ "open_world_justification": "Reads the connected Terminal49 account only and does not change any external system.", "destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions." } + }, + "search_importers": { + "annotations": { + "readOnlyHint": true, + "openWorldHint": false, + "destructiveHint": false + }, + "justifications": { + "read_only_justification": "Searches US import market data for importers by name or product without modifying records.", + "open_world_justification": "Reads Terminal49's own trade intelligence data; does not publish content or change public or third-party systems.", + "destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions." + } + }, + "get_importer_profile": { + "annotations": { + "readOnlyHint": true, + "openWorldHint": false, + "destructiveHint": false + }, + "justifications": { + "read_only_justification": "Reads one importer's US import history from market data without modifying records.", + "open_world_justification": "Reads Terminal49's own trade intelligence data; does not publish content or change public or third-party systems.", + "destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions." + } + }, + "search_commodities": { + "annotations": { + "readOnlyHint": true, + "openWorldHint": false, + "destructiveHint": false + }, + "justifications": { + "read_only_justification": "Looks up product codes in US import market data without modifying records.", + "open_world_justification": "Reads Terminal49's own trade intelligence data; does not publish content or change public or third-party systems.", + "destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions." + } + }, + "rank_importers": { + "annotations": { + "readOnlyHint": true, + "openWorldHint": false, + "destructiveHint": false + }, + "justifications": { + "read_only_justification": "Ranks importers in US import market data without modifying records.", + "open_world_justification": "Reads Terminal49's own trade intelligence data; does not publish content or change public or third-party systems.", + "destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions." + } + }, + "get_trade_trends": { + "annotations": { + "readOnlyHint": true, + "openWorldHint": false, + "destructiveHint": false + }, + "justifications": { + "read_only_justification": "Reads US import volume time series without modifying records.", + "open_world_justification": "Reads Terminal49's own trade intelligence data; does not publish content or change public or third-party systems.", + "destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions." + } + }, + "get_trade_breakdown": { + "annotations": { + "readOnlyHint": true, + "openWorldHint": false, + "destructiveHint": false + }, + "justifications": { + "read_only_justification": "Reads US import volume totals by dimension without modifying records.", + "open_world_justification": "Reads Terminal49's own trade intelligence data; does not publish content or change public or third-party systems.", + "destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions." + } + }, + "get_trade_data_coverage": { + "annotations": { + "readOnlyHint": true, + "openWorldHint": false, + "destructiveHint": false + }, + "justifications": { + "read_only_justification": "Reads the coverage dates of the US import market data without modifying records.", + "open_world_justification": "Reads Terminal49's own trade intelligence data; does not publish content or change public or third-party systems.", + "destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions." + } } }, "test_cases": [ diff --git a/claude-connector-submission.json b/claude-connector-submission.json index 795acc4c0..36947456b 100644 --- a/claude-connector-submission.json +++ b/claude-connector-submission.json @@ -10,7 +10,7 @@ "listing": { "name": "Terminal49", "tagline": "Track ocean shipments", - "description": "Terminal49 helps users find and monitor ocean shipments and containers, filter and count their container worklists (by status, terminal, carrier, holds, last free day, arrival, or company), inspect routes and transport events, check supported shipping lines, and create new tracking requests.", + "description": "Terminal49 helps users find and monitor ocean shipments and containers, filter and count their container worklists (by status, terminal, carrier, holds, last free day, arrival, or company), inspect routes and transport events, check supported shipping lines, create new tracking requests, and, where trade intelligence is enabled, research US ocean import markets (importers, products, origins, ports, and carriers).", "categories": [ "Business" ], @@ -25,14 +25,21 @@ "get_container", "get_container_route", "get_container_transport_events", + "get_importer_profile", "get_shipment_details", "get_supported_shipping_lines", + "get_trade_breakdown", + "get_trade_data_coverage", + "get_trade_trends", "list_containers", "list_parties", "list_shipments", "list_tracking_requests", + "rank_importers", + "search_commodities", "search_container", "search_docs", + "search_importers", "summarize_containers", "track_container", "whoami" @@ -50,7 +57,8 @@ "Filter and count container worklists by status, terminal, carrier, holds, last free day, or company", "Inspect routes and transport events", "Check supported shipping lines", - "Create new tracking requests" + "Create new tracking requests", + "Research US ocean import markets: importers, products, origin countries, ports, and carriers" ] } } diff --git a/docs/api-docs/api-reference/trade-intelligence/get-an-import-breakdown.mdx b/docs/api-docs/api-reference/trade-intelligence/get-an-import-breakdown.mdx new file mode 100644 index 000000000..0c8e03210 --- /dev/null +++ b/docs/api-docs/api-reference/trade-intelligence/get-an-import-breakdown.mdx @@ -0,0 +1,7 @@ +--- +title: "Get an import breakdown" +description: "Get nested totals with subtotals at every level of a dimension hierarchy such as region, country, and port, or HS chapter and heading." +og:title: Import Breakdown | Terminal49 API Documentation +og:description: Break US ocean imports down by region, country, port, carrier, or HS code with Terminal49's trade intelligence API. +openapi: post /trade_intel/breakdown +--- diff --git a/docs/api-docs/api-reference/trade-intelligence/get-an-importer-profile.mdx b/docs/api-docs/api-reference/trade-intelligence/get-an-importer-profile.mdx new file mode 100644 index 000000000..912801733 --- /dev/null +++ b/docs/api-docs/api-reference/trade-intelligence/get-an-importer-profile.mdx @@ -0,0 +1,7 @@ +--- +title: "Get an importer profile" +description: "Get one importer's monthly container history, ports of discharge, origin countries, carriers, destination states, and HS4 commodities from US import bill-of-lading records." +og:title: Importer Profile | Terminal49 API Documentation +og:description: Pull an importer's monthly ocean import history and trade lanes with Terminal49's trade intelligence API. +openapi: post /trade_intel/companies/profile +--- diff --git a/docs/api-docs/api-reference/trade-intelligence/get-import-trends.mdx b/docs/api-docs/api-reference/trade-intelligence/get-import-trends.mdx new file mode 100644 index 000000000..e70e79075 --- /dev/null +++ b/docs/api-docs/api-reference/trade-intelligence/get-import-trends.mdx @@ -0,0 +1,7 @@ +--- +title: "Get import trends" +description: "Get monthly, quarterly, or yearly series of containers, TEUs, or estimated value, split by up to two dimensions and filtered by company, commodity, lane, or carrier." +og:title: Import Trends | Terminal49 API Documentation +og:description: Chart US ocean import trends by commodity, origin, port, carrier, or company with Terminal49's trade intelligence API. +openapi: post /trade_intel/trends +--- diff --git a/docs/api-docs/api-reference/trade-intelligence/get-trade-intelligence-coverage.mdx b/docs/api-docs/api-reference/trade-intelligence/get-trade-intelligence-coverage.mdx new file mode 100644 index 000000000..ea16ab67c --- /dev/null +++ b/docs/api-docs/api-reference/trade-intelligence/get-trade-intelligence-coverage.mdx @@ -0,0 +1,7 @@ +--- +title: "Get trade intelligence coverage" +description: "Return the window, history start, partial month, and build time of Terminal49 trade intelligence, built from US import bill-of-lading records." +og:title: Trade Intelligence Coverage | Terminal49 API Documentation +og:description: Check the coverage window and freshness of Terminal49 trade intelligence before quoting import volumes. +openapi: get /trade_intel/meta +--- diff --git a/docs/api-docs/api-reference/trade-intelligence/look-up-a-bill-of-lading.mdx b/docs/api-docs/api-reference/trade-intelligence/look-up-a-bill-of-lading.mdx new file mode 100644 index 000000000..bf4e5eaf4 --- /dev/null +++ b/docs/api-docs/api-reference/trade-intelligence/look-up-a-bill-of-lading.mdx @@ -0,0 +1,7 @@ +--- +title: "Look up a bill of lading" +description: "Get the import record for a master or house bill of lading from US Customs manifests: containers, consignee, shipper, notify party, and commodity lines." +og:title: Bill of Lading Import Record | Terminal49 API Documentation +og:description: Look up a bill of lading's containers, parties, and commodity lines with Terminal49's trade intelligence API. +openapi: post /trade_intel/bills_of_lading/lookup +--- diff --git a/docs/api-docs/api-reference/trade-intelligence/look-up-a-containers-import-record.mdx b/docs/api-docs/api-reference/trade-intelligence/look-up-a-containers-import-record.mdx new file mode 100644 index 000000000..d02d3c57e --- /dev/null +++ b/docs/api-docs/api-reference/trade-intelligence/look-up-a-containers-import-record.mdx @@ -0,0 +1,7 @@ +--- +title: "Look up a container's import record" +description: "Get the most recent US import of a container from US Customs manifests: bills of lading, carrier, vessel, ports, destination, parties, and commodity lines." +og:title: Container Import Record | Terminal49 API Documentation +og:description: Look up a container's most recent US import, its bills of lading, parties, and commodities with Terminal49's trade intelligence API. +openapi: post /trade_intel/containers/lookup +--- diff --git a/docs/api-docs/api-reference/trade-intelligence/rank-importers.mdx b/docs/api-docs/api-reference/trade-intelligence/rank-importers.mdx new file mode 100644 index 000000000..c550e5528 --- /dev/null +++ b/docs/api-docs/api-reference/trade-intelligence/rank-importers.mdx @@ -0,0 +1,7 @@ +--- +title: "Rank importers" +description: "Rank US importers by physical containers for an HS4 heading, port of discharge, or origin country over full calendar months." +og:title: Top US Importers | Terminal49 API Documentation +og:description: Rank the largest US importers of a commodity, through a port, or from a country with Terminal49's trade intelligence API. +openapi: post /trade_intel/importers/top +--- diff --git a/docs/api-docs/api-reference/trade-intelligence/search-commodities.mdx b/docs/api-docs/api-reference/trade-intelligence/search-commodities.mdx new file mode 100644 index 000000000..11afb1651 --- /dev/null +++ b/docs/api-docs/api-reference/trade-intelligence/search-commodities.mdx @@ -0,0 +1,7 @@ +--- +title: "Search commodities" +description: "Resolve a product description or HS code prefix to 4-digit HS headings with common goods, estimated import value, and importer counts." +og:title: Search Commodities | Terminal49 API Documentation +og:description: Find the HS4 heading for a product and see what is declared under it with Terminal49's trade intelligence API. +openapi: post /trade_intel/commodities/search +--- diff --git a/docs/api-docs/api-reference/trade-intelligence/search-importers.mdx b/docs/api-docs/api-reference/trade-intelligence/search-importers.mdx new file mode 100644 index 000000000..e3a5e7484 --- /dev/null +++ b/docs/api-docs/api-reference/trade-intelligence/search-importers.mdx @@ -0,0 +1,7 @@ +--- +title: "Search importers" +description: "Find US importers by name or by what they import, with 12-month container volumes, TEUs, estimated value, and top ports, origins, carriers, and commodities." +og:title: Search US Importers | Terminal49 API Documentation +og:description: Search US importers by company name or product using Terminal49's trade intelligence API, built from US Customs manifests. +openapi: post /trade_intel/companies/search +--- diff --git a/docs/api-docs/in-depth-guides/mcp.mdx b/docs/api-docs/in-depth-guides/mcp.mdx index 18b53ce88..79767500e 100644 --- a/docs/api-docs/in-depth-guides/mcp.mdx +++ b/docs/api-docs/in-depth-guides/mcp.mdx @@ -170,7 +170,7 @@ Once configured, verify everything works: > "List the tools available in the Terminal49 MCP server." - Claude should respond with a list of 14 tools including `search_container`, `track_container`, and list tools. + Claude should respond with a list of 21 tools including `search_container`, `track_container`, the list tools, and the trade intelligence tools. > "Using the Terminal49 MCP server, search for container TCLU1234567 and summarize its status." diff --git a/docs/docs.json b/docs/docs.json index 87864e679..c7680813e 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -260,6 +260,21 @@ "api-docs/api-reference/account/get-the-current-credential" ] }, + { + "group": "Trade Intelligence", + "icon": "chart-line", + "pages": [ + "api-docs/api-reference/trade-intelligence/get-trade-intelligence-coverage", + "api-docs/api-reference/trade-intelligence/search-importers", + "api-docs/api-reference/trade-intelligence/get-an-importer-profile", + "api-docs/api-reference/trade-intelligence/search-commodities", + "api-docs/api-reference/trade-intelligence/rank-importers", + "api-docs/api-reference/trade-intelligence/get-import-trends", + "api-docs/api-reference/trade-intelligence/get-an-import-breakdown", + "api-docs/api-reference/trade-intelligence/look-up-a-containers-import-record", + "api-docs/api-reference/trade-intelligence/look-up-a-bill-of-lading" + ] + }, { "group": "Shipping Lines", "icon": "ship", @@ -440,6 +455,7 @@ "sdk/reference/client/managers/classes/ShipmentManager", "sdk/reference/client/managers/classes/ShippingLineManager", "sdk/reference/client/managers/classes/TrackingRequestManager", + "sdk/reference/client/managers/classes/TradeIntelManager", "sdk/reference/client/managers/interfaces/ContainerAddPartyRoleParams", "sdk/reference/client/managers/interfaces/CreateDocumentParams", "sdk/reference/client/managers/interfaces/CreateTrackingRequestFromInferOptions", @@ -447,11 +463,31 @@ "sdk/reference/client/managers/interfaces/ShipmentAddPartyRoleParams", "sdk/reference/client/managers/interfaces/TrackingRequestListFilters", "sdk/reference/client/managers/interfaces/UpdateDocumentParams", + "sdk/reference/client/managers/interfaces/TradeIntelBillOfLadingLookupOptions", "sdk/reference/client/managers/type-aliases/ContainerUpdateAttributes", "sdk/reference/client/managers/type-aliases/DocumentRotation", "sdk/reference/client/managers/type-aliases/ShipmentUpdateAttributes", "sdk/reference/client/managers/type-aliases/TrackingRequestType", - "sdk/reference/client/managers/type-aliases/TrackingRequestUpdateAttributes" + "sdk/reference/client/managers/type-aliases/TrackingRequestUpdateAttributes", + "sdk/reference/client/managers/type-aliases/TradeIntelBillOfLadingLookup", + "sdk/reference/client/managers/type-aliases/TradeIntelBreakdown", + "sdk/reference/client/managers/type-aliases/TradeIntelBreakdownRequest", + "sdk/reference/client/managers/type-aliases/TradeIntelCommoditySearchRequest", + "sdk/reference/client/managers/type-aliases/TradeIntelCommoditySearchResponse", + "sdk/reference/client/managers/type-aliases/TradeIntelCompanyProfile", + "sdk/reference/client/managers/type-aliases/TradeIntelCompanyProfileRequest", + "sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchRequest", + "sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchResponse", + "sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchResult", + "sdk/reference/client/managers/type-aliases/TradeIntelContainerLookup", + "sdk/reference/client/managers/type-aliases/TradeIntelDimension", + "sdk/reference/client/managers/type-aliases/TradeIntelFilters", + "sdk/reference/client/managers/type-aliases/TradeIntelMeasure", + "sdk/reference/client/managers/type-aliases/TradeIntelMeta", + "sdk/reference/client/managers/type-aliases/TradeIntelTopImporters", + "sdk/reference/client/managers/type-aliases/TradeIntelTopImportersRequest", + "sdk/reference/client/managers/type-aliases/TradeIntelTrends", + "sdk/reference/client/managers/type-aliases/TradeIntelTrendsRequest" ] }, { diff --git a/docs/mcp/home.mdx b/docs/mcp/home.mdx index fee56f27b..41a45b112 100644 --- a/docs/mcp/home.mdx +++ b/docs/mcp/home.mdx @@ -690,6 +690,130 @@ Identify the caller: API key or signed-in user, the account the session is scope --- +## Trade intelligence tools + +Trade intelligence answers market questions about US ocean imports: who imports a product, what a named company imports and how that is changing, where goods come from, and port, carrier, and lane volumes. It is built from US Customs bill-of-lading records from January 2022 to today, refreshed daily. These tools read market data, not your account's shipments, and all of them are read-only. + + +Trade intelligence is enabled per account. Without it, each tool replies that trade intelligence isn't enabled for the account. To turn it on, contact support@terminal49.com. + + +Keep these in mind when you read the answers: + +- Volume is physical containers, each counted once. Values are estimates, not declared customs values. +- `get_trade_trends` and `get_trade_breakdown` include the current month, which is still incomplete, unless you set `until`. Compare full months against the same months a year earlier. +- A company can appear under several names and once per US state. Some importers keep their names off the records or ship under a forwarder, so low volume for a well-known company is a floor, not its size. +- Forwarders and customs brokers appear among importers. A high `share_as_notify_party` suggests a logistics provider, but large cargo owners can also be listed mostly as notify party, so weigh the company name and product mix too. +- Don't add volumes across products or companies. Carriers appear under spelling variants, so merge them before computing shares. +- Lane fields (`pol`, `pol_country`, `container_type`) can't be combined with importer or product fields (`company`, `company_state`, `hs4`, `hs2`) in one request, and they don't support `estimated_value`. Use containers or TEUs for lane questions. + +--- + +### `search_importers` + +Find US importers by company name (typos and partial names are fine), by what they import, or both. Each result covers a 12-month search window, which can end a month or two before the last full month: containers, the consignee and notify-party split, twenty-foot equivalent units (TEUs), estimated value, and top ports, origin countries, carriers, and products. Results are ordered by match quality, not size. + +**Parameters** + +- `name` *(string, optional)* - company name. +- `imports` *(string, optional)* - what the company imports, in plain words. +- `state`, `port_of_discharge`, `origin_country` *(string, optional)* - narrow the search. +- `min_containers` *(number, optional)* - minimum containers in the search window. +- `limit` *(number, optional)* - default 10, maximum 25. + +**Good for** + +- "Who are the importers of frozen shrimp in Florida?" +- "Find Example Outdoor Supply's importer records." + +--- + +### `get_importer_profile` + +One importer's imports over full calendar months ending last month: totals, a monthly series, US ports, origin countries, carriers, destination states, and products with estimated value. Use `months: 24` to compare the latest months with the same months a year earlier. + +**Parameters** + +- `company_name` *(string, required)* - the exact name from `search_importers`. +- `company_state` *(string, optional)* - one state; omit to combine all of the company's locations. +- `months` *(number, optional)* - default 12, maximum 60. + +**Good for** + +- "What does this competitor import, and is it growing?" + +--- + +### `search_commodities` + +Turn a product description or Harmonized System (HS) code prefix into four-digit HS codes, with the goods commonly declared under each code, the number of importers, and 12-month estimated value. Check the common goods before relying on a code. + +**Parameters** + +- `query` *(string, required)* - such as `office chairs` or `94`. +- `limit` *(number, optional)* - default 8, maximum 20. + +Each code lists up to 15 common goods; `common_goods_not_shown` counts any left out. + +--- + +### `rank_importers` + +Rank US importers by containers over full calendar months for a product, a US port, an origin country, or any combination. The ranking includes forwarders and customs brokers. + +**Parameters** + +- `hs4`, `port_of_discharge`, `origin_country` *(string, optional)* - filters. +- `months` *(number, optional)* - default 12, maximum 60. +- `limit` *(number, optional)* - default 20, maximum 50. + +**Good for** + +- "Who are the top importers of office chairs through Savannah?" + +--- + +### `get_trade_trends` + +A time series of containers, TEUs, or estimated value by month, quarter, or year, split by up to two dimensions and filtered by any of them. By default it covers the 24 months ending with the current, incomplete month. History goes back to January 2022. + +**Parameters** + +- `measure` *(string, optional)* - `containers` (default), `teus`, or `estimated_value`. `estimated_value` is not available by lane: a request that also groups or filters by `pol`, `pol_country`, or `container_type` is rejected. +- `group_by` *(array, optional)* - up to two dimensions, such as `origin_country` or `pod`. +- `filters` *(object, optional)* - product, importer, origin, port, coast, carrier, state, and equipment filters. The `company` filter matches every name containing the text. +- `interval` *(string, optional)* - `month` (default), `quarter`, or `year`. +- `since`, `until` *(string, optional)* - `YYYY-MM`, inclusive. +- `top` *(number, optional)* - largest groups to keep, default 10, maximum 25. + +**Good for** + +- "Has Vietnam overtaken China for furniture imports?" + +--- + +### `get_trade_breakdown` + +Nested totals over one to three dimensions, such as region, country, and US port, with a grand total and subtotals at every level. By default it covers the 12 months ending with the current, incomplete month, so it is not 12 full months. For an annual total, set `since` and `until` to 12 full months. + +**Parameters** + +- `dims` *(array, required)* - one to three dimensions, outermost first. +- `measure`, `filters`, `since`, `until` - as for `get_trade_trends`. `estimated_value` is not available by lane: a request that also breaks down or filters by `pol`, `pol_country`, or `container_type` is rejected. +- `top` *(number, optional)* - largest children under each parent, default 10, maximum 20. + +**Good for** + +- "What share of seafood imports lands on each coast?" + +--- + +### `get_trade_data_coverage` + +What the data covers right now: where history starts, the latest month and whether it is incomplete, the last full month, and when the data was last built. No parameters. + +--- + ## Prompts reference Prompts are pre-built workflows that guide the AI through multi-step analysis. diff --git a/docs/openapi.json b/docs/openapi.json index 5f0fe3936..a5f7ec357 100644 --- a/docs/openapi.json +++ b/docs/openapi.json @@ -15712,1607 +15712,1886 @@ } } } - } - }, - "x-tagGroups": [ - { - "name": "End Points", - "tags": [ - "Shipments", - "Containers", - "Custom Field Definitions", - "Custom Field Options", - "Custom Fields", - "Tracking Requests", - "Webhooks", - "Webhook Notifications", - "Metro Areas", - "Documents", - "Email Submissions", - "Document Schemas", - "Search" - ] }, - { - "name": "Routing (Paid)", - "tags": [ - "Routing (Paid)" - ] - } - ], - "components": { - "schemas": { - "shipment": { - "title": "Shipment model", - "type": "object", - "x-examples": {}, - "description": "", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "relationships": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "type": { - "type": "string", - "enum": [ - "port", - "metro_area" - ] - }, - "id": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type", - "id" - ] - } + "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/trade_intel/meta": { + "get": { + "summary": "Get trade intelligence coverage", + "operationId": "get-trade-intel-meta", + "tags": [ + "Trade Intelligence" + ], + "description": "Returns the window the search index covers, how far back history goes, which month is still partial, and when the data was last built. Call it to learn the exact `since_month` and `facts_since_month` before quoting a period, and to confirm the account has trade intelligence enabled (a `403` means it does not).\n\nThe data is US import bill-of-lading records (US Customs vessel manifests), January 2022 onward, refreshed daily.", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelMeta" + }, + "example": { + "since_month": "2025-10-01", + "until_month_exclusive": "2026-10-01", + "months": 12, + "min_containers": 5, + "companies": 250000, + "hs_codes": 1200, + "facts_since_month": "2022-01-01", + "facts_until_exclusive": "2026-10-09", + "partial_month": "2026-10-01", + "mode": "incremental", + "facts_hash": "3f9c1a7e", + "refreshed_since": "2026-07-01", + "fact_rows": { + "lane_month": 1200000, + "company_month": 9800000, + "commodity_month": 6400000, + "hs_lane_month": 15000000 + }, + "volume_measure": "physical containers: distinct (container_number, imported_on)", + "built_at": "2026-10-08T06:12:44Z" } + } + } + }, + "400": { + "$ref": "#/components/responses/TradeIntelBadRequest" + }, + "401": { + "$ref": "#/components/responses/TradeIntelUnauthorized" + }, + "403": { + "$ref": "#/components/responses/TradeIntelNotEnabled" + }, + "429": { + "$ref": "#/components/responses/TradeIntelRateLimited" + }, + "502": { + "$ref": "#/components/responses/TradeIntelUnavailable" + }, + "504": { + "$ref": "#/components/responses/TradeIntelUnavailable" + } + } + } + }, + "/trade_intel/companies/search": { + "post": { + "summary": "Search importers", + "operationId": "post-trade-intel-companies-search", + "tags": [ + "Trade Intelligence" + ], + "description": "Find US importers by name, by what they import, or both, from US import bill-of-lading records (US Customs vessel manifests). `name` is a fuzzy match (partial or misspelled names are fine); `imports` is a semantic match on product descriptions. With neither, the largest importers matching the other filters are returned. Each result carries 12-full-month containers (split by consignee and notify party), TEUs, estimated value, and top ports, origins, carriers, and HS4 headings.\n\n**Results are ranked by match quality, not size.** A fuzzy search for a well-known retailer can return a small, similarly named company above the retailer itself; check `containers` before choosing a row. Companies are split by state and large importers use several names, so look through the whole list before concluding a company is small. Importers can also have their names withheld from manifests, so absent volume does not mean low volume.\n\nTake `company_name` from a result and pass it unchanged to `companies/profile` for monthly history.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelCompanySearchRequest" }, - "port_of_lading": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "type": { - "type": "string", - "enum": [ - "port" - ] - }, - "id": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type", - "id" - ] + "examples": { + "By name": { + "value": { + "name": "home depot" + } + }, + "By product and state": { + "value": { + "imports": "frozen shrimp", + "state": "FL", + "limit": 5 } } - }, - "containers": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "container" - ] - }, - "id": { - "type": "string", - "format": "uuid" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelCompanySearchResponse" + }, + "example": { + "index": { + "since_month": "2025-10-01", + "until_month_exclusive": "2026-10-01", + "months": 12, + "min_containers": 5, + "companies": 250000, + "hs_codes": 1200, + "facts_since_month": "2022-01-01", + "facts_until_exclusive": "2026-10-09", + "partial_month": "2026-10-01", + "mode": "incremental", + "facts_hash": "3f9c1a7e", + "refreshed_since": "2026-07-01", + "fact_rows": { + "lane_month": 1200000, + "company_month": 9800000, + "commodity_month": 6400000, + "hs_lane_month": 15000000 + }, + "volume_measure": "physical containers: distinct (container_number, imported_on)", + "built_at": "2026-10-08T06:12:44Z" + }, + "results": [ + { + "company_name": "EXAMPLE OUTDOOR SUPPLY", + "company_state": "GA", + "containers": 1240, + "containers_as_consignee": 1180, + "containers_as_notify_party": 60, + "teus": 2310.5, + "estimated_value": 48200000.0, + "reefer_share": 0.0, + "first_month": "2025-10-01", + "last_month": "2026-09-01", + "top_ports": [ + { + "name": "SAVANNAH", + "containers": 900 } - }, - "required": [ - "type", - "id" - ] + ], + "top_origins": [ + { + "name": "VIETNAM", + "containers": 700 + } + ], + "top_carriers": [ + { + "name": "MAERSK LINE", + "containers": 500 + } + ], + "top_commodities": [ + { + "hs4": "9401", + "description": "Seats (other than barber, dental, etc), and part", + "estimated_value": 31000000.0, + "containers": 800 + } + ], + "score": 0.97 } - } + ] } + } + } + }, + "400": { + "$ref": "#/components/responses/TradeIntelBadRequest" + }, + "401": { + "$ref": "#/components/responses/TradeIntelUnauthorized" + }, + "403": { + "$ref": "#/components/responses/TradeIntelNotEnabled" + }, + "422": { + "$ref": "#/components/responses/TradeIntelValidationFailed" + }, + "429": { + "$ref": "#/components/responses/TradeIntelRateLimited" + }, + "502": { + "$ref": "#/components/responses/TradeIntelUnavailable" + }, + "504": { + "$ref": "#/components/responses/TradeIntelUnavailable" + } + } + } + }, + "/trade_intel/companies/profile": { + "post": { + "summary": "Get an importer profile", + "operationId": "post-trade-intel-companies-profile", + "tags": [ + "Trade Intelligence" + ], + "description": "Import profile for one company from US import bill-of-lading records (US Customs vessel manifests): totals (containers as consignee and as notify party, TEUs), a monthly series, ports of discharge, origin countries, carriers, destination states, and HS4 headings with estimated value.\n\n`company_name` must be the exact normalized name returned by `companies/search`. The period is `months` full calendar months ending last month, so the current, partial month is excluded; use `months: 24` or more to compare a year against the same months a year earlier.\n\nVolume is physical containers, each counted once. Estimated values are modelled USD estimates, not declared customs values. A company's figures are a floor: related entities and alternative names are separate companies, and importers can have their names withheld from manifests. Carrier names are as spelled on manifests; merge variants before computing shares.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelCompanyProfileRequest" }, - "port_of_discharge": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "type": { - "type": "string", - "enum": [ - "port" - ] - }, - "id": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type", - "id" - ] + "examples": { + "One state, 12 months": { + "value": { + "company_name": "CATERPILLAR", + "company_state": "IL" } - } - }, - "pod_terminal": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "terminal" - ] - }, - "id": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type", - "id" - ], - "nullable": true + }, + "All states, two years": { + "value": { + "company_name": "CATERPILLAR", + "months": 24 } } - }, - "destination_terminal": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "terminal", - "rail_terminal" - ] - }, - "id": { - "type": "string", - "format": "uuid" - } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelCompanyProfile" + }, + "example": { + "company_name": "EXAMPLE OUTDOOR SUPPLY", + "company_state": null, + "since": "2025-10", + "until": "2026-09", + "found": true, + "totals": { + "containers": 1240, + "containers_as_consignee": 1180, + "containers_as_notify_party": 60, + "teus": 2310.5, + "states": [ + "GA", + "CA" + ] + }, + "monthly": [ + { + "month": "2025-10", + "containers": 95, + "teus": 180.0 }, - "required": [ - "type", - "id" - ], - "nullable": true - } + { + "month": "2025-11", + "containers": 110, + "teus": 205.5 + } + ], + "ports_of_discharge": [ + { + "name": "SAVANNAH", + "containers": 900, + "teus": 1700.0 + } + ], + "origin_countries": [ + { + "name": "VIETNAM", + "containers": 700, + "teus": 1300.0 + } + ], + "carriers": [ + { + "name": "MAERSK LINE", + "containers": 500, + "teus": 950.0 + } + ], + "destination_states": [ + { + "name": "GA", + "containers": 900, + "teus": 1700.0 + } + ], + "commodities_hs4": [ + { + "hs4": "9401", + "description": "Seats (other than barber, dental, etc), and part", + "containers": 800, + "estimated_value": 31000000.0 + } + ], + "notes": [ + "volume is physical containers, each counted once even when it appears on several bills", + "the period covers full calendar months ending last month" + ] } + } + } + }, + "400": { + "$ref": "#/components/responses/TradeIntelBadRequest" + }, + "401": { + "$ref": "#/components/responses/TradeIntelUnauthorized" + }, + "403": { + "$ref": "#/components/responses/TradeIntelNotEnabled" + }, + "422": { + "$ref": "#/components/responses/TradeIntelValidationFailed" + }, + "429": { + "$ref": "#/components/responses/TradeIntelRateLimited" + }, + "502": { + "$ref": "#/components/responses/TradeIntelUnavailable" + }, + "504": { + "$ref": "#/components/responses/TradeIntelUnavailable" + } + } + } + }, + "/trade_intel/commodities/search": { + "post": { + "summary": "Search commodities", + "operationId": "post-trade-intel-commodities-search", + "tags": [ + "Trade Intelligence" + ], + "description": "Resolve a product description, or an HS code prefix, to 4-digit HS headings. Each result carries the heading description, goods commonly declared under it on bills of lading, 12-month estimated import value, and the number of importing companies.\n\nHS heading descriptions are truncated and headings are broader than everyday product names (HS 0306 covers all frozen crustaceans, not only shrimp), so check `common_goods` before relying on a code. Feed `hs4` into `importers/top` or into the `hs4` filter of `trends` and `breakdown`.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelCommoditySearchRequest" }, - "line_tracking_stopped_by_user": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "user" - ] - }, - "id": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "type", - "id" - ], - "nullable": true + "examples": { + "By description": { + "value": { + "query": "laptops" } + }, + "By HS prefix": { + "value": { + "query": "8541" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelCommoditySearchResponse" + }, + "example": { + "results": [ + { + "hs4": "9401", + "description": "Seats (other than barber, dental, etc), and part", + "estimated_value": 9800000000.0, + "companies": 4200, + "common_goods": [ + "office chairs", + "sofas", + "car seats" + ], + "score": 0.91 + } + ] } } } }, - "attributes": { - "type": "object", - "properties": { - "bill_of_lading_number": { - "type": "string" - }, - "normalized_number": { - "type": "string", - "description": "The normalized version of the shipment number used for querying the carrier" + "400": { + "$ref": "#/components/responses/TradeIntelBadRequest" + }, + "401": { + "$ref": "#/components/responses/TradeIntelUnauthorized" + }, + "403": { + "$ref": "#/components/responses/TradeIntelNotEnabled" + }, + "422": { + "$ref": "#/components/responses/TradeIntelValidationFailed" + }, + "429": { + "$ref": "#/components/responses/TradeIntelRateLimited" + }, + "502": { + "$ref": "#/components/responses/TradeIntelUnavailable" + }, + "504": { + "$ref": "#/components/responses/TradeIntelUnavailable" + } + } + } + }, + "/trade_intel/importers/top": { + "post": { + "summary": "Rank importers", + "operationId": "post-trade-intel-importers-top", + "tags": [ + "Trade Intelligence" + ], + "description": "Rank US importers by physical containers over `months` full calendar months, optionally restricted to one HS4 heading, a port of discharge, or an origin country. Estimated value is included when `hs4` is given.\n\nThe ranking is built from US import bill-of-lading records (US Customs vessel manifests), so it lists consignees and notify parties: forwarders, NVOCCs, and customs brokers appear alongside cargo owners, and the response does not say which is which or give each company's total volume. Run `companies/search` on shortlisted names to get the consignee/notify split and totals. Large importers can be split across several names and states, and some have their names withheld from manifests, so absence from the ranking does not mean low volume.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelTopImportersRequest" }, - "ref_numbers": { - "type": "array", - "items": { - "type": "string", - "nullable": true + "examples": { + "By HS heading": { + "value": { + "hs4": "0306", + "months": 3 + } }, - "nullable": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "tags": { - "type": "array", - "items": { - "type": "string" + "By port, last month": { + "value": { + "months": 1, + "port_of_discharge": "savannah" + } } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelTopImporters" + }, + "example": { + "since": "2025-10", + "until": "2026-09", + "ranked_by": "containers", + "filters": { + "hs4": "9401" + }, + "notes": [ + "volume is physical containers, each counted once" + ], + "importers": [ + { + "company_name": "EXAMPLE OUTDOOR SUPPLY", + "states": [ + "GA", + "CA" + ], + "containers": 800, + "teus": 1500.0, + "estimated_value": 31000000.0 + } + ] + } + } + } + }, + "400": { + "$ref": "#/components/responses/TradeIntelBadRequest" + }, + "401": { + "$ref": "#/components/responses/TradeIntelUnauthorized" + }, + "403": { + "$ref": "#/components/responses/TradeIntelNotEnabled" + }, + "422": { + "$ref": "#/components/responses/TradeIntelValidationFailed" + }, + "429": { + "$ref": "#/components/responses/TradeIntelRateLimited" + }, + "502": { + "$ref": "#/components/responses/TradeIntelUnavailable" + }, + "504": { + "$ref": "#/components/responses/TradeIntelUnavailable" + } + } + } + }, + "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/trade_intel/trends": { + "post": { + "summary": "Get import trends", + "operationId": "post-trade-intel-trends", + "tags": [ + "Trade Intelligence" + ], + "description": "Monthly, quarterly, or yearly series of containers, TEUs, or estimated value, optionally split by up to two dimensions (keeping the top N groups) and filtered by any dimension. Volume is physical containers, each counted once.\n\n**Defaults.** Without `since` the series covers the 24 months ending with `until`, so it starts 23 months before `until`, but history is available back to January 2022 (`facts_since_month` in `meta`). Without `until` the series ends with the current, partial month, which is flagged `partial`; exclude it from comparisons and compare like periods (the same months a year earlier).\n\n**Filters.** `company` is a substring match, so `IKEA` also matches `IKEA SUPPLY AG`; for one company's own series use `companies/profile`. Countries, ports, and carriers use the manifests' spellings and carriers appear under variants, so filter with substrings and merge variants before computing shares. Market totals come from a series without a `company` filter; do not add volumes across HS codes or companies, since a container can carry several codes and companies can share containers.\n\nThe response names the fact table used in `fact` and lists counting caveats in `notes`.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelTrendsRequest" }, - "port_of_lading_locode": { - "type": "string", - "description": "UN/LOCODE", - "nullable": true - }, - "port_of_lading_name": { - "type": "string", - "nullable": true - }, - "port_of_discharge_locode": { - "type": "string", - "description": "UN/LOCODE", - "nullable": true - }, - "port_of_discharge_name": { - "type": "string", - "nullable": true - }, - "destination_locode": { - "type": "string", - "description": "UN/LOCODE", - "nullable": true - }, - "destination_name": { - "type": "string", - "nullable": true - }, - "shipping_line_scac": { - "type": "string" - }, - "shipping_line_name": { - "type": "string" - }, - "shipping_line_short_name": { - "type": "string" - }, - "customer_name": { - "type": "string", - "nullable": true - }, - "pod_vessel_name": { - "type": "string", - "nullable": true - }, - "pod_vessel_imo": { - "type": "string", - "nullable": true - }, - "pod_voyage_number": { - "type": "string", - "nullable": true - }, - "pol_etd_at": { - "type": "string", - "format": "date-time", - "description": "Estimated Time of Departure from the Port of Lading, as reported by the shipping line. Carrier dependent; may be null.", - "nullable": true - }, - "pol_atd_at": { - "type": "string", - "format": "date-time", - "description": "Actual Time of Departure from the Port of Lading. Populated after the vessel has departed the origin port.", - "nullable": true - }, - "pod_eta_at": { - "type": "string", - "format": "date-time", - "description": "Estimated Time of Arrival at the Port of Discharge.", - "nullable": true - }, - "pod_original_eta_at": { - "type": "string", - "format": "date-time", - "description": "Initial Estimated Time of Arrival at the Port of Discharge, as first reported by the shipping line.", - "nullable": true - }, - "pod_ata_at": { - "type": "string", - "format": "date-time", - "description": "Actual Time of Arrival at the Port of Discharge.", - "nullable": true - }, - "destination_eta_at": { - "type": "string", - "format": "date-time", - "description": "Estimated Time of Arrival at the shipment's destination, as reported by the shipping line. For inland (rail) moves, see also the container-level `ind_eta_at`, which is reported by the rail carrier. Corresponding timezone is `destination_timezone`.", - "nullable": true - }, - "destination_ata_at": { - "type": "string", - "format": "date-time", - "description": "Actual Time of Arrival at the shipment's destination, as reported by the shipping line. For inland (rail) moves, see also the container-level `ind_ata_at`, which is reported by the rail carrier. Corresponding timezone is `destination_timezone`.", - "nullable": true - }, - "pol_timezone": { - "type": "string", - "description": "IANA tz", - "nullable": true - }, - "pod_timezone": { - "type": "string", - "description": "IANA tz", - "nullable": true - }, - "destination_timezone": { - "type": "string", - "description": "IANA tz", - "nullable": true - }, - "line_tracking_last_attempted_at": { - "type": "string", - "format": "date-time", - "description": "When Terminal49 last tried to update the shipment status from the shipping line", - "nullable": true - }, - "line_tracking_last_succeeded_at": { - "type": "string", - "format": "date-time", - "description": "When Terminal49 last successfully updated the shipment status from the shipping line", - "nullable": true - }, - "line_tracking_stopped_at": { - "type": "string", - "format": "date-time", - "description": "When Terminal49 stopped checking at the shipping line", - "nullable": true - }, - "line_tracking_stopped_reason": { - "type": "string", - "enum": [ - "all_containers_terminated", - "past_arrival_window", - "past_full_out_window", - "no_updates_at_line", - "cancelled_by_user", - "booking_cancelled", - null - ], - "description": "The reason Terminal49 stopped checking", - "nullable": true - } - }, - "required": [ - "bill_of_lading_number" - ] - }, - "type": { - "type": "string", - "enum": [ - "shipment" - ] - }, - "links": { - "type": "object", - "properties": { - "self": { - "type": "string", - "format": "uri-reference", - "description": "Path of this resource, relative to the API host (for example `/v2/shipments/{id}`)." + "examples": { + "Quarterly by origin": { + "value": { + "filters": { + "hs4": "0306" + }, + "group_by": [ + "origin_country" + ], + "interval": "quarter", + "top": 5 + } + }, + "Carriers into a port since 2024": { + "value": { + "filters": { + "pod": "savannah" + }, + "group_by": [ + "carrier" + ], + "since": "2024-01" + } + }, + "One company's value by chapter": { + "value": { + "filters": { + "company": "CATERPILLAR" + }, + "group_by": [ + "hs2" + ], + "measure": "estimated_value" + } + } } - }, - "required": [ - "self" - ] + } } }, - "required": [ - "id", - "type", - "attributes", - "relationships", - "links" - ] - }, - "meta": { - "title": "meta", - "type": "object", - "properties": { - "size": { - "type": "integer" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelTrends" + }, + "example": { + "measure": "containers", + "interval": "quarter", + "since": "2026-01", + "until": "2026-06", + "group_by": [ + "origin_country" + ], + "filters": { + "hs4": "9401" + }, + "fact": "hs_lane_month", + "notes": [ + "volume is physical containers, each counted once" + ], + "series": [ + { + "period": "2026-01", + "origin_country": "VIETNAM", + "value": 12000 + }, + { + "period": "2026-01", + "origin_country": "PEOPLES REP OF CHINA", + "value": 11000 + }, + { + "period": "2026-04", + "origin_country": "VIETNAM", + "value": 12500 + }, + { + "period": "2026-04", + "origin_country": "PEOPLES REP OF CHINA", + "value": 10800 + } + ] + } + } + } }, - "total": { - "type": "integer" - } - } - }, - "link-self": { - "title": "link", - "type": "object", - "properties": { - "self": { - "type": "string", - "description": "Absolute URL of the request, including its query string as sent. On a create, this is the collection URL the request was posted to, not the URL of the new resource." - } - } - }, - "links": { - "title": "links", - "type": "object", - "properties": { - "self": { - "type": "string" + "400": { + "$ref": "#/components/responses/TradeIntelBadRequest" }, - "current": { - "type": "string" + "401": { + "$ref": "#/components/responses/TradeIntelUnauthorized" }, - "first": { - "type": "string" + "403": { + "$ref": "#/components/responses/TradeIntelNotEnabled" }, - "prev": { - "type": "string" + "422": { + "$ref": "#/components/responses/TradeIntelValidationFailed" }, - "next": { - "type": "string" + "429": { + "$ref": "#/components/responses/TradeIntelRateLimited" }, - "last": { - "type": "string" + "502": { + "$ref": "#/components/responses/TradeIntelUnavailable" + }, + "504": { + "$ref": "#/components/responses/TradeIntelUnavailable" + } + } + } + }, + "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/trade_intel/breakdown": { + "post": { + "summary": "Get an import breakdown", + "operationId": "post-trade-intel-breakdown", + "tags": [ + "Trade Intelligence" + ], + "description": "Nested totals over a dimension hierarchy (for example region > country > port, or HS2 > HS4), with a grand total at level 0 and subtotals at every level, keeping the top N children under each parent. Volume is physical containers, each counted once; estimated value is a modelled USD estimate.\n\nDefaults to the 12 months ending with the current, partial month (`since` is 11 months before `until`); set `since` and `until` to full months for comparisons. The `company` filter is a substring match. Countries, ports, and carriers use the manifests' spellings, so filter with substrings and merge carrier variants before computing shares. Do not add values across HS codes or companies; use a breakdown without a `company` filter for market totals.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelBreakdownRequest" + }, + "examples": { + "Region, country, port": { + "value": { + "dims": [ + "origin_region", + "origin_country", + "pod" + ], + "filters": { + "hs2": "03" + }, + "top": 5 + } + }, + "Value by HS chapter and heading": { + "value": { + "dims": [ + "hs2", + "hs4" + ], + "filters": { + "pod": "savannah" + }, + "measure": "estimated_value" + } + } + } + } } }, - "description": "Pagination links. Each value is an absolute URL. `self` repeats the request URL as sent, including its query string and its encoding. `current`, `first`, `prev`, `next`, and `last` repeat the request's query parameters, with `page[number]` and `page[size]` in unencoded brackets." - }, - "container": { - "title": "Container model", - "type": "object", - "x-examples": { - "Example Container": { - "id": "ff77a822-23a7-4ccd-95ca-g534c071baaf3", - "type": "container", - "attributes": { - "number": "KOCU4959010", - "ref_numbers": [ - "REF-1", - "REF-2" - ], - "seal_number": "210084213", - "created_at": "2021-10-18T09:52:33Z", - "equipment_type": "dry", - "equipment_length": 40, - "equipment_height": "high_cube", - "weight_in_lbs": 20210, - "fees_at_pod_terminal": [], - "holds_at_pod_terminal": [], - "pickup_lfd": "2022-01-21T08:00:00Z", - "pickup_appointment_at": null, - "pod_full_out_chassis_number": "APMZ418805", - "location_at_pod_terminal": "Delivered 02/11/2022 14:18", - "availability_known": true, - "available_for_pickup": false, - "pod_arrived_at": "2022-01-03T10:30:00Z", - "pod_discharged_at": "2022-01-08T09:15:00Z", - "final_destination_full_out_at": null, - "pod_full_out_at": "2022-02-11T22:18:00Z", - "empty_terminated_at": null, - "terminal_checked_at": "2022-02-11T22:45:32Z", - "pod_rail_carrier_scac": "UPRR", - "ind_rail_carrier_scac": "CSXT", - "pod_timezone": "America/Los_Angeles", - "final_destination_timezone": null, - "empty_terminated_timezone": null, - "pod_last_tracking_request_at": "2022-02-11T22:40:00Z", - "shipment_last_tracking_request_at": "2022-02-11T22:40:00Z", - "pod_rail_loaded_at": "2022-02-11T22:18:00Z", - "pod_rail_departed_at": "2022-02-11T23:30:00Z", - "ind_eta_at": null, - "ind_ata_at": "2022-02-15T01:12:00Z", - "ind_rail_unloaded_at": "2022-02-15T07:54:00Z", - "ind_facility_lfd_on": null, - "import_deadlines": { - "pickup_lfd_terminal": null, - "pickup_lfd_rail": "2022-02-20T08:00:00Z", - "pickup_lfd_line": "2022-02-25T08:00:00Z" - }, - "current_status": "delivered" - }, - "relationships": { - "shipment": { - "data": { - "id": "x92acf88-c263-43ddf-b005-aca2a32d47f1", - "type": "shipment" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelBreakdown" + }, + "example": { + "measure": "containers", + "dims": [ + "pod_coast", + "pod" + ], + "filters": { + "hs4": "9401" + }, + "since": "2026-01", + "until": "2026-06", + "fact": "hs_lane_month", + "notes": [ + "volume is physical containers, each counted once" + ], + "rows": [ + { + "level": 0, + "value": 60000 + }, + { + "level": 1, + "pod_coast": "WEST", + "value": 32000 + }, + { + "level": 2, + "pod_coast": "WEST", + "pod": "LOS ANGELES", + "value": 18000 + }, + { + "level": 2, + "pod_coast": "WEST", + "pod": "LONG BEACH", + "value": 14000 + }, + { + "level": 1, + "pod_coast": "EAST", + "value": 28000 + } + ] } + } + } + }, + "400": { + "$ref": "#/components/responses/TradeIntelBadRequest" + }, + "401": { + "$ref": "#/components/responses/TradeIntelUnauthorized" + }, + "403": { + "$ref": "#/components/responses/TradeIntelNotEnabled" + }, + "422": { + "$ref": "#/components/responses/TradeIntelValidationFailed" + }, + "429": { + "$ref": "#/components/responses/TradeIntelRateLimited" + }, + "502": { + "$ref": "#/components/responses/TradeIntelUnavailable" + }, + "504": { + "$ref": "#/components/responses/TradeIntelUnavailable" + } + } + } + }, + "/trade_intel/containers/lookup": { + "post": { + "summary": "Look up a container's import record", + "operationId": "post-trade-intel-containers-lookup", + "tags": [ + "Trade Intelligence" + ], + "description": "The most recent US import of a container from US import bill-of-lading records (US Customs vessel manifests): the bills of lading it travelled under (carrier, vessel, voyage, ports, destination) and the commodity lines on those bills with consignee, shipper, and notify party.\n\nOnly the most recent US import per container is on record; earlier trips are not returned. A malformed number returns `200` with `found: false` and an `error`; a well-formed number with no record returns `found: false`. Commodity lines are capped at 200 (`commodities_truncated`). This lookup reads record-level data and can take several seconds.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelContainerLookupRequest" }, - "pod_terminal": { - "data": { - "id": "x551cac7-aff5-40a6-9c63-49facf19cc3df", - "type": "terminal" + "examples": { + "Container number": { + "value": { + "container_number": "MSCU1234567" + } } - }, - "pickup_facility": { - "data": { - "id": "d7d8d314-b02b-4caa-b04f-d3d4726f4107", - "type": "terminal" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelContainerLookup" + }, + "example": { + "container_number": "MSCU1234567", + "found": true, + "latest_import": { + "container_number": "MSCU1234567", + "imported_on": "2026-08-14", + "scac": "MSCU", + "vessel_name": "EXAMPLE VESSEL", + "port_of_discharge_name": "LOS ANGELES" + }, + "bills_of_lading": [ + { + "imported_on": "2026-08-14", + "master_bill_of_lading_number": "MEDUW9559867", + "house_bill_of_lading_number": null, + "scac": "MSCU", + "scac_name": "MEDITERRANEAN SHIPPING COMPANY", + "vessel_name": "EXAMPLE VESSEL", + "voyage_number": "026N", + "port_of_lading_name": "NINGBO", + "port_of_lading_country": "PEOPLES REP OF CHINA", + "port_of_discharge_name": "LOS ANGELES", + "destination_city": "ONTARIO", + "destination_state": "CA", + "ultimate_origin_country": "PEOPLES REP OF CHINA", + "container_type_short_description": "40 HC", + "container_teu": 2.0, + "container_reefer_flag": false + } + ], + "commodities": [ + { + "imported_on": "2026-08-14", + "master_bill_of_lading_number": "MEDUW9559867", + "house_bill_of_lading_number": null, + "consignee": "EXAMPLE OUTDOOR SUPPLY", + "consignee_city": "ONTARIO", + "consignee_state": "CA", + "notify_party": "EXAMPLE OUTDOOR SUPPLY", + "shipper": "EXAMPLE FURNITURE CO LTD", + "shipper_country": "PEOPLES REP OF CHINA", + "commodity_short_description": "OFFICE CHAIRS", + "commodity_hs_code_6": "940130", + "commodity_hs_code_6_description": "Swivel seats with variable height adjustment", + "commodity_quantity": 420.0, + "commodity_quantity_uom": "CTN", + "commodity_estimated_value": 38000.0, + "bol_metric_tons": 8.2, + "bol_teus": 2.0, + "nvocc_scac": null, + "nvocc_scac_description": null + } + ], + "commodities_truncated": false, + "note": "only the most recent US import of this container is on record; earlier imports are not included" } + } + } + }, + "400": { + "$ref": "#/components/responses/TradeIntelBadRequest" + }, + "401": { + "$ref": "#/components/responses/TradeIntelUnauthorized" + }, + "403": { + "$ref": "#/components/responses/TradeIntelNotEnabled" + }, + "422": { + "$ref": "#/components/responses/TradeIntelValidationFailed" + }, + "429": { + "$ref": "#/components/responses/TradeIntelRateLimited" + }, + "502": { + "$ref": "#/components/responses/TradeIntelUnavailable" + }, + "504": { + "$ref": "#/components/responses/TradeIntelUnavailable" + } + } + } + }, + "/trade_intel/bills_of_lading/lookup": { + "post": { + "summary": "Look up a bill of lading", + "operationId": "post-trade-intel-bills-of-lading-lookup", + "tags": [ + "Trade Intelligence" + ], + "description": "The import record for a master or house bill of lading from US import bill-of-lading records (US Customs vessel manifests): the containers that moved under it and the commodity lines with consignee, shipper, and notify party.\n\nThe search covers the last `months` months (default 12). Up to 50 matching bill records are used (`bills_truncated`), and containers and commodity lines are each capped at 200 (`containers_truncated`, `commodities_truncated`). When nothing matches, `found` is `false` and `searched_since` tells you how far back the search went. This lookup reads record-level data and can take several seconds.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelBillOfLadingLookupRequest" }, - "transport_events": { - "data": [ - { - "id": "xecfe2d1-c498-4022-a9f8-ec56722e1215", - "type": "transport_event" - }, - { - "id": "2900a9b8-d9e2-4696-abd86-4a767b885d23", - "type": "transport_event" - }, - { - "id": "5ad0dce1-x78e4-464d-af5f-a36190428a2c", - "type": "transport_event" - }, - { - "id": "876575d5-5ede-40d6-a093-c3a4cfcxaa1c7", - "type": "transport_event" - }, - { - "id": "dc2a9d8f-75e6-43xa5-a04e-58458495f08c", - "type": "transport_event" - }, - { - "id": "50xd2ea1-01ac-473d-8a08-3b5d77d2b793", - "type": "transport_event" - }, - { - "id": "9d1f55xe3-6758-4be7-872a-30451ddd957e", - "type": "transport_event" + "examples": { + "Master bill": { + "value": { + "bol_number": "MEDUW9559867" } - ] - }, - "raw_events": { - "data": [ - { - "id": "38084a1d-a2eb-434e-81ac3-606c89a61c4b", - "type": "raw_event" - }, - { - "id": "53680df3-93d5-4385-86c5-a33ee41b4c1f", - "type": "raw_event" - }, - { - "id": "7d9cdf70-51e8-4b75-a8229-f5d691495ab6", - "type": "raw_event" - }, - { - "id": "e62d41ac-8738-42e8-b582-35ef28ae88e2", - "type": "raw_event" - }, - { - "id": "1209172b-acd8-4ce0-8821-dbc4934208b3", - "type": "raw_event" - }, - { - "id": "4265ea5f-2b9a-436f-98fa-803d8ed49acb2", - "type": "raw_event" - }, - { - "id": "c3cb2eb7-6c0a-4db8-8742-517b97b175d5", - "type": "raw_event" - }, - { - "id": "b1959f36-a218-4b6e-863a9-2e0b4ad5159c", - "type": "raw_event" + }, + "Longer window": { + "value": { + "bol_number": "MEDUW9559867", + "months": 18 } - ] + } } } } }, - "description": "Represents the equipment during a specific journey.", - "properties": { - "id": { - "type": "string", - "format": "uuid" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelBillOfLadingLookup" + }, + "example": { + "bol_number": "MEDUW9559867", + "found": true, + "searched_since": "2025-10-01", + "bills_matched": 1, + "bills_truncated": false, + "containers": [ + { + "container_number": "MSCU1234567", + "imported_on": "2026-08-14", + "scac": "MSCU", + "vessel_name": "EXAMPLE VESSEL", + "voyage_number": "026N", + "port_of_lading_name": "NINGBO", + "port_of_discharge_name": "LOS ANGELES", + "destination_city": "ONTARIO", + "destination_state": "CA", + "container_type_short_description": "40 HC", + "container_teu": 2.0 + } + ], + "containers_truncated": false, + "commodities": [ + { + "imported_on": "2026-08-14", + "master_bill_of_lading_number": "MEDUW9559867", + "house_bill_of_lading_number": null, + "consignee": "EXAMPLE OUTDOOR SUPPLY", + "consignee_city": "ONTARIO", + "consignee_state": "CA", + "notify_party": "EXAMPLE OUTDOOR SUPPLY", + "shipper": "EXAMPLE FURNITURE CO LTD", + "shipper_country": "PEOPLES REP OF CHINA", + "commodity_short_description": "OFFICE CHAIRS", + "commodity_hs_code_6": "940130", + "commodity_hs_code_6_description": "Swivel seats with variable height adjustment", + "commodity_quantity": 420.0, + "commodity_quantity_uom": "CTN", + "commodity_estimated_value": 38000.0, + "bol_metric_tons": 8.2, + "bol_teus": 2.0, + "nvocc_scac": null, + "nvocc_scac_description": null + } + ], + "commodities_truncated": false + } + } + } }, - "type": { - "type": "string", - "enum": [ - "container" - ] + "400": { + "$ref": "#/components/responses/TradeIntelBadRequest" + }, + "401": { + "$ref": "#/components/responses/TradeIntelUnauthorized" + }, + "403": { + "$ref": "#/components/responses/TradeIntelNotEnabled" + }, + "422": { + "$ref": "#/components/responses/TradeIntelValidationFailed" + }, + "429": { + "$ref": "#/components/responses/TradeIntelRateLimited" + }, + "502": { + "$ref": "#/components/responses/TradeIntelUnavailable" + }, + "504": { + "$ref": "#/components/responses/TradeIntelUnavailable" + } + } + } + } + }, + "x-tagGroups": [ + { + "name": "End Points", + "tags": [ + "Shipments", + "Containers", + "Custom Field Definitions", + "Custom Field Options", + "Custom Fields", + "Tracking Requests", + "Webhooks", + "Webhook Notifications", + "Metro Areas", + "Documents", + "Email Submissions", + "Document Schemas", + "Search" + ] + }, + { + "name": "Routing (Paid)", + "tags": [ + "Routing (Paid)" + ] + }, + { + "name": "Trade Intelligence", + "tags": [ + "Trade Intelligence" + ] + } + ], + "components": { + "schemas": { + "shipment": { + "title": "Shipment model", + "type": "object", + "x-examples": {}, + "description": "", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "relationships": { + "type": "object", + "properties": { + "destination": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": [ + "port", + "metro_area" + ] + }, + "id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "id" + ] + } + } + }, + "port_of_lading": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": [ + "port" + ] + }, + "id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "id" + ] + } + } + }, + "containers": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "container" + ] + }, + "id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "id" + ] + } + } + } + }, + "port_of_discharge": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": [ + "port" + ] + }, + "id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "id" + ] + } + } + }, + "pod_terminal": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "terminal" + ] + }, + "id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "id" + ], + "nullable": true + } + } + }, + "destination_terminal": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "terminal", + "rail_terminal" + ] + }, + "id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "id" + ], + "nullable": true + } + } + }, + "line_tracking_stopped_by_user": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "user" + ] + }, + "id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "id" + ], + "nullable": true + } + } + } + } }, "attributes": { "type": "object", "properties": { - "number": { + "bill_of_lading_number": { "type": "string" }, + "normalized_number": { + "type": "string", + "description": "The normalized version of the shipment number used for querying the carrier" + }, "ref_numbers": { "type": "array", "items": { - "type": "string" - } + "type": "string", + "nullable": true + }, + "nullable": true }, - "equipment_type": { + "created_at": { "type": "string", - "enum": [ - "dry", - "reefer", - "open top", - "flat rack", - "bulk", - "tank", - null - ], - "nullable": true + "format": "date-time" }, - "equipment_length": { - "type": "integer", - "enum": [ - null, - 10, - 20, - 40, - 45 - ], - "nullable": true + "tags": { + "type": "array", + "items": { + "type": "string" + } }, - "equipment_height": { + "port_of_lading_locode": { "type": "string", - "enum": [ - "standard", - "high_cube", - null - ], + "description": "UN/LOCODE", "nullable": true }, - "weight_in_lbs": { - "type": "number", + "port_of_lading_name": { + "type": "string", "nullable": true }, - "created_at": { + "port_of_discharge_locode": { "type": "string", - "format": "date-time" + "description": "UN/LOCODE", + "nullable": true }, - "seal_number": { + "port_of_discharge_name": { "type": "string", "nullable": true }, - "pickup_lfd": { + "destination_locode": { "type": "string", - "format": "date-time", - "description": "Coalesces `import_deadlines` values giving preference to `pickup_lfd_line`", + "description": "UN/LOCODE", "nullable": true }, - "pickup_appointment_at": { + "destination_name": { "type": "string", - "format": "date-time", - "description": "When available the pickup appointment time at the terminal is returned.", "nullable": true }, - "availability_known": { - "type": "boolean", - "description": "Whether Terminal 49 is receiving availability status from the terminal." - }, - "available_for_pickup": { - "type": "boolean", - "description": "If availability_known is true, then whether container is available to be picked up at terminal.", - "nullable": true + "shipping_line_scac": { + "type": "string" }, - "pod_arrived_at": { - "type": "string", - "format": "date-time", - "description": "Time the vessel arrived at the POD", - "nullable": true + "shipping_line_name": { + "type": "string" }, - "pod_discharged_at": { - "type": "string", - "format": "date-time", - "description": "Discharge time at the port of discharge", - "nullable": true + "shipping_line_short_name": { + "type": "string" }, - "pod_full_out_at": { + "customer_name": { "type": "string", - "format": "date-time", - "description": "Full Out time at port of discharge. Null for inland moves.", "nullable": true }, - "terminal_checked_at": { + "pod_vessel_name": { "type": "string", - "format": "date-time", - "description": "When the terminal was last checked.", "nullable": true }, - "pod_full_out_chassis_number": { + "pod_vessel_imo": { "type": "string", - "description": "The chassis number used when container was picked up at POD (if available)", "nullable": true }, - "location_at_pod_terminal": { + "pod_voyage_number": { "type": "string", - "description": "Location at port of discharge terminal", "nullable": true }, - "final_destination_full_out_at": { + "pol_etd_at": { "type": "string", "format": "date-time", - "description": "Pickup time at final destination for inland moves.", + "description": "Estimated Time of Departure from the Port of Lading, as reported by the shipping line. Carrier dependent; may be null.", "nullable": true }, - "empty_terminated_at": { + "pol_atd_at": { "type": "string", "format": "date-time", - "description": "Time empty container was returned.", - "nullable": true - }, - "holds_at_pod_terminal": { - "type": "array", - "items": { - "$ref": "#/components/schemas/terminal_hold" - } - }, - "fees_at_pod_terminal": { - "type": "array", - "items": { - "$ref": "#/components/schemas/terminal_fee" - } - }, - "pod_timezone": { - "type": "string", - "description": "IANA tz. Applies to attributes pod_arrived_at, pod_discharged_at, pickup_appointment_at, pod_full_out_at.", - "nullable": true - }, - "final_destination_timezone": { - "type": "string", - "description": "IANA tz. Applies to attribute final_destination_full_out_at.", + "description": "Actual Time of Departure from the Port of Lading. Populated after the vessel has departed the origin port.", "nullable": true }, - "empty_terminated_timezone": { + "pod_eta_at": { "type": "string", - "description": "IANA tz. Applies to attribute empty_terminated_at.", + "format": "date-time", + "description": "Estimated Time of Arrival at the Port of Discharge.", "nullable": true }, - "pod_rail_carrier_scac": { + "pod_original_eta_at": { "type": "string", - "description": "The SCAC of the rail carrier for the pickup leg of the container's journey.(BETA)", + "format": "date-time", + "description": "Initial Estimated Time of Arrival at the Port of Discharge, as first reported by the shipping line.", "nullable": true }, - "ind_rail_carrier_scac": { + "pod_ata_at": { "type": "string", - "description": "The SCAC of the rail carrier for the delivery leg of the container's journey.(BETA)", + "format": "date-time", + "description": "Actual Time of Arrival at the Port of Discharge.", "nullable": true }, - "pod_last_tracking_request_at": { + "destination_eta_at": { "type": "string", "format": "date-time", - "description": "Timestamp of the last time Terminal49 requested container tracking updates directly from the port-of-discharge terminal. Compare with `shipment_last_tracking_request_at`, which tracks shipment-level requests to the shipping line.", + "description": "Estimated Time of Arrival at the shipment's destination, as reported by the shipping line. For inland (rail) moves, see also the container-level `ind_eta_at`, which is reported by the rail carrier. Corresponding timezone is `destination_timezone`.", "nullable": true }, - "shipment_last_tracking_request_at": { + "destination_ata_at": { "type": "string", "format": "date-time", - "description": "Timestamp of the last time Terminal49 requested shipment-level tracking updates from the shipping line for this container's shipment. Compare with `pod_last_tracking_request_at`, which tracks container-level requests made directly to the terminal.", + "description": "Actual Time of Arrival at the shipment's destination, as reported by the shipping line. For inland (rail) moves, see also the container-level `ind_ata_at`, which is reported by the rail carrier. Corresponding timezone is `destination_timezone`.", "nullable": true }, - "pod_rail_loaded_at": { + "pol_timezone": { "type": "string", - "format": "date-time", + "description": "IANA tz", "nullable": true }, - "pod_rail_departed_at": { + "pod_timezone": { "type": "string", - "format": "date-time", + "description": "IANA tz", "nullable": true }, - "ind_eta_at": { + "destination_timezone": { "type": "string", - "format": "date-time", - "description": "Estimated Time of Arrival at the inland destination, as reported by the rail carrier. For the shipping-line view at the shipment's destination, see `destination_eta_at` on the shipment. Corresponding timezone is `final_destination_timezone`.", + "description": "IANA tz", "nullable": true }, - "ind_ata_at": { + "line_tracking_last_attempted_at": { "type": "string", "format": "date-time", - "description": "Actual Time of Arrival at the inland destination, as reported by the rail carrier. For the shipping-line view at the shipment's destination, see `destination_ata_at` on the shipment. Corresponding timezone is `final_destination_timezone`.", + "description": "When Terminal49 last tried to update the shipment status from the shipping line", "nullable": true }, - "ind_rail_unloaded_at": { + "line_tracking_last_succeeded_at": { "type": "string", "format": "date-time", - "description": "Time when the container is unloaded from rail at the inland destination.", + "description": "When Terminal49 last successfully updated the shipment status from the shipping line", "nullable": true }, - "ind_facility_lfd_on": { + "line_tracking_stopped_at": { "type": "string", "format": "date-time", - "description": "Please use `import_deadlines.pickup_lfd_rail`", - "nullable": true, - "deprecated": true - }, - "import_deadlines": { - "type": "object", - "description": "Import pickup deadlines for the container", - "properties": { - "pickup_lfd_terminal": { - "type": "string", - "format": "date-time", - "description": "The last free day for pickup before demmurage accrues. Corresponding timezone is pod_timezone.", - "nullable": true - }, - "pickup_lfd_rail": { - "type": "string", - "format": "date-time", - "description": "The last free day for pickup at the inland destination, as reported by the rail carrier. Corresponding timezone is final_destination_timezone. Subscribe to `container.pickup_lfd_rail.changed` to be notified of updates.", - "nullable": true - }, - "pickup_lfd_line": { - "type": "string", - "format": "date-time", - "description": "The last free day as reported by the shipping line (carrier dependent). Corresponding timezone is final_destination_timezone or pod_timezone. Preferred source for the coalesced top-level `pickup_lfd` field.", - "nullable": true - } - }, + "description": "When Terminal49 stopped checking at the shipping line", "nullable": true }, - "current_status": { + "line_tracking_stopped_reason": { "type": "string", - "description": "The current status of the container in its journey. [Read guide to learn more.](/api-docs/in-depth-guides/container-statuses)", "enum": [ - "new", - "on_ship", - "available", - "not_available", - "grounded", - "on_rail", - "picked_up", - "off_dock", - "delivered", - "dropped", - "loaded", - "empty_returned", - "awaiting_inland_transfer" - ] + "all_containers_terminated", + "past_arrival_window", + "past_full_out_window", + "no_updates_at_line", + "cancelled_by_user", + "booking_cancelled", + null + ], + "description": "The reason Terminal49 stopped checking", + "nullable": true } - } + }, + "required": [ + "bill_of_lading_number" + ] }, - "relationships": { + "type": { + "type": "string", + "enum": [ + "shipment" + ] + }, + "links": { "type": "object", "properties": { - "shipment": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "shipment" - ] - } - }, - "nullable": true - } - } - }, - "pickup_facility": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "terminal" - ] - } - }, - "nullable": true - } - } - }, - "pod_terminal": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "terminal" - ] - } - }, - "nullable": true - } - } - }, - "transport_events": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "transport_event" - ] - } - } - } - } - } - }, - "raw_events": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "raw_event" - ] - } - } - } - } - } + "self": { + "type": "string", + "format": "uri-reference", + "description": "Path of this resource, relative to the API host (for example `/v2/shipments/{id}`)." } - } + }, + "required": [ + "self" + ] } }, "required": [ "id", "type", - "attributes" + "attributes", + "relationships", + "links" ] }, - "port": { - "title": "Port model", + "meta": { + "title": "meta", "type": "object", "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "attributes": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "code": { - "type": "string", - "description": "UN/LOCODE" - }, - "state_abbr": { - "type": "string", - "x-stoplight": { - "id": "jixah1a0q3exs" - }, - "nullable": true - }, - "city": { - "type": "string", - "x-stoplight": { - "id": "657ij4boc7kyv" - }, - "nullable": true - }, - "country_code": { - "type": "string", - "description": "2 digit country code" - }, - "time_zone": { - "type": "string", - "description": "IANA tz" - }, - "latitude": { - "type": "string", - "x-stoplight": { - "id": "480os7a90z6kk" - }, - "nullable": true, - "description": "Latitude in decimal degrees, serialized as a decimal string (for example `\"22.57489971\"`).", - "example": "22.57489971" - }, - "longitude": { - "type": "string", - "x-stoplight": { - "id": "nfdetqgx5p1yv" - }, - "nullable": true, - "description": "Longitude in decimal degrees, serialized as a decimal string (for example `\"22.57489971\"`).", - "example": "114.27769989" - } - } + "size": { + "type": "integer" }, - "type": { - "type": "string", - "enum": [ - "port" - ] + "total": { + "type": "integer" } - }, - "required": [ - "id", - "type" - ] + } }, - "shipping_line": { - "title": "Shipping line model", + "link-self": { + "title": "link", "type": "object", "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "attributes": { - "type": "object", - "required": [ - "scac", - "name", - "alternative_scacs", - "short_name", - "bill_of_lading_tracking_support", - "booking_number_tracking_support", - "container_number_tracking_support" - ], - "properties": { - "scac": { - "type": "string", - "minLength": 4, - "maxLength": 4 - }, - "name": { - "type": "string" - }, - "alternative_scacs": { - "type": "array", - "x-stoplight": { - "id": "jwf70hnip0xwb" - }, - "description": "Additional SCACs which will be accepted in tracking requests", - "items": { - "x-stoplight": { - "id": "nrqnwg5y2u0ni" - }, - "type": "string", - "minLength": 4, - "maxLength": 4 - } - }, - "short_name": { - "type": "string" - }, - "bill_of_lading_tracking_support": { - "type": "boolean" - }, - "booking_number_tracking_support": { - "type": "boolean" - }, - "container_number_tracking_support": { - "type": "boolean" - } - } - }, - "type": { + "self": { "type": "string", - "enum": [ - "shipping_line" - ] + "description": "Absolute URL of the request, including its query string as sent. On a create, this is the collection URL the request was posted to, not the URL of the new resource." } - }, - "required": [ - "id", - "attributes", - "type" - ] + } }, - "account": { - "title": "Account model", + "links": { + "title": "links", "type": "object", "properties": { - "id": { - "type": "string", - "format": "uuid" + "self": { + "type": "string" }, - "type": { - "type": "string", - "enum": [ - "account" - ] + "current": { + "type": "string" }, - "attributes": { - "type": "object", - "required": [ - "company_name" - ], - "properties": { - "company_name": { - "type": "string" - } - } + "first": { + "type": "string" + }, + "prev": { + "type": "string" + }, + "next": { + "type": "string" + }, + "last": { + "type": "string" } }, - "required": [ - "id", - "type", - "attributes" - ], - "x-examples": {} + "description": "Pagination links. Each value is an absolute URL. `self` repeats the request URL as sent, including its query string and its encoding. `current`, `first`, `prev`, `next`, and `last` repeat the request's query parameters, with `page[number]` and `page[size]` in unencoded brackets." }, - "error": { - "title": "Error model", + "container": { + "title": "Container model", "type": "object", - "properties": { - "detail": { - "type": "string", - "nullable": true - }, - "title": { - "type": "string", - "nullable": true - }, - "source": { - "type": "object", - "nullable": true, - "properties": { - "pointer": { - "type": "string", - "nullable": true + "x-examples": { + "Example Container": { + "id": "ff77a822-23a7-4ccd-95ca-g534c071baaf3", + "type": "container", + "attributes": { + "number": "KOCU4959010", + "ref_numbers": [ + "REF-1", + "REF-2" + ], + "seal_number": "210084213", + "created_at": "2021-10-18T09:52:33Z", + "equipment_type": "dry", + "equipment_length": 40, + "equipment_height": "high_cube", + "weight_in_lbs": 20210, + "fees_at_pod_terminal": [], + "holds_at_pod_terminal": [], + "pickup_lfd": "2022-01-21T08:00:00Z", + "pickup_appointment_at": null, + "pod_full_out_chassis_number": "APMZ418805", + "location_at_pod_terminal": "Delivered 02/11/2022 14:18", + "availability_known": true, + "available_for_pickup": false, + "pod_arrived_at": "2022-01-03T10:30:00Z", + "pod_discharged_at": "2022-01-08T09:15:00Z", + "final_destination_full_out_at": null, + "pod_full_out_at": "2022-02-11T22:18:00Z", + "empty_terminated_at": null, + "terminal_checked_at": "2022-02-11T22:45:32Z", + "pod_rail_carrier_scac": "UPRR", + "ind_rail_carrier_scac": "CSXT", + "pod_timezone": "America/Los_Angeles", + "final_destination_timezone": null, + "empty_terminated_timezone": null, + "pod_last_tracking_request_at": "2022-02-11T22:40:00Z", + "shipment_last_tracking_request_at": "2022-02-11T22:40:00Z", + "pod_rail_loaded_at": "2022-02-11T22:18:00Z", + "pod_rail_departed_at": "2022-02-11T23:30:00Z", + "ind_eta_at": null, + "ind_ata_at": "2022-02-15T01:12:00Z", + "ind_rail_unloaded_at": "2022-02-15T07:54:00Z", + "ind_facility_lfd_on": null, + "import_deadlines": { + "pickup_lfd_terminal": null, + "pickup_lfd_rail": "2022-02-20T08:00:00Z", + "pickup_lfd_line": "2022-02-25T08:00:00Z" }, - "parameter": { - "type": "string", - "nullable": true + "current_status": "delivered" + }, + "relationships": { + "shipment": { + "data": { + "id": "x92acf88-c263-43ddf-b005-aca2a32d47f1", + "type": "shipment" + } + }, + "pod_terminal": { + "data": { + "id": "x551cac7-aff5-40a6-9c63-49facf19cc3df", + "type": "terminal" + } + }, + "pickup_facility": { + "data": { + "id": "d7d8d314-b02b-4caa-b04f-d3d4726f4107", + "type": "terminal" + } + }, + "transport_events": { + "data": [ + { + "id": "xecfe2d1-c498-4022-a9f8-ec56722e1215", + "type": "transport_event" + }, + { + "id": "2900a9b8-d9e2-4696-abd86-4a767b885d23", + "type": "transport_event" + }, + { + "id": "5ad0dce1-x78e4-464d-af5f-a36190428a2c", + "type": "transport_event" + }, + { + "id": "876575d5-5ede-40d6-a093-c3a4cfcxaa1c7", + "type": "transport_event" + }, + { + "id": "dc2a9d8f-75e6-43xa5-a04e-58458495f08c", + "type": "transport_event" + }, + { + "id": "50xd2ea1-01ac-473d-8a08-3b5d77d2b793", + "type": "transport_event" + }, + { + "id": "9d1f55xe3-6758-4be7-872a-30451ddd957e", + "type": "transport_event" + } + ] + }, + "raw_events": { + "data": [ + { + "id": "38084a1d-a2eb-434e-81ac3-606c89a61c4b", + "type": "raw_event" + }, + { + "id": "53680df3-93d5-4385-86c5-a33ee41b4c1f", + "type": "raw_event" + }, + { + "id": "7d9cdf70-51e8-4b75-a8229-f5d691495ab6", + "type": "raw_event" + }, + { + "id": "e62d41ac-8738-42e8-b582-35ef28ae88e2", + "type": "raw_event" + }, + { + "id": "1209172b-acd8-4ce0-8821-dbc4934208b3", + "type": "raw_event" + }, + { + "id": "4265ea5f-2b9a-436f-98fa-803d8ed49acb2", + "type": "raw_event" + }, + { + "id": "c3cb2eb7-6c0a-4db8-8742-517b97b175d5", + "type": "raw_event" + }, + { + "id": "b1959f36-a218-4b6e-863a9-2e0b4ad5159c", + "type": "raw_event" + } + ] } } - }, - "code": { - "type": "string", - "nullable": true - }, - "status": { - "type": "string", - "nullable": true - }, - "meta": { - "type": "object", - "nullable": true, - "additionalProperties": true } - } - }, - "metro_area": { - "title": "Metro area model", - "type": "object", + }, + "description": "Represents the equipment during a specific journey.", "properties": { "id": { "type": "string", "format": "uuid" }, + "type": { + "type": "string", + "enum": [ + "container" + ] + }, "attributes": { "type": "object", "properties": { - "name": { + "number": { "type": "string" }, - "code": { - "type": "string", - "description": "UN/LOCODE" + "ref_numbers": { + "type": "array", + "items": { + "type": "string" + } }, - "state_abbr": { + "equipment_type": { "type": "string", - "x-stoplight": { - "id": "j9yuwej2ym7yq" - }, + "enum": [ + "dry", + "reefer", + "open top", + "flat rack", + "bulk", + "tank", + null + ], "nullable": true }, - "country_code": { - "type": "string", - "x-stoplight": { - "id": "hfupdk750wcrj" - } + "equipment_length": { + "type": "integer", + "enum": [ + null, + 10, + 20, + 40, + 45 + ], + "nullable": true }, - "time_zone": { + "equipment_height": { "type": "string", - "description": "IANA tz", - "x-stoplight": { - "id": "izvtty345nfsz" - } - }, - "latitude": { + "enum": [ + "standard", + "high_cube", + null + ], + "nullable": true + }, + "weight_in_lbs": { + "type": "number", + "nullable": true + }, + "created_at": { "type": "string", - "x-stoplight": { - "id": "9l62t4cwsp53w" - }, - "nullable": true, - "description": "Latitude in decimal degrees, serialized as a decimal string (for example `\"22.57489971\"`).", - "example": "22.57489971" + "format": "date-time" }, - "longitude": { + "seal_number": { "type": "string", - "x-stoplight": { - "id": "3tzibc0li8xvg" - }, - "nullable": true, - "description": "Longitude in decimal degrees, serialized as a decimal string (for example `\"22.57489971\"`).", - "example": "114.27769989" - } - } - }, - "type": { - "type": "string", - "enum": [ - "metro_area" - ] - }, - "": { - "type": "string", - "x-stoplight": { - "id": "kwcjunrtu3r5o" - } - } - }, - "required": [ - "id", - "type" - ] - }, - "terminal": { - "title": "Terminal model", - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "relationships": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "port" - ] - } - } - } - } - } - } - }, - "attributes": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" + "nullable": true }, - "nickname": { + "pickup_lfd": { "type": "string", + "format": "date-time", + "description": "Coalesces `import_deadlines` values giving preference to `pickup_lfd_line`", "nullable": true }, - "firms_code": { + "pickup_appointment_at": { "type": "string", - "description": "CBP FIRMS Code or CBS Sublocation Code", + "format": "date-time", + "description": "When available the pickup appointment time at the terminal is returned.", "nullable": true }, - "smdg_code": { + "availability_known": { + "type": "boolean", + "description": "Whether Terminal 49 is receiving availability status from the terminal." + }, + "available_for_pickup": { + "type": "boolean", + "description": "If availability_known is true, then whether container is available to be picked up at terminal.", + "nullable": true + }, + "pod_arrived_at": { "type": "string", - "description": "SMDG Code", + "format": "date-time", + "description": "Time the vessel arrived at the POD", "nullable": true }, - "bic_facility_code": { + "pod_discharged_at": { "type": "string", - "description": "BIC Facility Code", + "format": "date-time", + "description": "Discharge time at the port of discharge", "nullable": true }, - "street": { + "pod_full_out_at": { "type": "string", - "description": "Street part of the address", + "format": "date-time", + "description": "Full Out time at port of discharge. Null for inland moves.", "nullable": true }, - "city": { + "terminal_checked_at": { "type": "string", - "description": "City part of the address", + "format": "date-time", + "description": "When the terminal was last checked.", "nullable": true }, - "state": { + "pod_full_out_chassis_number": { "type": "string", - "description": "State part of the address", + "description": "The chassis number used when container was picked up at POD (if available)", "nullable": true }, - "state_abbr": { + "location_at_pod_terminal": { "type": "string", - "description": "State abbreviation for the state", + "description": "Location at port of discharge terminal", "nullable": true }, - "zip": { + "final_destination_full_out_at": { "type": "string", - "description": "ZIP code part of the address", + "format": "date-time", + "description": "Pickup time at final destination for inland moves.", "nullable": true }, - "country": { + "empty_terminated_at": { "type": "string", - "description": "Country part of the address", + "format": "date-time", + "description": "Time empty container was returned.", "nullable": true - } - } - }, - "type": { - "type": "string", - "enum": [ - "terminal" - ] - } - }, - "required": [ - "attributes", - "relationships" - ] - }, - "rail_terminal": { - "title": "Rail Terminal model", - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "relationships": { - "type": "object", - "properties": { - "port": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "port" - ] - } - } - } + }, + "holds_at_pod_terminal": { + "type": "array", + "items": { + "$ref": "#/components/schemas/terminal_hold" } }, - "metro_area": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "metro_area" - ] - } - } - } + "fees_at_pod_terminal": { + "type": "array", + "items": { + "$ref": "#/components/schemas/terminal_fee" } - } - } - }, - "attributes": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" }, - "nickname": { - "type": "string" + "pod_timezone": { + "type": "string", + "description": "IANA tz. Applies to attributes pod_arrived_at, pod_discharged_at, pickup_appointment_at, pod_full_out_at.", + "nullable": true }, - "firms_code": { + "final_destination_timezone": { "type": "string", - "description": "CBP FIRMS Code or CBS Sublocation Code" - } - } - }, - "type": { - "type": "string", - "enum": [ - "rail_terminal" - ] - } - }, - "required": [ - "attributes" - ] - }, - "tracking_request": { - "title": "Tracking Request", - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "tracking_request" - ] - }, - "attributes": { - "type": "object", - "properties": { - "request_number": { + "description": "IANA tz. Applies to attribute final_destination_full_out_at.", + "nullable": true + }, + "empty_terminated_timezone": { "type": "string", - "example": "ONEYSH9AME650500" + "description": "IANA tz. Applies to attribute empty_terminated_at.", + "nullable": true }, - "ref_numbers": { - "type": "array", - "nullable": true, - "items": { - "type": "string" - } + "pod_rail_carrier_scac": { + "type": "string", + "description": "The SCAC of the rail carrier for the pickup leg of the container's journey.(BETA)", + "nullable": true }, - "tags": { - "type": "array", - "items": { - "type": "string" - } + "ind_rail_carrier_scac": { + "type": "string", + "description": "The SCAC of the rail carrier for the delivery leg of the container's journey.(BETA)", + "nullable": true }, - "status": { + "pod_last_tracking_request_at": { "type": "string", - "enum": [ - "pending", - "awaiting_manifest", - "created", - "failed", - "tracking_stopped", - "cancelled" - ] + "format": "date-time", + "description": "Timestamp of the last time Terminal49 requested container tracking updates directly from the port-of-discharge terminal. Compare with `shipment_last_tracking_request_at`, which tracks shipment-level requests to the shipping line.", + "nullable": true }, - "failed_reason": { + "shipment_last_tracking_request_at": { "type": "string", - "enum": [ - "booking_cancelled", - "duplicate", - "expired", - "internal_processing_error", - "invalid_number", - "not_found", - "retries_exhausted", - "shipping_line_unreachable", - "unrecognized_response", - "data_unavailable", - "scac_auto_detect_failed", - "awaiting_manifest", - "shipping_line_not_supported", - "Cancelled by user", - null - ], - "description": "If the tracking request has failed, or is currently failing, the last reason we were unable to complete the request. `scac_auto_detect_failed` means `auto_detect_vocc_scac` was set but no supported carrier SCAC could be inferred from the request number. A request waiting for the carrier to publish the shipment or its containers has status `awaiting_manifest` and failed_reason null. Only older records carry the `awaiting_manifest` failed_reason value. `shipping_line_not_supported` means Terminal49 cannot track that shipping line. A request cancelled through `PATCH /tracking_requests/{id}/cancel` has status `cancelled` and failed_reason `Cancelled by user`.", + "format": "date-time", + "description": "Timestamp of the last time Terminal49 requested shipment-level tracking updates from the shipping line for this container's shipment. Compare with `pod_last_tracking_request_at`, which tracks container-level requests made directly to the terminal.", "nullable": true }, - "request_type": { + "pod_rail_loaded_at": { "type": "string", - "enum": [ - "bill_of_lading", - "booking_number", - "container" - ], - "example": "bill_of_lading" + "format": "date-time", + "nullable": true }, - "scac": { + "pod_rail_departed_at": { "type": "string", - "example": "ONEY", - "minLength": 4, - "maxLength": 4 + "format": "date-time", + "nullable": true }, - "created_at": { + "ind_eta_at": { "type": "string", - "format": "date-time" + "format": "date-time", + "description": "Estimated Time of Arrival at the inland destination, as reported by the rail carrier. For the shipping-line view at the shipment's destination, see `destination_eta_at` on the shipment. Corresponding timezone is `final_destination_timezone`.", + "nullable": true }, - "updated_at": { + "ind_ata_at": { "type": "string", - "format": "date-time" + "format": "date-time", + "description": "Actual Time of Arrival at the inland destination, as reported by the rail carrier. For the shipping-line view at the shipment's destination, see `destination_ata_at` on the shipment. Corresponding timezone is `final_destination_timezone`.", + "nullable": true }, - "is_retrying": { - "type": "boolean" + "ind_rail_unloaded_at": { + "type": "string", + "format": "date-time", + "description": "Time when the container is unloaded from rail at the inland destination.", + "nullable": true }, - "retry_count": { - "type": "integer", - "description": "How many times T49 has attempted to get the shipment from the shipping line", + "ind_facility_lfd_on": { + "type": "string", + "format": "date-time", + "description": "Please use `import_deadlines.pickup_lfd_rail`", + "nullable": true, + "deprecated": true + }, + "import_deadlines": { + "type": "object", + "description": "Import pickup deadlines for the container", + "properties": { + "pickup_lfd_terminal": { + "type": "string", + "format": "date-time", + "description": "The last free day for pickup before demmurage accrues. Corresponding timezone is pod_timezone.", + "nullable": true + }, + "pickup_lfd_rail": { + "type": "string", + "format": "date-time", + "description": "The last free day for pickup at the inland destination, as reported by the rail carrier. Corresponding timezone is final_destination_timezone. Subscribe to `container.pickup_lfd_rail.changed` to be notified of updates.", + "nullable": true + }, + "pickup_lfd_line": { + "type": "string", + "format": "date-time", + "description": "The last free day as reported by the shipping line (carrier dependent). Corresponding timezone is final_destination_timezone or pod_timezone. Preferred source for the coalesced top-level `pickup_lfd` field.", + "nullable": true + } + }, "nullable": true + }, + "current_status": { + "type": "string", + "description": "The current status of the container in its journey. [Read guide to learn more.](/api-docs/in-depth-guides/container-statuses)", + "enum": [ + "new", + "on_ship", + "available", + "not_available", + "grounded", + "on_rail", + "picked_up", + "off_dock", + "delivered", + "dropped", + "loaded", + "empty_returned", + "awaiting_inland_transfer" + ] } - }, - "required": [ - "request_number", - "status", - "request_type", - "scac", - "created_at" - ] + } }, "relationships": { "type": "object", "properties": { - "tracked_object": { + "shipment": { "type": "object", "properties": { "data": { "type": "object", - "nullable": true, "properties": { "id": { - "type": "string", - "format": "uuid" + "type": "string" }, "type": { "type": "string", @@ -17320,50 +17599,91 @@ "shipment" ] } - } + }, + "nullable": true } } }, - "customer": { + "pickup_facility": { "type": "object", - "description": "Account linked to the customer party, or `null` when the customer party has no linked account. Once the shipment exists, read the party through `GET /shipments/{shipment_id}/party_roles`.", "properties": { "data": { "type": "object", - "nullable": true, "properties": { "id": { - "type": "string", - "format": "uuid" + "type": "string" }, "type": { "type": "string", "enum": [ - "account" + "terminal" ] } - } + }, + "nullable": true } } }, - "user": { + "pod_terminal": { "type": "object", - "description": "User who created the tracking request, or `null` when the request has no linked user.", "properties": { "data": { "type": "object", - "nullable": true, "properties": { "id": { - "type": "string", - "format": "uuid" + "type": "string" }, "type": { "type": "string", "enum": [ - "user" + "terminal" ] } + }, + "nullable": true + } + } + }, + "transport_events": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "transport_event" + ] + } + } + } + } + } + }, + "raw_events": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "raw_event" + ] + } + } } } } @@ -17373,131 +17693,154 @@ }, "required": [ "id", - "type" + "type", + "attributes" ] }, - "webhook": { - "title": "webhook", + "port": { + "title": "Port model", "type": "object", - "x-examples": {}, "properties": { "id": { "type": "string", "format": "uuid" }, + "attributes": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "code": { + "type": "string", + "description": "UN/LOCODE" + }, + "state_abbr": { + "type": "string", + "x-stoplight": { + "id": "jixah1a0q3exs" + }, + "nullable": true + }, + "city": { + "type": "string", + "x-stoplight": { + "id": "657ij4boc7kyv" + }, + "nullable": true + }, + "country_code": { + "type": "string", + "description": "2 digit country code" + }, + "time_zone": { + "type": "string", + "description": "IANA tz" + }, + "latitude": { + "type": "string", + "x-stoplight": { + "id": "480os7a90z6kk" + }, + "nullable": true, + "description": "Latitude in decimal degrees, serialized as a decimal string (for example `\"22.57489971\"`).", + "example": "22.57489971" + }, + "longitude": { + "type": "string", + "x-stoplight": { + "id": "nfdetqgx5p1yv" + }, + "nullable": true, + "description": "Longitude in decimal degrees, serialized as a decimal string (for example `\"22.57489971\"`).", + "example": "114.27769989" + } + } + }, "type": { "type": "string", "enum": [ - "webhook" + "port" ] + } + }, + "required": [ + "id", + "type" + ] + }, + "shipping_line": { + "title": "Shipping line model", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" }, "attributes": { "type": "object", + "required": [ + "scac", + "name", + "alternative_scacs", + "short_name", + "bill_of_lading_tracking_support", + "booking_number_tracking_support", + "container_number_tracking_support" + ], "properties": { - "url": { + "scac": { "type": "string", - "format": "uri", - "description": "https end point" + "minLength": 4, + "maxLength": 4 }, - "active": { - "type": "boolean", - "default": true, - "description": "Whether the webhook will be delivered when events are triggered" + "name": { + "type": "string" }, - "events": { + "alternative_scacs": { "type": "array", - "description": "The list of events to enabled for this endpoint", - "uniqueItems": true, - "minItems": 1, + "x-stoplight": { + "id": "jwf70hnip0xwb" + }, + "description": "Additional SCACs which will be accepted in tracking requests", "items": { + "x-stoplight": { + "id": "nrqnwg5y2u0ni" + }, "type": "string", - "enum": [ - "container.transport.vessel_arrived", - "container.transport.estimated.vessel_arrived", - "container.transport.vessel_discharged", - "container.transport.vessel_loaded", - "container.transport.vessel_departed", - "container.transport.estimated.vessel_departed", - "container.transport.rail_departed", - "container.transport.rail_arrived", - "container.transport.rail_loaded", - "container.transport.rail_unloaded", - "container.transport.transshipment_arrived", - "container.transport.transshipment_discharged", - "container.transport.transshipment_loaded", - "container.transport.transshipment_departed", - "container.transport.feeder_arrived", - "container.transport.feeder_discharged", - "container.transport.feeder_loaded", - "container.transport.feeder_departed", - "container.transport.empty_out", - "container.transport.full_in", - "container.transport.full_out", - "container.transport.empty_in", - "container.transport.vessel_berthed", - "shipment.estimated.arrival", - "tracking_request.succeeded", - "tracking_request.failed", - "tracking_request.awaiting_manifest", - "tracking_request.tracking_stopped", - "container.created", - "container.updated", - "container.pod_terminal_changed", - "container.transport.arrived_at_inland_destination", - "container.transport.estimated.arrived_at_inland_destination", - "container.pickup_lfd.changed", - "container.pickup_lfd_line.changed", - "container.pickup_lfd_terminal.changed", - "container.pickup_lfd_rail.changed", - "container.pickup_appointment.changed", - "container.transport.available", - "container.transport.not_available", - "container.transport.delivered", - "document_representation.created", - "document_representation.failed", - "container.detention_lfd_line.changed", - "container.delivery_appointment.changed", - "shipment.routing.filled", - "link.created" - ] + "minLength": 4, + "maxLength": 4 } }, - "secret": { - "type": "string", - "description": "A random token that will sign all delivered webhooks" + "short_name": { + "type": "string" }, - "headers": { - "type": "array", - "nullable": true, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } + "bill_of_lading_tracking_support": { + "type": "boolean" + }, + "booking_number_tracking_support": { + "type": "boolean" + }, + "container_number_tracking_support": { + "type": "boolean" } - }, - "required": [ - "url", - "active", - "events", - "secret" + } + }, + "type": { + "type": "string", + "enum": [ + "shipping_line" ] } }, "required": [ "id", + "attributes", "type" - ], - "description": "" + ] }, - "vessel": { - "title": "vessel", + "account": { + "title": "Account model", "type": "object", "properties": { "id": { @@ -17507,197 +17850,160 @@ "type": { "type": "string", "enum": [ - "vessel" + "account" ] }, "attributes": { "type": "object", + "required": [ + "company_name" + ], "properties": { - "name": { - "type": "string", - "description": "The name of the ship or vessel", - "example": "Ever Given" - }, - "imo": { + "company_name": { + "type": "string" + } + } + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "x-examples": {} + }, + "error": { + "title": "Error model", + "type": "object", + "properties": { + "detail": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "source": { + "type": "object", + "nullable": true, + "properties": { + "pointer": { "type": "string", - "description": "International Maritime Organization (IMO) number", - "nullable": true, - "example": "9811000" + "nullable": true }, - "mmsi": { + "parameter": { "type": "string", - "description": "Maritime Mobile Service Identity (MMSI)", - "nullable": true, - "example": "353136000" - }, - "latitude": { - "type": "number", - "description": "The current latitude position of the vessel", - "nullable": true, - "example": 25.29845 - }, - "longitude": { - "type": "number", - "description": "The current longitude position of the vessel", - "nullable": true, - "example": 121.217 - }, - "nautical_speed_knots": { - "type": "number", - "description": "The current speed of the ship in knots (nautical miles per hour)", - "nullable": true, - "example": 90 - }, - "navigational_heading_degrees": { - "type": "number", - "description": "The current heading of the ship in degrees, where 0 is North, 90 is East, 180 is South, and 270 is West", - "nullable": true, - "example": 194 - }, - "position_timestamp": { - "type": "string", - "description": "The timestamp of when the ship's position was last recorded, in ISO 8601 date and time format", - "nullable": true, - "example": "2023-07-28T14:01:37Z" - }, - "positions": { - "type": "array", - "description": "An array of historical position data for the vessel. Only included if `show_positions` is true.", - "nullable": true, - "items": { - "type": "object", - "properties": { - "latitude": { - "type": "number", - "example": 1.477285 - }, - "longitude": { - "type": "number", - "example": 104.535533333 - }, - "heading": { - "type": "number", - "nullable": true, - "example": 51 - }, - "timestamp": { - "type": "string", - "format": "date-time", - "example": "2025-05-23T19:14:22Z" - }, - "estimated": { - "type": "boolean", - "example": false - } - } - } + "nullable": true } } + }, + "code": { + "type": "string", + "nullable": true + }, + "status": { + "type": "string", + "nullable": true + }, + "meta": { + "type": "object", + "nullable": true, + "additionalProperties": true } } }, - "transport_event": { - "title": "Transport Event Model", + "metro_area": { + "title": "Metro area model", "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, - "type": { - "type": "string", - "enum": [ - "transport_event" - ] - }, "attributes": { "type": "object", "properties": { - "event": { - "type": "string", - "description": "The event name. The three `container.pickup_lfd_*_calculated.changed` events are Last Free Day estimates that Terminal49 calculates. They can appear when you read transport events, but you cannot subscribe a webhook to them.", - "enum": [ - "container.transport.vessel_arrived", - "container.transport.estimated.vessel_arrived", - "container.transport.vessel_discharged", - "container.transport.vessel_loaded", - "container.transport.vessel_departed", - "container.transport.estimated.vessel_departed", - "container.transport.rail_departed", - "container.transport.rail_arrived", - "container.transport.rail_loaded", - "container.transport.rail_unloaded", - "container.transport.transshipment_arrived", - "container.transport.transshipment_discharged", - "container.transport.transshipment_loaded", - "container.transport.transshipment_departed", - "container.transport.feeder_arrived", - "container.transport.feeder_discharged", - "container.transport.feeder_loaded", - "container.transport.feeder_departed", - "container.transport.empty_out", - "container.transport.full_in", - "container.transport.full_out", - "container.transport.empty_in", - "container.transport.vessel_berthed", - "container.transport.arrived_at_inland_destination", - "container.transport.estimated.arrived_at_inland_destination", - "container.pickup_lfd.changed", - "container.pickup_lfd_line.changed", - "container.pickup_lfd_terminal.changed", - "container.pickup_lfd_rail.changed", - "container.pickup_appointment.changed", - "container.transport.available", - "container.transport.not_available", - "container.transport.delivered", - "document_representation.created", - "document_representation.failed", - "container.detention_lfd_line.changed", - "container.delivery_appointment.changed", - "container.pickup_lfd_line_calculated.changed", - "container.pickup_lfd_terminal_calculated.changed", - "container.pickup_lfd_rail_calculated.changed" - ] + "name": { + "type": "string" }, - "voyage_number": { + "code": { "type": "string", - "nullable": true + "description": "UN/LOCODE" }, - "timestamp": { + "state_abbr": { "type": "string", - "format": "date-time", + "x-stoplight": { + "id": "j9yuwej2ym7yq" + }, "nullable": true }, - "timezone": { + "country_code": { "type": "string", - "description": "IANA tz", - "nullable": true + "x-stoplight": { + "id": "hfupdk750wcrj" + } }, - "location_locode": { + "time_zone": { "type": "string", - "description": "UNLOCODE of the event location", - "nullable": true + "description": "IANA tz", + "x-stoplight": { + "id": "izvtty345nfsz" + } }, - "created_at": { + "latitude": { "type": "string", - "format": "date-time" + "x-stoplight": { + "id": "9l62t4cwsp53w" + }, + "nullable": true, + "description": "Latitude in decimal degrees, serialized as a decimal string (for example `\"22.57489971\"`).", + "example": "22.57489971" }, - "data_source": { + "longitude": { "type": "string", - "enum": [ - "shipping_line", - "terminal", - "ais" - ], - "example": "shipping_line", - "description": "The original source of the event data" + "x-stoplight": { + "id": "3tzibc0li8xvg" + }, + "nullable": true, + "description": "Longitude in decimal degrees, serialized as a decimal string (for example `\"22.57489971\"`).", + "example": "114.27769989" } } }, + "type": { + "type": "string", + "enum": [ + "metro_area" + ] + }, + "": { + "type": "string", + "x-stoplight": { + "id": "kwcjunrtu3r5o" + } + } + }, + "required": [ + "id", + "type" + ] + }, + "terminal": { + "title": "Terminal model", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, "relationships": { "type": "object", + "required": [ + "port" + ], "properties": { - "shipment": { + "port": { "type": "object", "properties": { "data": { @@ -17710,57 +18016,99 @@ "type": { "type": "string", "enum": [ - "shipment" + "port" ] } } } } + } + } + }, + "attributes": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" }, - "location": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "port", - "metro_area" - ] - } - } - } - } + "nickname": { + "type": "string", + "nullable": true }, - "vessel": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "name": { - "type": "string", - "enum": [ - "vessel" - ] - } - } - } - } + "firms_code": { + "type": "string", + "description": "CBP FIRMS Code or CBS Sublocation Code", + "nullable": true }, - "terminal": { + "smdg_code": { + "type": "string", + "description": "SMDG Code", + "nullable": true + }, + "bic_facility_code": { + "type": "string", + "description": "BIC Facility Code", + "nullable": true + }, + "street": { + "type": "string", + "description": "Street part of the address", + "nullable": true + }, + "city": { + "type": "string", + "description": "City part of the address", + "nullable": true + }, + "state": { + "type": "string", + "description": "State part of the address", + "nullable": true + }, + "state_abbr": { + "type": "string", + "description": "State abbreviation for the state", + "nullable": true + }, + "zip": { + "type": "string", + "description": "ZIP code part of the address", + "nullable": true + }, + "country": { + "type": "string", + "description": "Country part of the address", + "nullable": true + } + } + }, + "type": { + "type": "string", + "enum": [ + "terminal" + ] + } + }, + "required": [ + "attributes", + "relationships" + ] + }, + "rail_terminal": { + "title": "Rail Terminal model", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "relationships": { + "type": "object", + "properties": { + "port": { "type": "object", "properties": { "data": { @@ -17774,15 +18122,14 @@ "type": { "type": "string", "enum": [ - "terminal", - "rail_terminal" + "port" ] } } } } }, - "container": { + "metro_area": { "type": "object", "properties": { "data": { @@ -17795,7 +18142,7 @@ "type": { "type": "string", "enum": [ - "container" + "metro_area" ] } } @@ -17803,15 +18150,38 @@ } } } + }, + "attributes": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "nickname": { + "type": "string" + }, + "firms_code": { + "type": "string", + "description": "CBP FIRMS Code or CBS Sublocation Code" + } + } + }, + "type": { + "type": "string", + "enum": [ + "rail_terminal" + ] } }, "required": [ - "id", - "type" + "attributes" ] }, - "estimated_event": { - "title": "Estimated Event Model", + "tracking_request": { + "title": "Tracking Request", "type": "object", "properties": { "id": { @@ -17821,76 +18191,111 @@ "type": { "type": "string", "enum": [ - "estimated_event" + "tracking_request" ] }, "attributes": { "type": "object", - "required": [ - "created_at", - "estimated_timestamp", - "event" - ], "properties": { - "created_at": { + "request_number": { "type": "string", - "description": "When the estimated event was created", - "format": "date-time" + "example": "ONEYSH9AME650500" }, - "estimated_timestamp": { - "type": "string", - "format": "date-time" + "ref_numbers": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } }, - "event": { + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "status": { "type": "string", "enum": [ - "shipment.estimated.arrival", - "document_representation.created", - "document_representation.failed" + "pending", + "awaiting_manifest", + "created", + "failed", + "tracking_stopped", + "cancelled" ] }, - "location_locode": { + "failed_reason": { "type": "string", - "description": "UNLOCODE of the event location", + "enum": [ + "booking_cancelled", + "duplicate", + "expired", + "internal_processing_error", + "invalid_number", + "not_found", + "retries_exhausted", + "shipping_line_unreachable", + "unrecognized_response", + "data_unavailable", + "scac_auto_detect_failed", + "awaiting_manifest", + "shipping_line_not_supported", + "Cancelled by user", + null + ], + "description": "If the tracking request has failed, or is currently failing, the last reason we were unable to complete the request. `scac_auto_detect_failed` means `auto_detect_vocc_scac` was set but no supported carrier SCAC could be inferred from the request number. A request waiting for the carrier to publish the shipment or its containers has status `awaiting_manifest` and failed_reason null. Only older records carry the `awaiting_manifest` failed_reason value. `shipping_line_not_supported` means Terminal49 cannot track that shipping line. A request cancelled through `PATCH /tracking_requests/{id}/cancel` has status `cancelled` and failed_reason `Cancelled by user`.", "nullable": true }, - "timezone": { + "request_type": { "type": "string", - "description": "IANA tz", - "nullable": true + "enum": [ + "bill_of_lading", + "booking_number", + "container" + ], + "example": "bill_of_lading" }, - "voyage_number": { + "scac": { "type": "string", - "nullable": true + "example": "ONEY", + "minLength": 4, + "maxLength": 4 }, - "data_source": { + "created_at": { "type": "string", - "enum": [ - "shipping_line", - "terminal" - ], - "description": "The original source of the event data" + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" + }, + "is_retrying": { + "type": "boolean" + }, + "retry_count": { + "type": "integer", + "description": "How many times T49 has attempted to get the shipment from the shipping line", + "nullable": true } - } + }, + "required": [ + "request_number", + "status", + "request_type", + "scac", + "created_at" + ] }, "relationships": { "type": "object", - "required": [ - "shipment" - ], "properties": { - "shipment": { + "tracked_object": { "type": "object", - "required": [ - "data" - ], "properties": { "data": { "type": "object", - "required": [ - "id", - "type" - ], + "nullable": true, "properties": { "id": { "type": "string", @@ -17906,8 +18311,9 @@ } } }, - "port": { + "customer": { "type": "object", + "description": "Account linked to the customer party, or `null` when the customer party has no linked account. Once the shipment exists, read the party through `GET /shipments/{shipment_id}/party_roles`.", "properties": { "data": { "type": "object", @@ -17920,16 +18326,16 @@ "type": { "type": "string", "enum": [ - "port" + "account" ] } } } } }, - "vessel": { + "user": { "type": "object", - "description": "\n", + "description": "User who created the tracking request, or `null` when the request has no linked user.", "properties": { "data": { "type": "object", @@ -17942,7 +18348,7 @@ "type": { "type": "string", "enum": [ - "vessel" + "user" ] } } @@ -17954,14 +18360,13 @@ }, "required": [ "id", - "type", - "attributes", - "relationships" + "type" ] }, - "webhook_notification": { - "title": "webhook_notification", + "webhook": { + "title": "webhook", "type": "object", + "x-examples": {}, "properties": { "id": { "type": "string", @@ -17970,7 +18375,226 @@ "type": { "type": "string", "enum": [ - "webhook_notification" + "webhook" + ] + }, + "attributes": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "https end point" + }, + "active": { + "type": "boolean", + "default": true, + "description": "Whether the webhook will be delivered when events are triggered" + }, + "events": { + "type": "array", + "description": "The list of events to enabled for this endpoint", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "string", + "enum": [ + "container.transport.vessel_arrived", + "container.transport.estimated.vessel_arrived", + "container.transport.vessel_discharged", + "container.transport.vessel_loaded", + "container.transport.vessel_departed", + "container.transport.estimated.vessel_departed", + "container.transport.rail_departed", + "container.transport.rail_arrived", + "container.transport.rail_loaded", + "container.transport.rail_unloaded", + "container.transport.transshipment_arrived", + "container.transport.transshipment_discharged", + "container.transport.transshipment_loaded", + "container.transport.transshipment_departed", + "container.transport.feeder_arrived", + "container.transport.feeder_discharged", + "container.transport.feeder_loaded", + "container.transport.feeder_departed", + "container.transport.empty_out", + "container.transport.full_in", + "container.transport.full_out", + "container.transport.empty_in", + "container.transport.vessel_berthed", + "shipment.estimated.arrival", + "tracking_request.succeeded", + "tracking_request.failed", + "tracking_request.awaiting_manifest", + "tracking_request.tracking_stopped", + "container.created", + "container.updated", + "container.pod_terminal_changed", + "container.transport.arrived_at_inland_destination", + "container.transport.estimated.arrived_at_inland_destination", + "container.pickup_lfd.changed", + "container.pickup_lfd_line.changed", + "container.pickup_lfd_terminal.changed", + "container.pickup_lfd_rail.changed", + "container.pickup_appointment.changed", + "container.transport.available", + "container.transport.not_available", + "container.transport.delivered", + "document_representation.created", + "document_representation.failed", + "container.detention_lfd_line.changed", + "container.delivery_appointment.changed", + "shipment.routing.filled", + "link.created" + ] + } + }, + "secret": { + "type": "string", + "description": "A random token that will sign all delivered webhooks" + }, + "headers": { + "type": "array", + "nullable": true, + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } + } + } + }, + "required": [ + "url", + "active", + "events", + "secret" + ] + } + }, + "required": [ + "id", + "type" + ], + "description": "" + }, + "vessel": { + "title": "vessel", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "vessel" + ] + }, + "attributes": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the ship or vessel", + "example": "Ever Given" + }, + "imo": { + "type": "string", + "description": "International Maritime Organization (IMO) number", + "nullable": true, + "example": "9811000" + }, + "mmsi": { + "type": "string", + "description": "Maritime Mobile Service Identity (MMSI)", + "nullable": true, + "example": "353136000" + }, + "latitude": { + "type": "number", + "description": "The current latitude position of the vessel", + "nullable": true, + "example": 25.29845 + }, + "longitude": { + "type": "number", + "description": "The current longitude position of the vessel", + "nullable": true, + "example": 121.217 + }, + "nautical_speed_knots": { + "type": "number", + "description": "The current speed of the ship in knots (nautical miles per hour)", + "nullable": true, + "example": 90 + }, + "navigational_heading_degrees": { + "type": "number", + "description": "The current heading of the ship in degrees, where 0 is North, 90 is East, 180 is South, and 270 is West", + "nullable": true, + "example": 194 + }, + "position_timestamp": { + "type": "string", + "description": "The timestamp of when the ship's position was last recorded, in ISO 8601 date and time format", + "nullable": true, + "example": "2023-07-28T14:01:37Z" + }, + "positions": { + "type": "array", + "description": "An array of historical position data for the vessel. Only included if `show_positions` is true.", + "nullable": true, + "items": { + "type": "object", + "properties": { + "latitude": { + "type": "number", + "example": 1.477285 + }, + "longitude": { + "type": "number", + "example": 104.535533333 + }, + "heading": { + "type": "number", + "nullable": true, + "example": 51 + }, + "timestamp": { + "type": "string", + "format": "date-time", + "example": "2025-05-23T19:14:22Z" + }, + "estimated": { + "type": "boolean", + "example": false + } + } + } + } + } + } + } + }, + "transport_event": { + "title": "Transport Event Model", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "transport_event" ] }, "attributes": { @@ -17978,6 +18602,7 @@ "properties": { "event": { "type": "string", + "description": "The event name. The three `container.pickup_lfd_*_calculated.changed` events are Last Free Day estimates that Terminal49 calculates. They can appear when you read transport events, but you cannot subscribe a webhook to them.", "enum": [ "container.transport.vessel_arrived", "container.transport.estimated.vessel_arrived", @@ -18002,14 +18627,6 @@ "container.transport.full_out", "container.transport.empty_in", "container.transport.vessel_berthed", - "shipment.estimated.arrival", - "tracking_request.succeeded", - "tracking_request.failed", - "tracking_request.awaiting_manifest", - "tracking_request.tracking_stopped", - "container.created", - "container.updated", - "container.pod_terminal_changed", "container.transport.arrived_at_inland_destination", "container.transport.estimated.arrived_at_inland_destination", "container.pickup_lfd.changed", @@ -18024,34 +18641,50 @@ "document_representation.failed", "container.detention_lfd_line.changed", "container.delivery_appointment.changed", - "shipment.routing.filled", - "link.created" + "container.pickup_lfd_line_calculated.changed", + "container.pickup_lfd_terminal_calculated.changed", + "container.pickup_lfd_rail_calculated.changed" ] }, - "delivery_status": { + "voyage_number": { "type": "string", - "default": "pending", - "enum": [ - "pending", - "succeeded", - "failed" - ], - "description": "Whether the notification has been delivered to the webhook endpoint" + "nullable": true }, - "created_at": { - "type": "string" - } - }, - "required": [ - "event", - "delivery_status", - "created_at" - ] - }, - "relationships": { + "timestamp": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "timezone": { + "type": "string", + "description": "IANA tz", + "nullable": true + }, + "location_locode": { + "type": "string", + "description": "UNLOCODE of the event location", + "nullable": true + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "data_source": { + "type": "string", + "enum": [ + "shipping_line", + "terminal", + "ais" + ], + "example": "shipping_line", + "description": "The original source of the event data" + } + } + }, + "relationships": { "type": "object", "properties": { - "webhook": { + "shipment": { "type": "object", "properties": { "data": { @@ -18064,18 +18697,19 @@ "type": { "type": "string", "enum": [ - "webhook" + "shipment" ] } } } } }, - "reference_object": { + "location": { "type": "object", "properties": { "data": { "type": "object", + "nullable": true, "properties": { "id": { "type": "string", @@ -18084,129 +18718,155 @@ "type": { "type": "string", "enum": [ - "tracking_request", - "estimated_event", - "transport_event", - "container_updated_event", - "document", - "container_created_event", - "container_pod_terminal_changed_event", - "link", - "document_observation" + "port", + "metro_area" + ] + } + } + } + } + }, + "vessel": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string", + "enum": [ + "vessel" + ] + } + } + } + } + }, + "terminal": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "terminal", + "rail_terminal" + ] + } + } + } + } + }, + "container": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "container" ] } } } } } - }, - "required": [ - "webhook" - ] - } - } - }, - "terminal_hold": { - "title": "terminal_hold", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "pending", - "hold" - ] - }, - "description": { - "type": "string", - "description": "Text description from the terminal (if any)", - "nullable": true + } } }, "required": [ - "name", - "status" + "id", + "type" ] }, - "terminal_fee": { - "title": "terminal_fee", + "estimated_event": { + "title": "Estimated Event Model", "type": "object", "properties": { + "id": { + "type": "string", + "format": "uuid" + }, "type": { "type": "string", "enum": [ - "demurrage", - "exam", - "extended_dwell_time", - "other", - "total" + "estimated_event" ] }, - "amount": { - "type": "number", - "description": "The fee amount in local currency" - }, - "currency_code": { - "type": "string", - "description": "The ISO 4217 currency code of the fee is charged in. E.g. USD", - "example": "USD" - } - }, - "required": [ - "type", - "amount" - ] - }, - "container_updated_event": { - "title": "container_updated_event", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - }, "attributes": { "type": "object", + "required": [ + "created_at", + "estimated_timestamp", + "event" + ], "properties": { - "changeset": { - "type": "object", - "description": "A hash of all the changed attributes with the values being an array of the before and after. E.g. \n`{\"pickup_lfd\": [null, \"2020-05-20\"]}`\n\nThe current attributes that can be alerted on are:\n- `available_for_pickup`\n- `pickup_lfd`\n- `fees_at_pod_terminal`\n- `holds_at_pod_terminal`\n- `pickup_appointment_at`\n- `pod_terminal`" + "created_at": { + "type": "string", + "description": "When the estimated event was created", + "format": "date-time" }, - "timestamp": { + "estimated_timestamp": { "type": "string", - "format": "date-time", - "description": "" + "format": "date-time" + }, + "event": { + "type": "string", + "enum": [ + "shipment.estimated.arrival", + "document_representation.created", + "document_representation.failed" + ] + }, + "location_locode": { + "type": "string", + "description": "UNLOCODE of the event location", + "nullable": true }, "timezone": { "type": "string", - "description": "IANA tz " + "description": "IANA tz", + "nullable": true + }, + "voyage_number": { + "type": "string", + "nullable": true }, "data_source": { "type": "string", "enum": [ + "shipping_line", "terminal" ], - "example": "terminal" + "description": "The original source of the event data" } - }, - "required": [ - "changeset", - "timestamp" - ] + } }, "relationships": { "type": "object", "required": [ - "container", - "terminal" + "shipment" ], "properties": { - "container": { + "shipment": { "type": "object", "required": [ "data" @@ -18226,26 +18886,19 @@ "type": { "type": "string", "enum": [ - "container" + "shipment" ] } } } } }, - "terminal": { + "port": { "type": "object", - "description": "", - "required": [ - "data" - ], "properties": { "data": { "type": "object", - "required": [ - "id", - "type" - ], + "nullable": true, "properties": { "id": { "type": "string", @@ -18254,33 +18907,57 @@ "type": { "type": "string", "enum": [ - "terminal" + "port" ] } } } } - } - } - } - }, - "required": [ - "relationships" - ] - }, - "raw_event": { - "title": "Raw Event Model", + }, + "vessel": { + "type": "object", + "description": "\n", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "vessel" + ] + } + } + } + } + } + } + } + }, + "required": [ + "id", + "type", + "attributes", + "relationships" + ] + }, + "webhook_notification": { + "title": "webhook_notification", "type": "object", - "description": "Raw Events represent the milestones from the shipping line for a given container.\n\n### About raw_event datetimes\n\nThe events may include estimated future events. The event is a future event if an `estimated_` timestamp is not null. \n\nThe datetime properties `timestamp` and `estimated`. \n\nWhen the `time_zone` property is present the datetimes are UTC timestamps, which can be converted to the local time by parsing the provided `time_zone`.\n\nWhen the `time_zone` property is absent, the datetimes represent local times which serialized as UTC timestamps for consistency. ", "properties": { "id": { - "type": "string" + "type": "string", + "format": "uuid" }, "type": { "type": "string", - "description": "", "enum": [ - "raw_event" + "webhook_notification" ] }, "attributes": { @@ -18289,141 +18966,79 @@ "event": { "type": "string", "enum": [ - "empty_out", - "full_in", - "positioned_in", - "positioned_out", - "vessel_loaded", - "vessel_departed", - "transshipment_arrived", - "transshipment_discharged", - "transshipment_loaded", - "transshipment_departed", - "feeder_arrived", - "feeder_discharged", - "feeder_loaded", - "feeder_departed", - "rail_loaded", - "rail_departed", - "rail_arrived", - "rail_unloaded", - "vessel_arrived", - "vessel_discharged", - "arrived_at_destination", - "delivered", - "full_out", - "empty_in", - "vgm_received", - "carrier_release", - "customs_release", - "available" - ], - "description": "Normalized string representing the event", - "nullable": true - }, - "original_event": { - "type": "string", - "description": "The event name as returned by the carrier" - }, - "timestamp": { - "type": "string", - "format": "date-time", - "description": "The datetime the event either transpired or will occur in UTC" - }, - "estimated": { - "type": "boolean", - "description": "True if the timestamp is estimated, false otherwise" - }, - "actual_on": { - "type": "string", - "format": "date", - "description": "Deprecated: The date of the event at the event location when no time information is available. ", - "nullable": true - }, - "estimated_on": { - "type": "string", - "format": "date", - "description": "Deprecated: The estimated date of the event at the event location when no time information is available. ", - "nullable": true - }, - "actual_at": { - "type": "string", - "format": "date-time", - "description": "Deprecated: The datetime the event transpired in UTC", - "nullable": true - }, - "estimated_at": { - "type": "string", - "format": "date-time", - "description": "Deprecated: The estimated datetime the event will occur in UTC", - "nullable": true + "container.transport.vessel_arrived", + "container.transport.estimated.vessel_arrived", + "container.transport.vessel_discharged", + "container.transport.vessel_loaded", + "container.transport.vessel_departed", + "container.transport.estimated.vessel_departed", + "container.transport.rail_departed", + "container.transport.rail_arrived", + "container.transport.rail_loaded", + "container.transport.rail_unloaded", + "container.transport.transshipment_arrived", + "container.transport.transshipment_discharged", + "container.transport.transshipment_loaded", + "container.transport.transshipment_departed", + "container.transport.feeder_arrived", + "container.transport.feeder_discharged", + "container.transport.feeder_loaded", + "container.transport.feeder_departed", + "container.transport.empty_out", + "container.transport.full_in", + "container.transport.full_out", + "container.transport.empty_in", + "container.transport.vessel_berthed", + "shipment.estimated.arrival", + "tracking_request.succeeded", + "tracking_request.failed", + "tracking_request.awaiting_manifest", + "tracking_request.tracking_stopped", + "container.created", + "container.updated", + "container.pod_terminal_changed", + "container.transport.arrived_at_inland_destination", + "container.transport.estimated.arrived_at_inland_destination", + "container.pickup_lfd.changed", + "container.pickup_lfd_line.changed", + "container.pickup_lfd_terminal.changed", + "container.pickup_lfd_rail.changed", + "container.pickup_appointment.changed", + "container.transport.available", + "container.transport.not_available", + "container.transport.delivered", + "document_representation.created", + "document_representation.failed", + "container.detention_lfd_line.changed", + "container.delivery_appointment.changed", + "shipment.routing.filled", + "link.created" + ] }, - "timezone": { + "delivery_status": { "type": "string", - "description": "IANA tz where the event occured", - "nullable": true + "default": "pending", + "enum": [ + "pending", + "succeeded", + "failed" + ], + "description": "Whether the notification has been delivered to the webhook endpoint" }, "created_at": { - "type": "string", - "format": "date-time", - "description": "When the raw_event was created in UTC" - }, - "location_name": { - "type": "string", - "description": "The city or facility name of the event location", - "nullable": true - }, - "location_locode": { - "type": "string", - "description": "UNLOCODE of the event location", - "nullable": true - }, - "vessel_name": { - "type": "string", - "description": "The name of the vessel where applicable", - "nullable": true - }, - "vessel_imo": { - "type": "string", - "description": "The IMO of the vessel where applicable", - "nullable": true - }, - "index": { - "type": "integer", - "description": "The order of the event. This may be helpful when only dates (i.e. actual_on) are available." - }, - "voyage_number": { - "type": "string", - "nullable": true + "type": "string" } - } + }, + "required": [ + "event", + "delivery_status", + "created_at" + ] }, "relationships": { "type": "object", "properties": { - "location": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "port", - "metro_area" - ] - } - }, - "nullable": true - } - } - }, - "vessel": { + "webhook": { "type": "object", "properties": { "data": { @@ -18436,15 +19051,14 @@ "type": { "type": "string", "enum": [ - "vessel" + "webhook" ] } - }, - "nullable": true + } } } }, - "container": { + "reference_object": { "type": "object", "properties": { "data": { @@ -18457,81 +19071,140 @@ "type": { "type": "string", "enum": [ - "container" - ] - } - } - } - } - }, - "terminal": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "terminal" + "tracking_request", + "estimated_event", + "transport_event", + "container_updated_event", + "document", + "container_created_event", + "container_pod_terminal_changed_event", + "link", + "document_observation" ] } } } } } - } + }, + "required": [ + "webhook" + ] } } }, - "container_pod_terminal_changed_event": { - "title": "Container Pod Terminal Changed Event", + "terminal_hold": { + "title": "terminal_hold", "type": "object", "properties": { - "id": { + "name": { + "type": "string" + }, + "status": { "type": "string", - "format": "uuid" + "enum": [ + "pending", + "hold" + ] }, + "description": { + "type": "string", + "description": "Text description from the terminal (if any)", + "nullable": true + } + }, + "required": [ + "name", + "status" + ] + }, + "terminal_fee": { + "title": "terminal_fee", + "type": "object", + "properties": { "type": { "type": "string", "enum": [ - "container_pod_terminal_changed_event" + "demurrage", + "exam", + "extended_dwell_time", + "other", + "total" ] }, + "amount": { + "type": "number", + "description": "The fee amount in local currency" + }, + "currency_code": { + "type": "string", + "description": "The ISO 4217 currency code of the fee is charged in. E.g. USD", + "example": "USD" + } + }, + "required": [ + "type", + "amount" + ] + }, + "container_updated_event": { + "title": "container_updated_event", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + }, "attributes": { "type": "object", "properties": { - "data_source": { - "type": "string", - "enum": [ - "shipping_line", - "terminal", - "pierpass" - ], - "example": "shipping_line", - "description": "Where the information about the terminal change came from" + "changeset": { + "type": "object", + "description": "A hash of all the changed attributes with the values being an array of the before and after. E.g. \n`{\"pickup_lfd\": [null, \"2020-05-20\"]}`\n\nThe current attributes that can be alerted on are:\n- `available_for_pickup`\n- `pickup_lfd`\n- `fees_at_pod_terminal`\n- `holds_at_pod_terminal`\n- `pickup_appointment_at`\n- `pod_terminal`" }, "timestamp": { "type": "string", "format": "date-time", - "description": "When the terminal change was recorded" + "description": "" + }, + "timezone": { + "type": "string", + "description": "IANA tz " + }, + "data_source": { + "type": "string", + "enum": [ + "terminal" + ], + "example": "terminal" } - } + }, + "required": [ + "changeset", + "timestamp" + ] }, "relationships": { "type": "object", + "required": [ + "container", + "terminal" + ], "properties": { "container": { "type": "object", + "required": [ + "data" + ], "properties": { "data": { "type": "object", - "nullable": true, + "required": [ + "id", + "type" + ], "properties": { "id": { "type": "string", @@ -18547,33 +19220,19 @@ } } }, - "shipment": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "shipment" - ] - } - } - } - } - }, "terminal": { "type": "object", + "description": "", + "required": [ + "data" + ], "properties": { "data": { "type": "object", - "nullable": true, + "required": [ + "id", + "type" + ], "properties": { "id": { "type": "string", @@ -18587,288 +19246,616 @@ } } } - }, - "description": "The terminal the container has changed to. If this container is still on the vessel this represents an advisory. If it was previously at the terminal this represents an off-dock move." - } - } - } - } - }, - "party": { - "title": "Party model", - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "attributes": { - "type": "object", - "required": [ - "company_name" - ], - "properties": { - "company_name": { - "type": "string", - "description": "Company name" + } } } - }, - "type": { - "type": "string", - "enum": [ - "party" - ] } }, "required": [ - "attributes" + "relationships" ] }, - "vessel_with_positions": { - "title": "Vessel with positions model", + "raw_event": { + "title": "Raw Event Model", "type": "object", + "description": "Raw Events represent the milestones from the shipping line for a given container.\n\n### About raw_event datetimes\n\nThe events may include estimated future events. The event is a future event if an `estimated_` timestamp is not null. \n\nThe datetime properties `timestamp` and `estimated`. \n\nWhen the `time_zone` property is present the datetimes are UTC timestamps, which can be converted to the local time by parsing the provided `time_zone`.\n\nWhen the `time_zone` property is absent, the datetimes represent local times which serialized as UTC timestamps for consistency. ", "properties": { "id": { - "type": "string", - "format": "uuid" + "type": "string" }, "type": { "type": "string", + "description": "", "enum": [ - "vessel" + "raw_event" ] }, "attributes": { "type": "object", "properties": { - "name": { + "event": { "type": "string", - "description": "The name of the ship or vessel" + "enum": [ + "empty_out", + "full_in", + "positioned_in", + "positioned_out", + "vessel_loaded", + "vessel_departed", + "transshipment_arrived", + "transshipment_discharged", + "transshipment_loaded", + "transshipment_departed", + "feeder_arrived", + "feeder_discharged", + "feeder_loaded", + "feeder_departed", + "rail_loaded", + "rail_departed", + "rail_arrived", + "rail_unloaded", + "vessel_arrived", + "vessel_discharged", + "arrived_at_destination", + "delivered", + "full_out", + "empty_in", + "vgm_received", + "carrier_release", + "customs_release", + "available" + ], + "description": "Normalized string representing the event", + "nullable": true }, - "imo": { + "original_event": { "type": "string", - "description": "International Maritime Organization (IMO) number", - "nullable": true + "description": "The event name as returned by the carrier" }, - "mmsi": { + "timestamp": { "type": "string", - "description": "Maritime Mobile Service Identity (MMSI)", - "nullable": true + "format": "date-time", + "description": "The datetime the event either transpired or will occur in UTC" }, - "latitude": { - "type": "number", - "description": "The current latitude position of the vessel", + "estimated": { + "type": "boolean", + "description": "True if the timestamp is estimated, false otherwise" + }, + "actual_on": { + "type": "string", + "format": "date", + "description": "Deprecated: The date of the event at the event location when no time information is available. ", "nullable": true }, - "longitude": { - "type": "number", - "description": "The current longitude position of the vessel", + "estimated_on": { + "type": "string", + "format": "date", + "description": "Deprecated: The estimated date of the event at the event location when no time information is available. ", "nullable": true }, - "nautical_speed_knots": { - "type": "number", - "description": "The current speed of the ship in knots (nautical miles per hour)", + "actual_at": { + "type": "string", + "format": "date-time", + "description": "Deprecated: The datetime the event transpired in UTC", "nullable": true }, - "navigational_heading_degrees": { - "type": "number", - "description": "The current heading of the ship in degrees, where 0 is North, 90 is East, 180 is South, and 270 is West", + "estimated_at": { + "type": "string", + "format": "date-time", + "description": "Deprecated: The estimated datetime the event will occur in UTC", "nullable": true }, - "position_timestamp": { + "timezone": { + "type": "string", + "description": "IANA tz where the event occured", + "nullable": true + }, + "created_at": { "type": "string", "format": "date-time", - "description": "The timestamp of when the ship's position was last recorded, in ISO 8601 date and time format", + "description": "When the raw_event was created in UTC" + }, + "location_name": { + "type": "string", + "description": "The city or facility name of the event location", "nullable": true }, - "positions": { - "type": "array", - "description": "Array of estimated future positions", - "items": { - "type": "object", - "properties": { - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "heading": { - "type": "number", - "nullable": true + "location_locode": { + "type": "string", + "description": "UNLOCODE of the event location", + "nullable": true + }, + "vessel_name": { + "type": "string", + "description": "The name of the vessel where applicable", + "nullable": true + }, + "vessel_imo": { + "type": "string", + "description": "The IMO of the vessel where applicable", + "nullable": true + }, + "index": { + "type": "integer", + "description": "The order of the event. This may be helpful when only dates (i.e. actual_on) are available." + }, + "voyage_number": { + "type": "string", + "nullable": true + } + } + }, + "relationships": { + "type": "object", + "properties": { + "location": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "port", + "metro_area" + ] + } }, - "timestamp": { - "type": "string", - "format": "date-time" + "nullable": true + } + } + }, + "vessel": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "vessel" + ] + } }, - "estimated": { - "type": "boolean" + "nullable": true + } + } + }, + "container": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "container" + ] + } } - }, - "required": [ - "latitude", - "longitude", - "timestamp", - "estimated" - ] + } + } + }, + "terminal": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "terminal" + ] + } + } + } } } } } - }, - "required": [ - "id", - "type", - "attributes" - ] + } }, - "portFeatureProperties": { - "title": "Port", + "container_pod_terminal_changed_event": { + "title": "Container Pod Terminal Changed Event", "type": "object", "properties": { - "feature_type": { - "type": "string", - "enum": [ - "port" - ] - }, - "ports_sequence": { - "type": "integer", - "description": "The sequence number of this port in the route (1 = POL, last = POD)" - }, - "ports_total": { - "type": "integer", - "description": "Total number of ports in the route" - }, - "location_id": { + "id": { "type": "string", - "description": "Unique identifier for the port location" + "format": "uuid" }, - "location_type": { + "type": { "type": "string", "enum": [ - "Port" + "container_pod_terminal_changed_event" ] }, - "name": { - "type": "string", - "description": "Name of the port" - }, - "state_abbr": { - "type": "string", - "nullable": true, - "description": "State abbreviation (if applicable)" - }, - "state": { - "type": "string", - "nullable": true, - "description": "State name (if applicable)" - }, - "country_code": { - "type": "string", - "description": "ISO country code", - "nullable": true - }, - "country": { - "type": "string", - "description": "Country name", - "nullable": true - }, - "time_zone": { - "type": "string", - "description": "IANA timezone identifier", - "nullable": true - }, - "label": { - "type": "string", - "description": "Port label: POL, POD, or TS1, TS2, etc." + "attributes": { + "type": "object", + "properties": { + "data_source": { + "type": "string", + "enum": [ + "shipping_line", + "terminal", + "pierpass" + ], + "example": "shipping_line", + "description": "Where the information about the terminal change came from" + }, + "timestamp": { + "type": "string", + "format": "date-time", + "description": "When the terminal change was recorded" + } + } }, - "inbound_eta_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "description": "Estimated time of arrival (ISO 8601)" - }, - "inbound_ata_at": { + "relationships": { + "type": "object", + "properties": { + "container": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "container" + ] + } + } + } + } + }, + "shipment": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "shipment" + ] + } + } + } + } + }, + "terminal": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "terminal" + ] + } + } + } + }, + "description": "The terminal the container has changed to. If this container is still on the vessel this represents an advisory. If it was previously at the terminal this represents an off-dock move." + } + } + } + } + }, + "party": { + "title": "Party model", + "type": "object", + "properties": { + "id": { "type": "string", - "format": "date-time", - "nullable": true, - "description": "Actual time of arrival (ISO 8601)" + "format": "uuid" }, - "outbound_etd_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "description": "Estimated time of departure (ISO 8601)" + "attributes": { + "type": "object", + "required": [ + "company_name" + ], + "properties": { + "company_name": { + "type": "string", + "description": "Company name" + } + } }, - "outbound_atd_at": { + "type": { "type": "string", - "format": "date-time", - "nullable": true, - "description": "Actual time of departure (ISO 8601)" + "enum": [ + "party" + ] + } + }, + "required": [ + "attributes" + ] + }, + "vessel_with_positions": { + "title": "Vessel with positions model", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" }, - "updated_at": { + "type": { "type": "string", - "format": "date-time", - "nullable": true, - "description": "Last update timestamp from the shipment (ISO 8601)" + "enum": [ + "vessel" + ] + }, + "attributes": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the ship or vessel" + }, + "imo": { + "type": "string", + "description": "International Maritime Organization (IMO) number", + "nullable": true + }, + "mmsi": { + "type": "string", + "description": "Maritime Mobile Service Identity (MMSI)", + "nullable": true + }, + "latitude": { + "type": "number", + "description": "The current latitude position of the vessel", + "nullable": true + }, + "longitude": { + "type": "number", + "description": "The current longitude position of the vessel", + "nullable": true + }, + "nautical_speed_knots": { + "type": "number", + "description": "The current speed of the ship in knots (nautical miles per hour)", + "nullable": true + }, + "navigational_heading_degrees": { + "type": "number", + "description": "The current heading of the ship in degrees, where 0 is North, 90 is East, 180 is South, and 270 is West", + "nullable": true + }, + "position_timestamp": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the ship's position was last recorded, in ISO 8601 date and time format", + "nullable": true + }, + "positions": { + "type": "array", + "description": "Array of estimated future positions", + "items": { + "type": "object", + "properties": { + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "heading": { + "type": "number", + "nullable": true + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "estimated": { + "type": "boolean" + } + }, + "required": [ + "latitude", + "longitude", + "timestamp", + "estimated" + ] + } + } + } } }, "required": [ - "feature_type" + "id", + "type", + "attributes" ] }, - "currentVesselFeatureProperties": { - "title": "Current Vessel", + "portFeatureProperties": { + "title": "Port", "type": "object", "properties": { "feature_type": { "type": "string", "enum": [ - "current_vessel" + "port" ] }, "ports_sequence": { "type": "integer", - "description": "Sequence number of the departure port for this leg" + "description": "The sequence number of this port in the route (1 = POL, last = POD)" }, - "vessel_id": { - "type": "string", - "description": "Unique identifier for the vessel" + "ports_total": { + "type": "integer", + "description": "Total number of ports in the route" }, - "vessel_name": { + "location_id": { "type": "string", - "description": "Name of the vessel" + "description": "Unique identifier for the port location" }, - "vessel_imo": { + "location_type": { "type": "string", - "description": "IMO number of the vessel" + "enum": [ + "Port" + ] }, - "voyage_number": { + "name": { "type": "string", - "nullable": true, - "description": "Voyage number for this leg" + "description": "Name of the port" }, - "vessel_location_timestamp": { + "state_abbr": { "type": "string", - "format": "date-time", - "description": "Timestamp of the vessel position (ISO 8601)" - }, - "vessel_location_heading": { - "type": "number", "nullable": true, - "description": "Vessel heading in degrees (0-360)" + "description": "State abbreviation (if applicable)" }, - "vessel_location_speed": { - "type": "number", + "state": { + "type": "string", "nullable": true, - "description": "Vessel speed in knots" + "description": "State name (if applicable)" }, - "departure_port_id": { + "country_code": { "type": "string", - "description": "ID of the port the vessel departed from" - }, + "description": "ISO country code", + "nullable": true + }, + "country": { + "type": "string", + "description": "Country name", + "nullable": true + }, + "time_zone": { + "type": "string", + "description": "IANA timezone identifier", + "nullable": true + }, + "label": { + "type": "string", + "description": "Port label: POL, POD, or TS1, TS2, etc." + }, + "inbound_eta_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Estimated time of arrival (ISO 8601)" + }, + "inbound_ata_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Actual time of arrival (ISO 8601)" + }, + "outbound_etd_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Estimated time of departure (ISO 8601)" + }, + "outbound_atd_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Actual time of departure (ISO 8601)" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Last update timestamp from the shipment (ISO 8601)" + } + }, + "required": [ + "feature_type" + ] + }, + "currentVesselFeatureProperties": { + "title": "Current Vessel", + "type": "object", + "properties": { + "feature_type": { + "type": "string", + "enum": [ + "current_vessel" + ] + }, + "ports_sequence": { + "type": "integer", + "description": "Sequence number of the departure port for this leg" + }, + "vessel_id": { + "type": "string", + "description": "Unique identifier for the vessel" + }, + "vessel_name": { + "type": "string", + "description": "Name of the vessel" + }, + "vessel_imo": { + "type": "string", + "description": "IMO number of the vessel" + }, + "voyage_number": { + "type": "string", + "nullable": true, + "description": "Voyage number for this leg" + }, + "vessel_location_timestamp": { + "type": "string", + "format": "date-time", + "description": "Timestamp of the vessel position (ISO 8601)" + }, + "vessel_location_heading": { + "type": "number", + "nullable": true, + "description": "Vessel heading in degrees (0-360)" + }, + "vessel_location_speed": { + "type": "number", + "nullable": true, + "description": "Vessel speed in knots" + }, + "departure_port_id": { + "type": "string", + "description": "ID of the port the vessel departed from" + }, "departure_port_name": { "type": "string", "description": "Name of the departure port" @@ -18949,188 +19936,1376 @@ "nullable": true, "description": "Estimated time of arrival at the next port (ISO 8601)" }, - "arrival_port_time_zone": { - "type": "string", - "nullable": true, - "description": "Timezone of arrival port" + "arrival_port_time_zone": { + "type": "string", + "nullable": true, + "description": "Timezone of arrival port" + } + }, + "required": [ + "feature_type" + ] + }, + "pastVesselLocationsFeatureProperties": { + "title": "Past Vessel Locations", + "type": "object", + "properties": { + "feature_type": { + "type": "string", + "enum": [ + "past_vessel_locations" + ] + }, + "ports_sequence": { + "type": "integer", + "description": "Sequence number of the departure port for this leg" + }, + "vessel_id": { + "type": "string", + "description": "Unique identifier for the vessel that traveled this path" + }, + "start_time": { + "type": "string", + "format": "date-time", + "description": "Start timestamp of the path (ISO 8601)" + }, + "end_time": { + "type": "string", + "format": "date-time", + "description": "End timestamp of the path (ISO 8601)" + }, + "point_count": { + "type": "integer", + "description": "Number of coordinate points in the LineString" + }, + "outbound_atd_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Actual time of departure from the origin port (ISO 8601)" + }, + "inbound_ata_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Actual time of arrival at the destination port (ISO 8601)" + }, + "inbound_eta_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Estimated time of arrival at the destination port (ISO 8601)" + } + }, + "required": [ + "feature_type" + ] + }, + "estimatedFullLegFeatureProperties": { + "title": "Estimated Full Leg", + "type": "object", + "properties": { + "feature_type": { + "type": "string", + "enum": [ + "estimated_full_legs" + ] + }, + "ports_sequence": { + "type": "integer", + "description": "Sequence number of the departure port for this leg" + }, + "previous_port_id": { + "type": "string", + "description": "ID of the origin port" + }, + "next_port_id": { + "type": "string", + "description": "ID of the destination port" + }, + "point_count": { + "type": "integer", + "description": "Number of coordinate points in the LineString" + } + }, + "required": [ + "feature_type" + ] + }, + "estimatedPartialLegFeatureProperties": { + "title": "Estimated Partial Leg", + "type": "object", + "properties": { + "feature_type": { + "type": "string", + "enum": [ + "estimated_partial_leg" + ] + }, + "ports_sequence": { + "type": "integer", + "description": "Sequence number of the departure port for this leg" + }, + "current_port_id": { + "type": "string", + "description": "ID of the port the vessel departed from" + }, + "next_port_id": { + "type": "string", + "description": "ID of the next port the vessel is heading to" + }, + "point_count": { + "type": "integer", + "description": "Number of coordinate points in the LineString" + } + }, + "required": [ + "feature_type" + ] + }, + "pointGeometry": { + "title": "Point", + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "Point" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2, + "example": [ + 100.896831042, + 13.065302386 + ] + } + }, + "required": [ + "type", + "coordinates" + ] + }, + "custom_field_value": { + "description": "Raw custom field value (type depends on definition)", + "oneOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "additionalProperties": true + } + ] + }, + "custom_field": { + "title": "Custom field", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "custom_field" + ] + }, + "attributes": { + "type": "object", + "properties": { + "api_slug": { + "type": "string" + }, + "value": { + "$ref": "#/components/schemas/custom_field_value" + }, + "display_value": { + "type": "string", + "nullable": true, + "description": "Formatted value for display" + } + }, + "required": [ + "api_slug" + ] + }, + "relationships": { + "type": "object", + "properties": { + "entity": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "shipment", + "container", + "tracking_request" + ] + }, + "id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "id" + ] + } + } + }, + "definition": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "custom_field_definition" + ] + }, + "id": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "type", + "id" + ] + } + } + } + } + } + }, + "required": [ + "id", + "type" + ] + }, + "custom_field_definition": { + "title": "Custom field definition", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "custom_field_definition" + ] + }, + "attributes": { + "type": "object", + "properties": { + "entity_type": { + "type": "string", + "enum": [ + "Shipment", + "Cargo" + ], + "description": "The entity type this definition applies to. `Cargo` means containers." + }, + "api_slug": { + "type": "string" + }, + "display_name": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "data_type": { + "type": "string", + "enum": [ + "short_text", + "number", + "date", + "datetime", + "boolean", + "enum", + "enum_multi", + "reference" + ] + }, + "reference_type": { + "type": "string", + "nullable": true + }, + "validation": { + "type": "object", + "nullable": true, + "additionalProperties": true + }, + "default_format": { + "type": "string", + "nullable": true + }, + "default_value": { + "$ref": "#/components/schemas/custom_field_value" + }, + "reference_number": { + "type": "boolean", + "description": "Whether values are reference numbers. Terminal49 indexes reference-number values on account definitions for global search and document matching." + }, + "sensitive": { + "type": "boolean", + "description": "Whether the field is sensitive. Sensitive fields are hidden from recipients of externally shared container views." + }, + "inline_option_creation": { + "type": "boolean", + "description": "Whether users can add a new option while entering an `enum` or `enum_multi` value in the Terminal49 app." + }, + "template_id": { + "type": "string", + "format": "uuid", + "nullable": true, + "description": "ID of the Terminal49 template this definition was copied from." + }, + "has_data": { + "type": "boolean", + "description": "Whether any entity has a value for this definition." + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" + }, + "discarded_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "When the definition was archived." + } + }, + "required": [ + "entity_type", + "api_slug", + "display_name", + "data_type" + ] + }, + "relationships": { + "type": "object", + "properties": { + "account": { + "type": "object", + "description": "The owning account. `null` for Terminal49 templates.", + "properties": { + "data": { + "type": "object", + "nullable": true, + "required": [ + "type", + "id" + ], + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "account" + ] + } + } + } + } + }, + "created_by": { + "type": "object", + "description": "The user who created the definition.", + "properties": { + "data": { + "type": "object", + "nullable": true, + "required": [ + "type", + "id" + ], + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "user" + ] + } + } + } + } + }, + "options": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "type", + "id" + ], + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "custom_field_option" + ] + } + } + } + } + } + } + } + } + }, + "required": [ + "id", + "type" + ] + }, + "custom_field_option": { + "title": "Custom field option", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "custom_field_option" + ] + }, + "attributes": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + }, + "position": { + "type": "integer", + "nullable": true + } + }, + "required": [ + "label", + "value" + ] + } + }, + "required": [ + "id", + "type" + ] + }, + "lineStringGeometry": { + "title": "LineString", + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "LineString" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2 + }, + "minItems": 2, + "example": [ + [ + 100.868768333, + 13.07306 + ], + [ + 100.839155, + 13.079318333 + ] + ] + } + }, + "required": [ + "type", + "coordinates" + ] + }, + "document_representation": { + "title": "Document Representation", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "document_representation" + ] + }, + "attributes": { + "type": "object", + "properties": { + "schema_version": { + "type": "string" + }, + "payload": { + "type": "object", + "additionalProperties": true + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" + } + } + } + }, + "required": [ + "id", + "type" + ] + }, + "email_submission": { + "title": "Email Submission", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "email_submission" + ] + }, + "attributes": { + "type": "object", + "properties": { + "subject": { + "type": "string", + "description": "Email subject line." + }, + "body": { + "type": "string", + "nullable": true, + "description": "Email body content captured from the inbound message." + }, + "from": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Sender email addresses." + }, + "to": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Primary recipient email addresses." + }, + "cc": { + "type": "array", + "items": { + "type": "string" + }, + "description": "CC recipient email addresses." + }, + "sent_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Timestamp from the inbound email header." + }, + "message_id": { + "type": "string", + "nullable": true, + "description": "Message-ID header value." + }, + "in_reply_to": { + "type": "string", + "nullable": true, + "description": "In-Reply-To header value." + }, + "references": { + "type": "array", + "items": { + "type": "string" + }, + "description": "References header values." + }, + "content_type": { + "type": "string", + "nullable": true, + "description": "Top-level MIME content type of the inbound email." + }, + "documents_count": { + "type": "integer", + "description": "Number of non-discarded documents created from this email." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "When the email submission record was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "When the email submission record was last updated." + } + } + }, + "relationships": { + "type": "object", + "properties": { + "account": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "account" + ] + } + } + } + } + }, + "user": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "user" + ] + } + } + } + } + }, + "documents": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "document" + ] + } + } + } + } + } + } + } + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string" + } + } + } + }, + "required": [ + "id", + "type" + ] + }, + "document_schema": { + "title": "Document Schema", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "document_schema" + ] + }, + "attributes": { + "type": "object", + "properties": { + "document_type": { + "type": "string", + "description": "Document type this schema applies to (for example, commercial_invoice)." + }, + "label": { + "type": "string", + "description": "Human-readable label for the document type." + }, + "schema_version": { + "type": "string", + "description": "Public schema version identifier." + }, + "full_version": { + "type": "string", + "description": "Fully-qualified schema version id (for example, commercial_invoice@2026-03-23)." + }, + "current": { + "type": "boolean", + "description": "Whether this schema version is currently active." + }, + "draft": { + "type": "boolean", + "description": "Whether this schema version is marked as draft." + }, + "active_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Timestamp when this schema version became active." + }, + "schema_format": { + "type": "string", + "enum": [ + "json_schema" + ], + "description": "Schema payload format." + }, + "description": { + "type": "string", + "nullable": true, + "description": "Optional notes describing this schema." + }, + "schema_payload": { + "type": "object", + "additionalProperties": true, + "description": "JSON Schema payload used to validate and describe extracted fields." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "When this schema record was created." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "When this schema record was last updated." + } + } + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string" + } + } + } + }, + "required": [ + "id", + "type" + ] + }, + "document": { + "title": "Document", + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "document" + ] + }, + "attributes": { + "type": "object", + "properties": { + "id": { + "description": "Unique identifier for the document.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Display name of the document.", + "type": "string" + }, + "document_type": { + "description": "Document type code. See `GET /documents/types` for allowed values.", + "type": "string" + }, + "document_type_source": { + "description": "Who set `document_type`: `customer` (set through the API or app), `admin` (Terminal49 staff) or `llm` (automatic classification).", + "type": "string", + "enum": [ + "customer", + "admin", + "llm" + ], + "nullable": true + }, + "classification_notes": { + "description": "Additional notes captured during document classification.", + "type": "string", + "nullable": true + }, + "source": { + "description": "How the document was created in Terminal49.", + "type": "string", + "enum": [ + "upload", + "api", + "email", + "split_document" + ] + }, + "file_name": { + "description": "Original file name of the uploaded or generated document.", + "type": "string" + }, + "file_content_type": { + "description": "MIME type of the document file.", + "type": "string", + "nullable": true + }, + "file_size_bytes": { + "description": "File size in bytes.", + "type": "integer", + "nullable": true + }, + "parsed": { + "description": "Additional parsing metadata. Present for child documents created from a split packet.", + "type": "object", + "nullable": true, + "properties": { + "packetSegment": { + "type": "object", + "description": "Page range of the child document within the original packet.", + "properties": { + "startPage": { + "type": "integer", + "description": "Start page number (inclusive) in the parent packet." + }, + "endPage": { + "type": "integer", + "description": "End page number (inclusive) in the parent packet." + } + } + } + } + }, + "created_at": { + "description": "Timestamp when the document was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "Timestamp when the document was last updated.", + "type": "string", + "format": "date-time" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "account": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "account" + ] + } + } + } + } + }, + "user": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "user" + ] + } + } + } + } + }, + "email_submission": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "email_submission" + ] + } + } + } + } + }, + "last_document_representation": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "document_representation" + ] + } + } + } + } + }, + "parent_document": { + "type": "object", + "description": "Present for child documents created from a split packet.", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "document" + ] + } + } + } + } + }, + "shipments": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "shipment" + ] + } + } + } + } + } + }, + "cargos": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "container" + ] + } + } + } + } + } + } + } + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string" + }, + "download": { + "type": "string" + } + } } }, "required": [ - "feature_type" + "id", + "type" ] }, - "pastVesselLocationsFeatureProperties": { - "title": "Past Vessel Locations", + "document_email_submission": { + "title": "Document Email Submission", "type": "object", "properties": { - "feature_type": { - "type": "string", - "enum": [ - "past_vessel_locations" - ] - }, - "ports_sequence": { - "type": "integer", - "description": "Sequence number of the departure port for this leg" - }, - "vessel_id": { - "type": "string", - "description": "Unique identifier for the vessel that traveled this path" - }, - "start_time": { - "type": "string", - "format": "date-time", - "description": "Start timestamp of the path (ISO 8601)" - }, - "end_time": { - "type": "string", - "format": "date-time", - "description": "End timestamp of the path (ISO 8601)" - }, - "point_count": { - "type": "integer", - "description": "Number of coordinate points in the LineString" - }, - "outbound_atd_at": { + "id": { "type": "string", - "format": "date-time", - "nullable": true, - "description": "Actual time of departure from the origin port (ISO 8601)" + "format": "uuid" }, - "inbound_ata_at": { + "type": { "type": "string", - "format": "date-time", - "nullable": true, - "description": "Actual time of arrival at the destination port (ISO 8601)" + "enum": [ + "email_submission" + ] }, - "inbound_eta_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "description": "Estimated time of arrival at the destination port (ISO 8601)" + "attributes": { + "type": "object", + "properties": { + "subject": { + "type": "string", + "nullable": true + }, + "body_preview": { + "type": "string", + "nullable": true + }, + "from": { + "type": "array", + "items": { + "type": "string" + } + }, + "to": { + "type": "array", + "items": { + "type": "string" + } + }, + "cc": { + "type": "array", + "items": { + "type": "string" + } + }, + "message_id": { + "type": "string", + "nullable": true + }, + "sent_at": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" + } + } } }, "required": [ - "feature_type" + "id", + "type" ] }, - "estimatedFullLegFeatureProperties": { - "title": "Estimated Full Leg", + "email_submission_document": { + "title": "Email Submission Document", "type": "object", "properties": { - "feature_type": { + "id": { "type": "string", - "enum": [ - "estimated_full_legs" - ] - }, - "ports_sequence": { - "type": "integer", - "description": "Sequence number of the departure port for this leg" + "format": "uuid" }, - "previous_port_id": { + "type": { "type": "string", - "description": "ID of the origin port" + "enum": [ + "document" + ] }, - "next_port_id": { - "type": "string", - "description": "ID of the destination port" + "attributes": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "source": { + "type": "string", + "enum": [ + "upload", + "api", + "email", + "split_document" + ] + }, + "document_type": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" + } + } }, - "point_count": { - "type": "integer", - "description": "Number of coordinate points in the LineString" + "relationships": { + "type": "object", + "properties": { + "last_document_representation": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "document_representation" + ] + } + } + } + } + } + } } }, "required": [ - "feature_type" + "id", + "type" ] }, - "estimatedPartialLegFeatureProperties": { - "title": "Estimated Partial Leg", + "party_role": { + "title": "Party role model", "type": "object", "properties": { - "feature_type": { + "id": { "type": "string", - "enum": [ - "estimated_partial_leg" - ] - }, - "ports_sequence": { - "type": "integer", - "description": "Sequence number of the departure port for this leg" + "format": "uuid" }, - "current_port_id": { + "type": { "type": "string", - "description": "ID of the port the vessel departed from" + "enum": [ + "party_role" + ] }, - "next_port_id": { - "type": "string", - "description": "ID of the next port the vessel is heading to" + "attributes": { + "type": "object", + "properties": { + "role": { + "type": "string", + "enum": [ + "shipper", + "consignee", + "notify_party", + "customs_broker", + "customer", + "freight_forwarder", + "pickup_dray_carrier" + ], + "description": "Role the party plays on the record. Shipments accept every value. Containers accept only `pickup_dray_carrier`." + }, + "roleable_type": { + "type": "string", + "enum": [ + "Shipment", + "Cargo" + ], + "description": "Type of the record the role is attached to. `Cargo` is returned for containers." + }, + "roleable_id": { + "type": "string", + "format": "uuid", + "description": "ID of the shipment, container, or tracking request." + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" + } + } }, - "point_count": { - "type": "integer", - "description": "Number of coordinate points in the LineString" + "relationships": { + "type": "object", + "properties": { + "party": { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "party" + ] + } + } + } + } + } + } } - }, - "required": [ - "feature_type" - ] + } }, - "pointGeometry": { - "title": "Point", + "user": { + "description": "Related JSON:API user resource. Returned attributes depend on the relationship and caller permissions.", "type": "object", "properties": { + "id": { + "type": "string" + }, "type": { "type": "string", "enum": [ - "Point" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "number" - }, - "minItems": 2, - "maxItems": 2, - "example": [ - 100.896831042, - 13.065302386 + "user" ] - } - }, - "required": [ - "type", - "coordinates" - ] - }, - "custom_field_value": { - "description": "Raw custom field value (type depends on definition)", - "oneOf": [ - { - "type": "string", - "nullable": true - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "array", - "items": { - "type": "string" - } }, - { + "attributes": { "type": "object", "additionalProperties": true } - ] + } }, - "custom_field": { - "title": "Custom field", + "container_created_event": { + "title": "container_created_event", "type": "object", "properties": { "id": { @@ -19140,92 +21315,76 @@ "type": { "type": "string", "enum": [ - "custom_field" + "container_created_event" ] }, "attributes": { "type": "object", "properties": { - "api_slug": { - "type": "string" - }, - "value": { - "$ref": "#/components/schemas/custom_field_value" + "timestamp": { + "type": "string", + "format": "date-time" }, - "display_value": { + "timezone": { "type": "string", "nullable": true, - "description": "Formatted value for display" + "description": "IANA tz" } - }, - "required": [ - "api_slug" - ] + } }, "relationships": { "type": "object", "properties": { - "entity": { + "container": { "type": "object", "properties": { "data": { "type": "object", + "nullable": true, "properties": { + "id": { + "type": "string", + "format": "uuid" + }, "type": { "type": "string", "enum": [ - "shipment", - "container", - "tracking_request" + "container" ] - }, - "id": { - "type": "string", - "format": "uuid" } - }, - "required": [ - "type", - "id" - ] + } } } }, - "definition": { + "shipment": { "type": "object", "properties": { "data": { "type": "object", + "nullable": true, "properties": { + "id": { + "type": "string", + "format": "uuid" + }, "type": { "type": "string", "enum": [ - "custom_field_definition" + "shipment" ] - }, - "id": { - "type": "string", - "format": "uuid" } - }, - "required": [ - "type", - "id" - ] + } } } } } } - }, - "required": [ - "id", - "type" - ] + } }, - "custom_field_definition": { - "title": "Custom field definition", + "link": { + "title": "link", "type": "object", + "description": "A link between a document and the shipment or container it belongs to.", "properties": { "id": { "type": "string", @@ -19234,80 +21393,46 @@ "type": { "type": "string", "enum": [ - "custom_field_definition" + "link" ] }, "attributes": { "type": "object", "properties": { - "entity_type": { - "type": "string", - "enum": [ - "Shipment", - "Cargo" - ], - "description": "The entity type this definition applies to. `Cargo` means containers." + "kind": { + "type": "string" }, - "api_slug": { + "kind_label": { "type": "string" }, - "display_name": { + "created_by": { "type": "string" }, - "description": { - "type": "string", - "nullable": true + "created_by_label": { + "type": "string" }, - "data_type": { + "source_type": { "type": "string", - "enum": [ - "short_text", - "number", - "date", - "datetime", - "boolean", - "enum", - "enum_multi", - "reference" - ] + "example": "Document" }, - "reference_type": { + "source_id": { "type": "string", - "nullable": true - }, - "validation": { - "type": "object", - "nullable": true, - "additionalProperties": true + "format": "uuid" }, - "default_format": { + "target_type": { "type": "string", - "nullable": true - }, - "default_value": { - "$ref": "#/components/schemas/custom_field_value" - }, - "reference_number": { - "type": "boolean", - "description": "Whether values are reference numbers. Terminal49 indexes reference-number values on account definitions for global search and document matching." + "example": "Shipment" }, - "sensitive": { - "type": "boolean", - "description": "Whether the field is sensitive. Sensitive fields are hidden from recipients of externally shared container views." + "target_id": { + "type": "string", + "format": "uuid" }, - "inline_option_creation": { - "type": "boolean", - "description": "Whether users can add a new option while entering an `enum` or `enum_multi` value in the Terminal49 app." + "has_parent": { + "type": "boolean" }, - "template_id": { + "link_description": { "type": "string", - "format": "uuid", - "nullable": true, - "description": "ID of the Terminal49 template this definition was copied from." - }, - "has_data": { - "type": "boolean", - "description": "Whether any entity has a value for this definition." + "example": "Document to Shipment" }, "created_at": { "type": "string", @@ -19316,35 +21441,39 @@ "updated_at": { "type": "string", "format": "date-time" - }, - "discarded_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "description": "When the definition was archived." } - }, - "required": [ - "entity_type", - "api_slug", - "display_name", - "data_type" - ] + } }, "relationships": { "type": "object", "properties": { - "account": { + "source": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "document" + ] + } + } + } + } + }, + "target": { "type": "object", - "description": "The owning account. `null` for Terminal49 templates.", "properties": { "data": { "type": "object", "nullable": true, - "required": [ - "type", - "id" - ], "properties": { "id": { "type": "string", @@ -19353,24 +21482,20 @@ "type": { "type": "string", "enum": [ - "account" + "container", + "shipment" ] } } } } }, - "created_by": { + "user": { "type": "object", - "description": "The user who created the definition.", "properties": { "data": { "type": "object", "nullable": true, - "required": [ - "type", - "id" - ], "properties": { "id": { "type": "string", @@ -19386,17 +21511,34 @@ } } }, - "options": { + "parent": { + "type": "object", + "properties": { + "data": { + "type": "object", + "nullable": true, + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "link" + ] + } + } + } + } + }, + "child_links": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "object", - "required": [ - "type", - "id" - ], "properties": { "id": { "type": "string", @@ -19405,7 +21547,7 @@ "type": { "type": "string", "enum": [ - "custom_field_option" + "link" ] } } @@ -19415,15 +21557,12 @@ } } } - }, - "required": [ - "id", - "type" - ] + } }, - "custom_field_option": { - "title": "Custom field option", + "document_observation": { + "title": "document_observation", "type": "object", + "description": "A shipment field value read from a document. The reference object of `shipment.routing.filled`.", "properties": { "id": { "type": "string", @@ -19432,211 +21571,54 @@ "type": { "type": "string", "enum": [ - "custom_field_option" + "document_observation" ] }, "attributes": { "type": "object", "properties": { - "label": { - "type": "string" - }, - "value": { + "kind": { "type": "string" }, - "position": { - "type": "integer", - "nullable": true - } - }, - "required": [ - "label", - "value" - ] - } - }, - "required": [ - "id", - "type" - ] - }, - "lineStringGeometry": { - "title": "LineString", - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "LineString" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "items": { - "type": "number" - }, - "minItems": 2, - "maxItems": 2 - }, - "minItems": 2, - "example": [ - [ - 100.868768333, - 13.07306 - ], - [ - 100.839155, - 13.079318333 - ] - ] - } - }, - "required": [ - "type", - "coordinates" - ] - }, - "document_representation": { - "title": "Document Representation", - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "document_representation" - ] - }, - "attributes": { - "type": "object", - "properties": { - "schema_version": { + "field": { "type": "string" }, - "payload": { - "type": "object", - "additionalProperties": true - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - } - } - } - }, - "required": [ - "id", - "type" - ] - }, - "email_submission": { - "title": "Email Submission", - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "email_submission" - ] - }, - "attributes": { - "type": "object", - "properties": { - "subject": { - "type": "string", - "description": "Email subject line." - }, - "body": { - "type": "string", - "nullable": true, - "description": "Email body content captured from the inbound message." - }, - "from": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Sender email addresses." - }, - "to": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Primary recipient email addresses." - }, - "cc": { - "type": "array", - "items": { - "type": "string" - }, - "description": "CC recipient email addresses." - }, - "sent_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "description": "Timestamp from the inbound email header." - }, - "message_id": { - "type": "string", - "nullable": true, - "description": "Message-ID header value." - }, - "in_reply_to": { - "type": "string", - "nullable": true, - "description": "In-Reply-To header value." - }, - "references": { - "type": "array", - "items": { - "type": "string" - }, - "description": "References header values." - }, - "content_type": { + "before": {}, + "after": {}, + "source": { "type": "string", - "nullable": true, - "description": "Top-level MIME content type of the inbound email." - }, - "documents_count": { - "type": "integer", - "description": "Number of non-discarded documents created from this email." + "nullable": true }, - "created_at": { + "observed_at": { "type": "string", "format": "date-time", - "description": "When the email submission record was created." + "nullable": true }, - "updated_at": { + "document_name": { "type": "string", - "format": "date-time", - "description": "When the email submission record was last updated." + "nullable": true + }, + "document_processing_id": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "schema_version": { + "type": "string", + "nullable": true, + "example": "2026-09-24" } } }, "relationships": { "type": "object", "properties": { - "account": { + "shipment": { "type": "object", "properties": { "data": { "type": "object", + "nullable": true, "properties": { "id": { "type": "string", @@ -19645,14 +21627,14 @@ "type": { "type": "string", "enum": [ - "account" + "shipment" ] } } } } }, - "user": { + "document": { "type": "object", "properties": { "data": { @@ -19666,251 +21648,209 @@ "type": { "type": "string", "enum": [ - "user" + "document" ] } } } } - }, - "documents": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "document" - ] - } - } - } - } - } } } + } + } + }, + "webhook_notification_included": { + "title": "Webhook notification included resource", + "description": "A resource that can appear in `included` on a webhook notification response.", + "anyOf": [ + { + "$ref": "#/components/schemas/webhook" }, - "links": { - "type": "object", - "properties": { - "self": { - "type": "string" - } - } + { + "$ref": "#/components/schemas/tracking_request" + }, + { + "$ref": "#/components/schemas/transport_event" + }, + { + "$ref": "#/components/schemas/estimated_event" + }, + { + "$ref": "#/components/schemas/container_updated_event" + }, + { + "$ref": "#/components/schemas/container_pod_terminal_changed_event" + }, + { + "$ref": "#/components/schemas/container_created_event" + }, + { + "$ref": "#/components/schemas/document" + }, + { + "$ref": "#/components/schemas/document_representation" + }, + { + "$ref": "#/components/schemas/document_email_submission" + }, + { + "$ref": "#/components/schemas/document_observation" + }, + { + "$ref": "#/components/schemas/link" + }, + { + "$ref": "#/components/schemas/shipment" + }, + { + "$ref": "#/components/schemas/container" + }, + { + "$ref": "#/components/schemas/port" + }, + { + "$ref": "#/components/schemas/metro_area" + }, + { + "$ref": "#/components/schemas/terminal" + }, + { + "$ref": "#/components/schemas/vessel" + }, + { + "$ref": "#/components/schemas/shipping_line" + }, + { + "$ref": "#/components/schemas/account" } - }, - "required": [ - "id", - "type" ] }, - "document_schema": { - "title": "Document Schema", + "feature_availability": { + "title": "Feature availability", "type": "object", + "required": [ + "status" + ], "properties": { - "id": { - "type": "string" - }, - "type": { + "status": { "type": "string", "enum": [ - "document_schema" - ] - }, - "attributes": { - "type": "object", - "properties": { - "document_type": { - "type": "string", - "description": "Document type this schema applies to (for example, commercial_invoice)." - }, - "label": { - "type": "string", - "description": "Human-readable label for the document type." - }, - "schema_version": { - "type": "string", - "description": "Public schema version identifier." - }, - "full_version": { - "type": "string", - "description": "Fully-qualified schema version id (for example, commercial_invoice@2026-03-23)." - }, - "current": { - "type": "boolean", - "description": "Whether this schema version is currently active." - }, - "draft": { - "type": "boolean", - "description": "Whether this schema version is marked as draft." - }, - "active_at": { - "type": "string", - "format": "date-time", - "nullable": true, - "description": "Timestamp when this schema version became active." - }, - "schema_format": { - "type": "string", - "enum": [ - "json_schema" - ], - "description": "Schema payload format." - }, - "description": { - "type": "string", - "nullable": true, - "description": "Optional notes describing this schema." - }, - "schema_payload": { - "type": "object", - "additionalProperties": true, - "description": "JSON Schema payload used to validate and describe extracted fields." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "When this schema record was created." - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "When this schema record was last updated." - } - } - }, - "links": { - "type": "object", - "properties": { - "self": { - "type": "string" - } - } + "available", + "requires_paid_plan", + "requires_user_credential", + "not_enabled" + ], + "description": "`available`: this credential can use the feature on this account. `requires_paid_plan`: the account's plan does not include it. `requires_user_credential`: only a signed-in user may use it, not an API key. `not_enabled`: the feature is not turned on for this account." } - }, - "required": [ - "id", - "type" - ] + } }, - "document": { - "title": "Document", + "credential": { + "title": "Credential model", + "description": "The credential that authenticated the current request. Returned only by `GET /me`.", "type": "object", + "required": [ + "id", + "type", + "attributes", + "relationships" + ], "properties": { "id": { "type": "string", - "format": "uuid" + "format": "uuid", + "description": "The API key id when `kind` is `api_key`, otherwise the user id." }, "type": { "type": "string", "enum": [ - "document" + "credential" ] - }, - "attributes": { - "type": "object", - "properties": { - "id": { - "description": "Unique identifier for the document.", - "type": "string", - "format": "uuid" - }, - "name": { - "description": "Display name of the document.", - "type": "string" - }, - "document_type": { - "description": "Document type code. See `GET /documents/types` for allowed values.", - "type": "string" - }, - "document_type_source": { - "description": "Who set `document_type`: `customer` (set through the API or app), `admin` (Terminal49 staff) or `llm` (automatic classification).", + }, + "attributes": { + "type": "object", + "required": [ + "kind", + "channel", + "features" + ], + "properties": { + "kind": { "type": "string", "enum": [ - "customer", - "admin", - "llm" + "api_key", + "user" ], - "nullable": true - }, - "classification_notes": { - "description": "Additional notes captured during document classification.", - "type": "string", - "nullable": true + "description": "`api_key` for `Authorization: Token`, `user` for a signed-in user's Bearer token." }, - "source": { - "description": "How the document was created in Terminal49.", + "channel": { "type": "string", "enum": [ - "upload", "api", - "email", - "split_document" - ] - }, - "file_name": { - "description": "Original file name of the uploaded or generated document.", - "type": "string" + "dashboard", + "mcp", + "askt49" + ], + "description": "How the credential reached Terminal49: a direct API call, the dashboard, an MCP connected client, or the AskT49 agent." }, - "file_content_type": { - "description": "MIME type of the document file.", + "name": { "type": "string", - "nullable": true - }, - "file_size_bytes": { - "description": "File size in bytes.", - "type": "integer", - "nullable": true + "nullable": true, + "description": "The API key's label from the developer portal. `null` for user tokens." }, - "parsed": { - "description": "Additional parsing metadata. Present for child documents created from a split packet.", + "features": { "type": "object", - "nullable": true, + "description": "Whether this credential can use each gated feature on the current account. Keys are stable; new keys may be added.", + "required": [ + "data_out_api", + "custom_fields", + "routing_data", + "rail_data", + "stop_tracking", + "trade_intel" + ], "properties": { - "packetSegment": { - "type": "object", - "description": "Page range of the child document within the original packet.", - "properties": { - "startPage": { - "type": "integer", - "description": "Start page number (inclusive) in the parent packet." - }, - "endPage": { - "type": "integer", - "description": "End page number (inclusive) in the parent packet." - } - } + "data_out_api": { + "$ref": "#/components/schemas/feature_availability" + }, + "custom_fields": { + "$ref": "#/components/schemas/feature_availability" + }, + "routing_data": { + "$ref": "#/components/schemas/feature_availability" + }, + "rail_data": { + "$ref": "#/components/schemas/feature_availability" + }, + "stop_tracking": { + "$ref": "#/components/schemas/feature_availability" + }, + "trade_intel": { + "$ref": "#/components/schemas/feature_availability" } + }, + "additionalProperties": { + "$ref": "#/components/schemas/feature_availability" } - }, - "created_at": { - "description": "Timestamp when the document was created.", - "type": "string", - "format": "date-time" - }, - "updated_at": { - "description": "Timestamp when the document was last updated.", - "type": "string", - "format": "date-time" } } }, "relationships": { "type": "object", + "required": [ + "account", + "user" + ], "properties": { "account": { "type": "object", + "description": "The account this credential is scoped to.", "properties": { "data": { "type": "object", + "required": [ + "id", + "type" + ], "properties": { "id": { "type": "string", @@ -19924,161 +21864,53 @@ } } } - } + }, + "required": [ + "data" + ] }, "user": { "type": "object", + "description": "The signed-in user. `data` is `null` for an API key unless the request also carried `x-user-email`.", "properties": { "data": { "type": "object", "nullable": true, + "required": [ + "id", + "type" + ], "properties": { "id": { "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "user" - ] - } - } - } - } - }, - "email_submission": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "email_submission" - ] - } - } - } - } - }, - "last_document_representation": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "document_representation" - ] - } - } - } - } - }, - "parent_document": { - "type": "object", - "description": "Present for child documents created from a split packet.", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "document" - ] - } - } - } - } - }, - "shipments": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "shipment" - ] - } - } - } - } - } - }, - "cargos": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "container" - ] - } - } - } - } - } - } - } - }, - "links": { - "type": "object", - "properties": { - "self": { - "type": "string" - }, - "download": { - "type": "string" + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "user" + ] + } + } + } + }, + "required": [ + "data" + ] } } } - }, - "required": [ - "id", - "type" - ] + } }, - "document_email_submission": { - "title": "Document Email Submission", + "credential_account": { + "title": "Credential account", + "description": "An account as `GET /me` describes it. Narrower than the `account` relationship elsewhere in the API.", "type": "object", + "required": [ + "id", + "type", + "attributes" + ], "properties": { "id": { "type": "string", @@ -20087,66 +21919,104 @@ "type": { "type": "string", "enum": [ - "email_submission" + "account" ] }, "attributes": { "type": "object", + "required": [ + "company_name" + ], "properties": { - "subject": { + "company_name": { + "type": "string" + }, + "company_type": { "type": "string", - "nullable": true + "nullable": true, + "enum": [ + "trucking_company", + "freight_forwarder", + "customs_broker", + "shipper", + "terminal_49", + "contractor", + "software_company", + "party_logistic", + "other", + null + ], + "description": "The business type the account declared. `shipper` is a cargo owner (importer or exporter); `freight_forwarder` and `customs_broker` are service providers." }, - "body_preview": { + "scac": { "type": "string", "nullable": true }, - "from": { - "type": "array", - "items": { - "type": "string" - } - }, - "to": { - "type": "array", - "items": { - "type": "string" - } - }, - "cc": { - "type": "array", - "items": { - "type": "string" - } + "abbr_name": { + "type": "string", + "nullable": true, + "description": "Four-letter account abbreviation." }, - "message_id": { + "city": { "type": "string", "nullable": true }, - "sent_at": { + "state_abbr": { "type": "string", - "format": "date-time", "nullable": true }, - "created_at": { + "country": { "type": "string", - "format": "date-time" + "nullable": true }, - "updated_at": { + "plan": { "type": "string", - "format": "date-time" + "nullable": true, + "enum": [ + "free_plan", + "in_trial", + "customer", + "locked", + "churned", + null + ], + "description": "The account's billing lifecycle state." + }, + "tracking_slots": { + "type": "object", + "nullable": true, + "description": "Tracking-slot usage on free and trial plans. `null` when the plan is not slot-limited. Present only on the account the credential is scoped to.", + "required": [ + "limit", + "used", + "remaining" + ], + "properties": { + "limit": { + "type": "integer" + }, + "used": { + "type": "integer" + }, + "remaining": { + "type": "integer" + } + } } } } - }, - "required": [ - "id", - "type" - ] + } }, - "email_submission_document": { - "title": "Email Submission Document", + "credential_user": { + "title": "Credential user", + "description": "The signed-in user as `GET /me` describes them to themselves.", "type": "object", + "required": [ + "id", + "type", + "attributes", + "relationships" + ], "properties": { "id": { "type": "string", @@ -20155,978 +22025,1687 @@ "type": { "type": "string", "enum": [ - "document" + "user" ] }, "attributes": { "type": "object", + "required": [ + "email", + "admin" + ], "properties": { + "email": { + "type": "string", + "format": "email" + }, "name": { - "type": "string" + "type": "string", + "nullable": true }, - "source": { + "role": { "type": "string", "enum": [ - "upload", - "api", - "email", - "split_document" - ] - }, - "document_type": { - "type": "string" + "member", + "account_manager" + ], + "description": "`account_manager` can manage the account's users and billing." }, - "created_at": { + "job_role": { "type": "string", - "format": "date-time" + "nullable": true, + "enum": [ + "other", + "dispatcher", + "driver", + "broker", + "shipper", + "forwarder", + null + ] }, - "updated_at": { + "job_title": { "type": "string", - "format": "date-time" + "nullable": true + }, + "admin": { + "type": "boolean", + "description": "`true` only for Terminal49 staff." } } }, "relationships": { "type": "object", "properties": { - "last_document_representation": { + "accounts": { "type": "object", + "description": "Every open account this user can select with `x-account-id`.", "properties": { "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "account" + ] + } }, - "type": { - "type": "string", - "enum": [ - "document_representation" - ] - } + "required": [ + "id", + "type" + ] } } + }, + "required": [ + "data" + ] + } + }, + "required": [ + "accounts" + ] + } + } + }, + "TradeIntelError": { + "type": "object", + "description": "Plain JSON error body returned by trade intelligence endpoints (not JSON:API).", + "properties": { + "error": { + "type": "string", + "description": "What was wrong with the request, or why trade intelligence could not answer.", + "example": "hs4 must be a 4-digit HS code, e.g. '0306'; use commodities/search to find one" + } + }, + "required": [ + "error" + ] + }, + "TradeIntelValidationError": { + "type": "object", + "description": "Schema validation failure (for example a `limit` above its maximum or a malformed month).", + "properties": { + "detail": { + "type": "array", + "items": { + "type": "object", + "properties": { + "loc": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "description": "Path to the offending field, for example `[\"body\", \"limit\"]`." + }, + "msg": { + "type": "string", + "description": "Human-readable validation message." + }, + "type": { + "type": "string", + "description": "Validation error type, for example `less_than_equal`." } - } - } + }, + "required": [ + "loc", + "msg", + "type" + ] + }, + "description": "One entry per field that failed schema validation." } }, "required": [ - "id", - "type" + "detail" ] }, - "party_role": { - "title": "Party role model", + "TradeIntelMeasure": { + "type": "string", + "enum": [ + "containers", + "teus", + "estimated_value" + ], + "default": "containers", + "description": "What to measure. `containers` counts physical containers (each box once). `teus` sums twenty-foot equivalent units. `estimated_value` sums modelled USD estimates, not declared customs values." + }, + "TradeIntelInterval": { + "type": "string", + "enum": [ + "month", + "quarter", + "year" + ], + "default": "month", + "description": "Bucket size for a time series. Every period is labelled by its first month, `YYYY-MM`: a quarter starting in April 2026 is `2026-04` and the year 2026 is `2026-01`." + }, + "TradeIntelDimension": { + "type": "string", + "enum": [ + "carrier", + "scac", + "origin_country", + "origin_region", + "pod", + "pod_coast", + "dest_state", + "reefer", + "pol", + "pol_country", + "container_type", + "company", + "company_state", + "hs4", + "hs2" + ], + "description": "A dimension to group or break down by. `pod` is the US port of discharge, `pol` the foreign port of lading, `pod_coast` is `EAST`, `WEST`, or `GULF`, `dest_state` is the destination US state, `company_state` the importer's state, `hs2` and `hs4` are HS chapter and heading codes, and `reefer` splits refrigerated from dry containers. Lane dimensions (`pol`, `pol_country`, `container_type`) can't be combined with company or product dimensions (`company`, `company_state`, `hs4`, `hs2`) in one request, whether as dimensions or filters, and `estimated_value` isn't available by lane dimension; such requests return `400` with the reason." + }, + "TradeIntelFilters": { "type": "object", + "description": "Filters for `trends` and `breakdown`. Name-like fields match case-insensitive substrings; codes (`hs4`, `hs2`, `pod_coast`, states, `scac`) match exactly. Omit a field to leave it unfiltered. Lane dimensions (`pol`, `pol_country`, `container_type`) can't be combined with company or product dimensions (`company`, `company_state`, `hs4`, `hs2`) in one request, whether as dimensions or filters, and `estimated_value` isn't available by lane dimension; such requests return `400` with the reason.", "properties": { - "id": { + "company": { "type": "string", - "format": "uuid" + "description": "Case-insensitive **substring** match on the company name, so `IKEA` also matches `IKEA SUPPLY AG`. For one company's own figures use `companies/profile`, which matches the exact name.", + "maxLength": 200, + "example": "CATERPILLAR", + "nullable": true }, - "type": { + "company_state": { + "type": "string", + "description": "Two-letter US state of the importer; exact match.", + "pattern": "^[A-Za-z]{2}$", + "example": "IL", + "nullable": true + }, + "hs4": { + "type": "string", + "description": "4-digit HS heading; exact match. Use `commodities/search` to find one.", + "pattern": "^\\d{4}$", + "example": "0306", + "nullable": true + }, + "hs2": { + "type": "string", + "description": "2-digit HS chapter; exact match.", + "pattern": "^\\d{2}$", + "example": "03", + "nullable": true + }, + "carrier": { + "type": "string", + "description": "Substring of the ocean carrier name as it appears on manifests. Carriers appear under spelling variants; prefer `scac` for an exact match.", + "maxLength": 200, + "example": "MAERSK", + "nullable": true + }, + "scac": { + "type": "string", + "description": "Carrier SCAC; exact match.", + "pattern": "^[A-Za-z]{4}$", + "example": "MAEU", + "nullable": true + }, + "origin_country": { + "type": "string", + "description": "Substring of the origin country as spelled on manifests, for example `china` matches `PEOPLES REP OF CHINA`.", + "maxLength": 200, + "example": "vietnam", + "nullable": true + }, + "origin_region": { + "type": "string", + "description": "Substring of the origin region.", + "maxLength": 200, + "nullable": true + }, + "pol": { + "type": "string", + "description": "Substring of the foreign port of lading.", + "maxLength": 200, + "nullable": true + }, + "pol_country": { + "type": "string", + "description": "Substring of the port-of-lading country.", + "maxLength": 200, + "nullable": true + }, + "pod": { + "type": "string", + "description": "Substring of the US port of discharge.", + "maxLength": 200, + "example": "savannah", + "nullable": true + }, + "pod_coast": { "type": "string", "enum": [ - "party_role" - ] + "EAST", + "WEST", + "GULF" + ], + "description": "US coast of the port of discharge; exact match.", + "nullable": true }, - "attributes": { - "type": "object", - "properties": { - "role": { - "type": "string", - "enum": [ - "shipper", - "consignee", - "notify_party", - "customs_broker", - "customer", - "freight_forwarder", - "pickup_dray_carrier" - ], - "description": "Role the party plays on the record. Shipments accept every value. Containers accept only `pickup_dray_carrier`." - }, - "roleable_type": { - "type": "string", - "enum": [ - "Shipment", - "Cargo" - ], - "description": "Type of the record the role is attached to. `Cargo` is returned for containers." - }, - "roleable_id": { - "type": "string", - "format": "uuid", - "description": "ID of the shipment, container, or tracking request." - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - } - } + "dest_state": { + "type": "string", + "description": "Two-letter destination US state; exact match.", + "pattern": "^[A-Za-z]{2}$", + "example": "TX", + "nullable": true }, - "relationships": { - "type": "object", - "properties": { - "party": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "party" - ] - } - } - } - } - } - } + "container_type": { + "type": "string", + "description": "Substring of the container type description.", + "maxLength": 200, + "nullable": true + }, + "reefer": { + "type": "boolean", + "description": "Only refrigerated (`true`) or only dry (`false`) containers.", + "nullable": true } } }, - "user": { - "description": "Related JSON:API user resource. Returned attributes depend on the relationship and caller permissions.", + "TradeIntelFactRowCounts": { "type": "object", + "description": "Row counts of the monthly fact tables behind the analytics endpoints.", "properties": { - "id": { - "type": "string" + "lane_month": { + "type": "integer", + "description": "Rows in the lane-by-month fact table." }, - "type": { + "company_month": { + "type": "integer", + "description": "Rows in the company-by-month fact table." + }, + "commodity_month": { + "type": "integer", + "description": "Rows in the commodity-by-month fact table." + }, + "hs_lane_month": { + "type": "integer", + "description": "Rows in the HS-code-by-lane-by-month fact table." + } + }, + "required": [ + "lane_month", + "company_month", + "commodity_month", + "hs_lane_month" + ] + }, + "TradeIntelMeta": { + "type": "object", + "description": "Index window, freshness, and counts. Also returned as `index` by `companies/search`.", + "properties": { + "since_month": { "type": "string", - "enum": [ - "user" - ] + "description": "First day (`YYYY-MM-DD`) of the first month of the 12-full-month window that search results cover.", + "example": "2025-10-01" }, - "attributes": { - "type": "object", - "additionalProperties": true + "until_month_exclusive": { + "type": "string", + "description": "First day (`YYYY-MM-DD`) of the month after the last full month in the search window (exclusive).", + "example": "2026-10-01" + }, + "months": { + "type": "integer", + "description": "Number of full months in the search window.", + "example": 12 + }, + "min_containers": { + "type": "integer", + "description": "Minimum containers in the window for a company to be in the search index.", + "example": 5 + }, + "companies": { + "type": "integer", + "description": "Companies in the search index.", + "example": 250000 + }, + "hs_codes": { + "type": "integer", + "description": "HS4 codes in the search index.", + "example": 1200 + }, + "facts_since_month": { + "type": "string", + "description": "First month of history available to `companies/profile`, `importers/top`, `trends`, and `breakdown`. History starts in January 2022. Formatted as the first day of the month (`YYYY-MM-DD`).", + "example": "2022-01-01" + }, + "facts_until_exclusive": { + "type": "string", + "description": "Day after the date the index was built (`YYYY-MM-DD`, exclusive): the end of the loaded history.", + "example": "2026-10-09" + }, + "partial_month": { + "type": "string", + "description": "First day (`YYYY-MM-DD`) of the current calendar month, which is still being loaded and is incomplete.", + "example": "2026-10-01" + }, + "mode": { + "type": "string", + "description": "How the index was built: `full` or `incremental`.", + "example": "incremental" + }, + "facts_hash": { + "type": "string", + "description": "Fingerprint of the current fact build. It changes whenever the data is refreshed." + }, + "refreshed_since": { + "type": "string", + "description": "Start of the period covered by the most recent daily refresh (`YYYY-MM-DD`).", + "example": "2026-07-01" + }, + "fact_rows": { + "$ref": "#/components/schemas/TradeIntelFactRowCounts" + }, + "volume_measure": { + "type": "string", + "description": "Unit of every `containers` figure: physical containers, each counted once.", + "example": "physical containers: distinct (container_number, imported_on)" + }, + "built_at": { + "type": "string", + "description": "When the index was built.", + "format": "date-time", + "example": "2026-10-08T06:12:44Z" } - } + }, + "required": [ + "since_month", + "until_month_exclusive", + "months", + "min_containers", + "companies", + "hs_codes", + "facts_since_month", + "facts_until_exclusive", + "partial_month", + "mode", + "facts_hash", + "refreshed_since", + "fact_rows", + "volume_measure", + "built_at" + ] }, - "container_created_event": { - "title": "container_created_event", + "TradeIntelNamedContainers": { "type": "object", "properties": { - "id": { + "name": { "type": "string", - "format": "uuid" + "description": "Port, country, or carrier name as spelled on manifests." }, - "type": { + "containers": { + "type": "integer", + "description": "Physical containers." + } + }, + "required": [ + "name", + "containers" + ] + }, + "TradeIntelNamedVolume": { + "type": "object", + "properties": { + "name": { "type": "string", - "enum": [ - "container_created_event" - ] + "description": "Port, country, carrier, or state name as spelled on manifests." }, - "attributes": { - "type": "object", - "properties": { - "timestamp": { - "type": "string", - "format": "date-time" - }, - "timezone": { - "type": "string", - "nullable": true, - "description": "IANA tz" - } - } + "containers": { + "type": "integer", + "description": "Physical containers." }, - "relationships": { - "type": "object", - "properties": { - "container": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "container" - ] - } - } - } - } - }, - "shipment": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "shipment" - ] - } - } - } - } - } - } + "teus": { + "type": "number", + "description": "Twenty-foot equivalent units." + } + }, + "required": [ + "name", + "containers", + "teus" + ] + }, + "TradeIntelCommodityVolume": { + "type": "object", + "properties": { + "hs4": { + "type": "string", + "description": "4-digit HS heading.", + "example": "9401" + }, + "description": { + "type": "string", + "description": "HS heading description. Descriptions are truncated; check `common_goods` from `commodities/search` before relying on one." + }, + "containers": { + "type": "integer", + "description": "Physical containers carrying this heading." + }, + "estimated_value": { + "type": "number", + "description": "Modelled USD estimate, not declared customs value." + } + }, + "required": [ + "hs4", + "description", + "containers", + "estimated_value" + ] + }, + "TradeIntelCompanySearchRequest": { + "type": "object", + "description": "Give `name`, `imports`, or both. With neither, lists the largest importers matching the filters.", + "properties": { + "name": { + "type": "string", + "description": "Company name; partial or misspelled is fine (fuzzy match). Results are ranked by match quality, not size, so a close but small match can outrank a large importer.", + "maxLength": 200, + "example": "home depot", + "nullable": true + }, + "imports": { + "type": "string", + "description": "What the company imports, in plain words (semantic match).", + "maxLength": 200, + "example": "frozen shrimp", + "nullable": true + }, + "state": { + "type": "string", + "description": "US state code of the importer.", + "pattern": "^[A-Za-z]{2}$", + "example": "FL", + "nullable": true + }, + "port_of_discharge": { + "type": "string", + "description": "Substring of a US port name.", + "maxLength": 200, + "example": "Long Beach", + "nullable": true + }, + "origin_country": { + "type": "string", + "description": "Substring of an origin country.", + "maxLength": 200, + "example": "Vietnam", + "nullable": true + }, + "min_containers": { + "type": "integer", + "description": "Minimum containers in the index window.", + "minimum": 1, + "nullable": true + }, + "limit": { + "type": "integer", + "description": "Maximum results to return.", + "minimum": 1, + "maximum": 50, + "default": 10 } } }, - "link": { - "title": "link", + "TradeIntelCompanySearchResult": { "type": "object", - "description": "A link between a document and the shipment or container it belongs to.", "properties": { - "id": { + "company_name": { "type": "string", - "format": "uuid" + "description": "Normalized company name. Pass it unchanged to `companies/profile`.", + "example": "CATERPILLAR" }, - "type": { + "company_state": { "type": "string", - "enum": [ - "link" - ] + "description": "US state this row covers, or `null` when the row spans all states.", + "example": "IL", + "nullable": true }, - "attributes": { - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "kind_label": { - "type": "string" - }, - "created_by": { - "type": "string" - }, - "created_by_label": { - "type": "string" - }, - "source_type": { - "type": "string", - "example": "Document" - }, - "source_id": { - "type": "string", - "format": "uuid" - }, - "target_type": { - "type": "string", - "example": "Shipment" - }, - "target_id": { - "type": "string", - "format": "uuid" - }, - "has_parent": { - "type": "boolean" - }, - "link_description": { - "type": "string", - "example": "Document to Shipment" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - } - } + "containers": { + "type": "integer", + "description": "Physical containers in the index window." }, - "relationships": { - "type": "object", - "properties": { - "source": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "document" - ] - } - } - } - } - }, - "target": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "container", - "shipment" - ] - } - } - } - } - }, - "user": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "user" - ] - } - } - } - } - }, - "parent": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "link" - ] - } - } - } - } - }, - "child_links": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "link" - ] - } - } - } - } - } - } - } + "containers_as_consignee": { + "type": "integer", + "description": "Containers where the company is the consignee." + }, + "containers_as_notify_party": { + "type": "integer", + "description": "Containers where the company is the notify party. A share above about 70% usually indicates a logistics provider rather than the cargo owner." + }, + "teus": { + "type": "number", + "description": "Twenty-foot equivalent units." + }, + "estimated_value": { + "type": "number", + "description": "Modelled USD estimate, not declared customs value." + }, + "reefer_share": { + "type": "number", + "description": "Share of containers that were refrigerated, 0 to 1." + }, + "first_month": { + "type": "string", + "description": "First day (`YYYY-MM-DD`) of the first month with volume in the window.", + "example": "2025-10-01" + }, + "last_month": { + "type": "string", + "description": "First day (`YYYY-MM-DD`) of the last month with volume in the window.", + "example": "2026-09-01" + }, + "top_ports": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelNamedContainers" + }, + "description": "Top US ports of discharge." + }, + "top_origins": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelNamedContainers" + }, + "description": "Top origin countries." + }, + "top_carriers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelNamedContainers" + }, + "description": "Top ocean carriers." + }, + "top_commodities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelCommodityVolume" + }, + "description": "Top HS4 headings." + }, + "score": { + "type": "number", + "description": "Match quality; higher is better. Not a measure of size." + } + }, + "required": [ + "company_name", + "company_state", + "containers", + "containers_as_consignee", + "containers_as_notify_party", + "teus", + "estimated_value", + "reefer_share", + "first_month", + "last_month", + "top_ports", + "top_origins", + "top_carriers", + "top_commodities", + "score" + ] + }, + "TradeIntelCompanySearchResponse": { + "type": "object", + "properties": { + "index": { + "$ref": "#/components/schemas/TradeIntelMeta" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelCompanySearchResult" + }, + "description": "Matches ordered by `score`." } - } + }, + "required": [ + "index", + "results" + ] }, - "document_observation": { - "title": "document_observation", + "TradeIntelCompanyProfileRequest": { "type": "object", - "description": "A shipment field value read from a document. The reference object of `shipment.routing.filled`.", "properties": { - "id": { + "company_name": { "type": "string", - "format": "uuid" + "description": "Exact `company_name` from `companies/search`.", + "minLength": 1, + "maxLength": 200, + "example": "CATERPILLAR" }, - "type": { + "company_state": { "type": "string", - "enum": [ - "document_observation" - ] + "description": "Restrict to one state; omit for all states.", + "pattern": "^[A-Za-z]{2}$", + "example": "IL", + "nullable": true }, - "attributes": { - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "field": { - "type": "string" - }, - "before": {}, - "after": {}, - "source": { - "type": "string", - "nullable": true - }, - "observed_at": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "document_name": { - "type": "string", - "nullable": true - }, - "document_processing_id": { - "type": "string", - "format": "uuid", - "nullable": true - }, - "schema_version": { - "type": "string", - "nullable": true, - "example": "2026-09-24" - } - } + "months": { + "type": "integer", + "description": "Full calendar months ending last month. Use 24 or more for a year-over-year view.", + "minimum": 1, + "maximum": 60, + "default": 12 + } + }, + "required": [ + "company_name" + ] + }, + "TradeIntelCompanyProfileTotals": { + "type": "object", + "properties": { + "containers": { + "type": "integer", + "description": "Physical containers in the period." }, - "relationships": { - "type": "object", - "properties": { - "shipment": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "shipment" - ] - } - } - } - } - }, - "document": { - "type": "object", - "properties": { - "data": { - "type": "object", - "nullable": true, - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "document" - ] - } - } - } - } - } - } + "containers_as_consignee": { + "type": "integer", + "description": "Containers where the company is the consignee." + }, + "containers_as_notify_party": { + "type": "integer", + "description": "Containers where the company is the notify party." + }, + "teus": { + "type": "number", + "description": "Twenty-foot equivalent units." + }, + "states": { + "type": "array", + "items": { + "type": "string" + }, + "description": "US states the company's rows are split across, or `null` when none of its rows carries a state.", + "nullable": true } - } + }, + "required": [ + "containers", + "containers_as_consignee", + "containers_as_notify_party", + "teus", + "states" + ] }, - "webhook_notification_included": { - "title": "Webhook notification included resource", - "description": "A resource that can appear in `included` on a webhook notification response.", - "anyOf": [ - { - "$ref": "#/components/schemas/webhook" + "TradeIntelMonthlyVolume": { + "type": "object", + "properties": { + "month": { + "type": "string", + "description": "Calendar month.", + "example": "2026-03" }, - { - "$ref": "#/components/schemas/tracking_request" + "containers": { + "type": "integer", + "description": "Physical containers." }, - { - "$ref": "#/components/schemas/transport_event" + "teus": { + "type": "number", + "description": "Twenty-foot equivalent units." + } + }, + "required": [ + "month", + "containers", + "teus" + ] + }, + "TradeIntelCompanyProfile": { + "type": "object", + "properties": { + "company_name": { + "type": "string", + "description": "The requested company name.", + "example": "CATERPILLAR" }, - { - "$ref": "#/components/schemas/estimated_event" + "company_state": { + "type": "string", + "description": "The requested state, or `null` for all states.", + "nullable": true }, - { - "$ref": "#/components/schemas/container_updated_event" + "since": { + "type": "string", + "description": "First month of the period (inclusive).", + "example": "2025-10" }, - { - "$ref": "#/components/schemas/container_pod_terminal_changed_event" + "until": { + "type": "string", + "description": "Last month of the period (inclusive). Present only when `found` is `true`.", + "example": "2026-09" }, - { - "$ref": "#/components/schemas/container_created_event" + "found": { + "type": "boolean", + "description": "`false` when the exact name has no volume in the period. The name must match `companies/search` exactly; a company can also be split across several names." }, - { - "$ref": "#/components/schemas/document" + "totals": { + "$ref": "#/components/schemas/TradeIntelCompanyProfileTotals" }, - { - "$ref": "#/components/schemas/document_representation" + "monthly": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelMonthlyVolume" + }, + "description": "Volume per month, oldest first." }, - { - "$ref": "#/components/schemas/document_email_submission" + "ports_of_discharge": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelNamedVolume" + }, + "description": "US ports of discharge." }, - { - "$ref": "#/components/schemas/document_observation" + "origin_countries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelNamedVolume" + }, + "description": "Origin countries." + }, + "carriers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelNamedVolume" + }, + "description": "Ocean carriers as spelled on manifests. Merge spelling variants before computing shares." + }, + "destination_states": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelNamedVolume" + }, + "description": "Destination US states." + }, + "commodities_hs4": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelCommodityVolume" + }, + "description": "HS4 headings with estimated value." + }, + "notes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Counting caveats that apply to this response, for example that volume is physical containers or that the window includes a partial month. Surface these to end users." + } + }, + "required": [ + "company_name", + "company_state", + "since", + "found" + ], + "description": "Import profile for one company. When `found` is `true` the period end (`until`), totals, monthly series, breakdowns, and notes are returned; when it is `false` only `company_name`, `company_state`, `since`, and `found` are." + }, + "TradeIntelCommoditySearchRequest": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Product description in plain words, or an HS code prefix.", + "minLength": 1, + "maxLength": 200, + "example": "office chairs" + }, + "limit": { + "type": "integer", + "description": "Maximum results to return.", + "minimum": 1, + "maximum": 50, + "default": 10 + } + }, + "required": [ + "query" + ] + }, + "TradeIntelCommoditySearchResult": { + "type": "object", + "properties": { + "hs4": { + "type": "string", + "description": "4-digit HS heading. Pass it to `importers/top` or as an `hs4` filter.", + "example": "9401" + }, + "description": { + "type": "string", + "description": "HS heading description (truncated)." + }, + "estimated_value": { + "type": "number", + "description": "12-month modelled USD import value, not declared customs value." + }, + "companies": { + "type": "integer", + "description": "Companies importing this heading in the index window." + }, + "common_goods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Goods commonly declared under this heading on bills of lading. Use these to confirm the heading covers what you mean; HS 0306, for example, covers all frozen crustaceans, not only shrimp." + }, + "score": { + "type": "number", + "description": "Match quality; higher is better." + } + }, + "required": [ + "hs4", + "description", + "estimated_value", + "companies", + "common_goods", + "score" + ] + }, + "TradeIntelCommoditySearchResponse": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelCommoditySearchResult" + }, + "description": "Matches ordered by `score`." + } + }, + "required": [ + "results" + ] + }, + "TradeIntelTopImportersRequest": { + "type": "object", + "properties": { + "hs4": { + "type": "string", + "description": "4-digit HS heading: rank importers of containers carrying it. Any other value returns `400`. Use `commodities/search` to find one.", + "pattern": "^\\d{4}$", + "example": "0306", + "nullable": true + }, + "port_of_discharge": { + "type": "string", + "description": "Substring of a US port name.", + "maxLength": 200, + "example": "savannah", + "nullable": true + }, + "origin_country": { + "type": "string", + "description": "Substring of an origin country.", + "maxLength": 200, + "example": "vietnam", + "nullable": true + }, + "months": { + "type": "integer", + "description": "Full calendar months ending last month.", + "minimum": 1, + "maximum": 60, + "default": 12 + }, + "limit": { + "type": "integer", + "description": "Maximum importers to return.", + "minimum": 1, + "maximum": 100, + "default": 20 + } + } + }, + "TradeIntelTopImporter": { + "type": "object", + "properties": { + "company_name": { + "type": "string", + "description": "Normalized company name; pass it to `companies/search` or `companies/profile`." }, - { - "$ref": "#/components/schemas/link" + "states": { + "type": "array", + "items": { + "type": "string" + }, + "description": "US states the company's volume is split across, or `null` when none of its rows carries a state.", + "nullable": true }, - { - "$ref": "#/components/schemas/shipment" + "containers": { + "type": "integer", + "description": "Physical containers matching the filters." }, - { - "$ref": "#/components/schemas/container" + "teus": { + "type": "number", + "description": "Twenty-foot equivalent units." }, - { - "$ref": "#/components/schemas/port" + "estimated_value": { + "type": "number", + "description": "Modelled USD estimate when `hs4` was given; `null` otherwise.", + "nullable": true + } + }, + "required": [ + "company_name", + "states", + "containers", + "teus", + "estimated_value" + ] + }, + "TradeIntelTopImporters": { + "type": "object", + "properties": { + "since": { + "type": "string", + "description": "First month of the period (inclusive).", + "example": "2025-10" }, - { - "$ref": "#/components/schemas/metro_area" + "until": { + "type": "string", + "description": "Last month of the period (inclusive).", + "example": "2026-09" }, - { - "$ref": "#/components/schemas/terminal" + "ranked_by": { + "type": "string", + "description": "The measure the ranking uses.", + "example": "containers" }, - { - "$ref": "#/components/schemas/vessel" + "filters": { + "type": "object", + "description": "The filters that were applied, keyed by the names the service uses: a `port_of_discharge` request comes back as `pod`. Only filters that were given appear.", + "properties": { + "hs4": { + "type": "string", + "description": "The four-digit HS heading." + }, + "pod": { + "type": "string", + "description": "The `port_of_discharge` substring." + }, + "origin_country": { + "type": "string", + "description": "The `origin_country` substring." + } + } }, - { - "$ref": "#/components/schemas/shipping_line" + "notes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Counting caveats that apply to this response, for example that volume is physical containers or that the window includes a partial month. Surface these to end users." }, - { - "$ref": "#/components/schemas/account" + "importers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelTopImporter" + }, + "description": "Importers in descending order. The list does not distinguish forwarders from cargo owners and does not give each company's total volume; use `companies/search` for those." } + }, + "required": [ + "since", + "until", + "ranked_by", + "filters", + "notes", + "importers" ] }, - "feature_availability": { - "title": "Feature availability", + "TradeIntelTrendsRequest": { "type": "object", - "required": [ - "status" - ], "properties": { - "status": { + "measure": { + "$ref": "#/components/schemas/TradeIntelMeasure" + }, + "group_by": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelDimension" + }, + "description": "Split the series by up to two dimensions, keeping the top `top` groups.", + "maxItems": 2 + }, + "filters": { + "$ref": "#/components/schemas/TradeIntelFilters" + }, + "interval": { + "$ref": "#/components/schemas/TradeIntelInterval" + }, + "since": { "type": "string", - "enum": [ - "available", - "requires_paid_plan", - "requires_user_credential", - "not_enabled" - ], - "description": "`available`: this credential can use the feature on this account. `requires_paid_plan`: the account's plan does not include it. `requires_user_credential`: only a signed-in user may use it, not an API key. `not_enabled`: the feature is not turned on for this account." + "description": "First period, `YYYY-MM` inclusive. Defaults to 23 months before `until`, so the default series covers 24 months; history is available back to January 2022 (`facts_since_month` in `meta`).", + "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", + "example": "2024-01", + "nullable": true + }, + "until": { + "type": "string", + "description": "Last period, `YYYY-MM` inclusive. Defaults to the current, partial month.", + "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", + "example": "2026-09", + "nullable": true + }, + "top": { + "type": "integer", + "description": "Keep the top N groups by total over the range.", + "minimum": 1, + "maximum": 50, + "default": 10 } } }, - "credential": { - "title": "Credential model", - "description": "The credential that authenticated the current request. Returned only by `GET /me`.", + "TradeIntelTrendPoint": { "type": "object", + "description": "One point in the series. When `group_by` is set, each point also carries one property per dimension (for example `origin_country`).", + "properties": { + "period": { + "type": "string", + "description": "First month of the period, `YYYY-MM`, whatever the `interval`: quarters are `2026-01`, `2026-04`, and so on, and years are `2026-01`.", + "example": "2026-01" + }, + "value": { + "type": "number", + "description": "The measure for this period and group." + }, + "partial": { + "type": "boolean", + "description": "`true` when the period includes the current, incomplete month. Exclude such periods from comparisons." + } + }, "required": [ - "id", - "type", - "attributes", - "relationships" + "period", + "value" ], + "additionalProperties": true + }, + "TradeIntelTrends": { + "type": "object", "properties": { - "id": { + "measure": { + "$ref": "#/components/schemas/TradeIntelMeasure" + }, + "interval": { + "$ref": "#/components/schemas/TradeIntelInterval" + }, + "since": { "type": "string", - "format": "uuid", - "description": "The API key id when `kind` is `api_key`, otherwise the user id." + "description": "First period (inclusive).", + "example": "2024-10" }, - "type": { + "until": { "type": "string", - "enum": [ - "credential" - ] + "description": "Last period (inclusive).", + "example": "2026-10" }, - "attributes": { - "type": "object", - "required": [ - "kind", - "channel", - "features" - ], - "properties": { - "kind": { - "type": "string", - "enum": [ - "api_key", - "user" - ], - "description": "`api_key` for `Authorization: Token`, `user` for a signed-in user's Bearer token." - }, - "channel": { - "type": "string", - "enum": [ - "api", - "dashboard", - "mcp", - "askt49" - ], - "description": "How the credential reached Terminal49: a direct API call, the dashboard, an MCP connected client, or the AskT49 agent." - }, - "name": { - "type": "string", - "nullable": true, - "description": "The API key's label from the developer portal. `null` for user tokens." - }, - "features": { - "type": "object", - "description": "Whether this credential can use each gated feature on the current account. Keys are stable; new keys may be added.", - "required": [ - "data_out_api", - "custom_fields", - "routing_data", - "rail_data", - "stop_tracking", - "trade_intel" - ], - "properties": { - "data_out_api": { - "$ref": "#/components/schemas/feature_availability" - }, - "custom_fields": { - "$ref": "#/components/schemas/feature_availability" - }, - "routing_data": { - "$ref": "#/components/schemas/feature_availability" - }, - "rail_data": { - "$ref": "#/components/schemas/feature_availability" - }, - "stop_tracking": { - "$ref": "#/components/schemas/feature_availability" - }, - "trade_intel": { - "$ref": "#/components/schemas/feature_availability" - } - }, - "additionalProperties": { - "$ref": "#/components/schemas/feature_availability" - } - } - } + "group_by": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelDimension" + }, + "description": "The dimensions the series is split by." }, - "relationships": { - "type": "object", - "required": [ - "account", - "user" - ], - "properties": { - "account": { - "type": "object", - "description": "The account this credential is scoped to.", - "properties": { - "data": { - "type": "object", - "required": [ - "id", - "type" - ], - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "account" - ] - } - } - } - }, - "required": [ - "data" - ] - }, - "user": { - "type": "object", - "description": "The signed-in user. `data` is `null` for an API key unless the request also carried `x-user-email`.", - "properties": { - "data": { - "type": "object", - "nullable": true, - "required": [ - "id", - "type" - ], - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "user" - ] - } - } - } - }, - "required": [ - "data" - ] - } - } + "filters": { + "$ref": "#/components/schemas/TradeIntelFilters" + }, + "fact": { + "type": "string", + "description": "Name of the fact table the series was computed from." + }, + "notes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Counting caveats that apply to this response, for example that volume is physical containers or that the window includes a partial month. Surface these to end users." + }, + "series": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelTrendPoint" + }, + "description": "Points ordered by period, then by group." + } + }, + "required": [ + "measure", + "interval", + "since", + "until", + "group_by", + "filters", + "fact", + "notes", + "series" + ] + }, + "TradeIntelBreakdownRequest": { + "type": "object", + "properties": { + "dims": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelDimension" + }, + "description": "Hierarchy, outermost first, for example `[\"origin_region\", \"origin_country\", \"pod\"]` or `[\"hs2\", \"hs4\"]`.", + "minItems": 1, + "maxItems": 3 + }, + "measure": { + "$ref": "#/components/schemas/TradeIntelMeasure" + }, + "filters": { + "$ref": "#/components/schemas/TradeIntelFilters" + }, + "since": { + "type": "string", + "description": "First month, `YYYY-MM` inclusive. Defaults to 11 months before `until`, so the default range covers 12 months.", + "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", + "example": "2025-10", + "nullable": true + }, + "until": { + "type": "string", + "description": "Last month, `YYYY-MM` inclusive. Defaults to the current, partial month.", + "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", + "example": "2026-09", + "nullable": true + }, + "top": { + "type": "integer", + "description": "Top N children under each parent.", + "minimum": 1, + "maximum": 50, + "default": 10 } - } + }, + "required": [ + "dims" + ] }, - "credential_account": { - "title": "Credential account", - "description": "An account as `GET /me` describes it. Narrower than the `account` relationship elsewhere in the API.", + "TradeIntelBreakdownRow": { "type": "object", + "description": "One row of the rollup. Besides `level` and `value`, each row carries one property per dimension down to its level (for example `pod_coast` and `pod`).", + "properties": { + "level": { + "type": "integer", + "description": "Depth in the hierarchy: `0` is the grand total, `1` a subtotal for the first dimension, and so on. A row at level N carries a property for each of the first N dimensions." + }, + "value": { + "type": "number", + "description": "The measure for this row." + } + }, "required": [ - "id", - "type", - "attributes" + "level", + "value" ], + "additionalProperties": true + }, + "TradeIntelBreakdown": { + "type": "object", "properties": { - "id": { + "measure": { + "$ref": "#/components/schemas/TradeIntelMeasure" + }, + "dims": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelDimension" + }, + "description": "The hierarchy, outermost first." + }, + "filters": { + "$ref": "#/components/schemas/TradeIntelFilters" + }, + "since": { "type": "string", - "format": "uuid" + "description": "First month (inclusive).", + "example": "2025-10" }, - "type": { + "until": { "type": "string", - "enum": [ - "account" - ] + "description": "Last month (inclusive).", + "example": "2026-10" }, - "attributes": { - "type": "object", - "required": [ - "company_name" - ], - "properties": { - "company_name": { - "type": "string" - }, - "company_type": { - "type": "string", - "nullable": true, - "enum": [ - "trucking_company", - "freight_forwarder", - "customs_broker", - "shipper", - "terminal_49", - "contractor", - "software_company", - "party_logistic", - "other", - null - ], - "description": "The business type the account declared. `shipper` is a cargo owner (importer or exporter); `freight_forwarder` and `customs_broker` are service providers." - }, - "scac": { - "type": "string", - "nullable": true - }, - "abbr_name": { - "type": "string", - "nullable": true, - "description": "Four-letter account abbreviation." - }, - "city": { - "type": "string", - "nullable": true - }, - "state_abbr": { - "type": "string", - "nullable": true - }, - "country": { - "type": "string", - "nullable": true - }, - "plan": { - "type": "string", - "nullable": true, - "enum": [ - "free_plan", - "in_trial", - "customer", - "locked", - "churned", - null - ], - "description": "The account's billing lifecycle state." - }, - "tracking_slots": { - "type": "object", - "nullable": true, - "description": "Tracking-slot usage on free and trial plans. `null` when the plan is not slot-limited. Present only on the account the credential is scoped to.", - "required": [ - "limit", - "used", - "remaining" - ], - "properties": { - "limit": { - "type": "integer" - }, - "used": { - "type": "integer" - }, - "remaining": { - "type": "integer" - } - } - } - } + "fact": { + "type": "string", + "description": "Name of the fact table the rollup was computed from." + }, + "notes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Counting caveats that apply to this response, for example that volume is physical containers or that the window includes a partial month. Surface these to end users." + }, + "rows": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelBreakdownRow" + }, + "description": "Grand total first, then subtotals per level, keeping the top N children under each parent." + } + }, + "required": [ + "measure", + "dims", + "filters", + "since", + "until", + "fact", + "notes", + "rows" + ] + }, + "TradeIntelContainerLookupRequest": { + "type": "object", + "properties": { + "container_number": { + "type": "string", + "description": "ISO 6346 container number. Spaces and hyphens are removed and letters uppercased before matching.", + "minLength": 1, + "maxLength": 20, + "example": "MSCU1234567" + } + }, + "required": [ + "container_number" + ] + }, + "TradeIntelCommodityLine": { + "type": "object", + "description": "One commodity line from a bill of lading, with the parties on that bill.", + "properties": { + "imported_on": { + "type": "string", + "description": "Import date.", + "format": "date", + "nullable": true + }, + "master_bill_of_lading_number": { + "type": "string", + "description": "Carrier (master) bill of lading number.", + "nullable": true + }, + "house_bill_of_lading_number": { + "type": "string", + "description": "House bill of lading number, when the cargo moved under an NVOCC.", + "nullable": true + }, + "consignee": { + "type": "string", + "description": "Consignee name as declared on the manifest.", + "nullable": true + }, + "consignee_city": { + "type": "string", + "nullable": true + }, + "consignee_state": { + "type": "string", + "description": "Two-letter US state.", + "nullable": true + }, + "notify_party": { + "type": "string", + "description": "Notify party as declared on the manifest.", + "nullable": true + }, + "shipper": { + "type": "string", + "description": "Shipper name as declared on the manifest.", + "nullable": true + }, + "shipper_country": { + "type": "string", + "nullable": true + }, + "commodity_short_description": { + "type": "string", + "description": "Goods description from the manifest line.", + "nullable": true + }, + "commodity_hs_code_6": { + "type": "string", + "description": "6-digit HS code assigned to the line.", + "nullable": true + }, + "commodity_hs_code_6_description": { + "type": "string", + "nullable": true + }, + "commodity_quantity": { + "type": "number", + "description": "Declared quantity.", + "nullable": true + }, + "commodity_quantity_uom": { + "type": "string", + "description": "Unit of the declared quantity.", + "nullable": true + }, + "commodity_estimated_value": { + "type": "number", + "description": "Modelled USD estimate for the line, not declared customs value.", + "nullable": true + }, + "bol_metric_tons": { + "type": "number", + "description": "Weight of the bill of lading in metric tons.", + "nullable": true + }, + "bol_teus": { + "type": "number", + "description": "TEUs on the bill of lading.", + "nullable": true + }, + "nvocc_scac": { + "type": "string", + "description": "SCAC of the NVOCC, when one filed the bill.", + "nullable": true + }, + "nvocc_scac_description": { + "type": "string", + "description": "NVOCC name.", + "nullable": true + } + } + }, + "TradeIntelContainerBillOfLading": { + "type": "object", + "description": "A bill of lading the container travelled under on its most recent US import.", + "properties": { + "imported_on": { + "type": "string", + "description": "Import date.", + "format": "date", + "nullable": true + }, + "master_bill_of_lading_number": { + "type": "string", + "description": "Carrier (master) bill of lading number.", + "nullable": true + }, + "house_bill_of_lading_number": { + "type": "string", + "description": "House bill of lading number, when the cargo moved under an NVOCC.", + "nullable": true + }, + "scac": { + "type": "string", + "description": "Ocean carrier SCAC.", + "nullable": true + }, + "scac_name": { + "type": "string", + "description": "Ocean carrier name.", + "nullable": true + }, + "vessel_name": { + "type": "string", + "nullable": true + }, + "voyage_number": { + "type": "string", + "nullable": true + }, + "port_of_lading_name": { + "type": "string", + "description": "Foreign port where the container was loaded.", + "nullable": true + }, + "port_of_lading_country": { + "type": "string", + "nullable": true + }, + "port_of_discharge_name": { + "type": "string", + "description": "US port where the container was discharged.", + "nullable": true + }, + "destination_city": { + "type": "string", + "nullable": true + }, + "destination_state": { + "type": "string", + "description": "Two-letter US state.", + "nullable": true + }, + "ultimate_origin_country": { + "type": "string", + "nullable": true + }, + "container_type_short_description": { + "type": "string", + "description": "Container type, for example a 40-foot high cube.", + "nullable": true + }, + "container_teu": { + "type": "number", + "description": "TEUs of the container.", + "nullable": true + }, + "container_reefer_flag": { + "type": "boolean", + "description": "Whether the container is refrigerated.", + "nullable": true } } }, - "credential_user": { - "title": "Credential user", - "description": "The signed-in user as `GET /me` describes them to themselves.", + "TradeIntelContainerLookup": { "type": "object", - "required": [ - "id", - "type", - "attributes", - "relationships" - ], "properties": { - "id": { + "container_number": { "type": "string", - "format": "uuid" + "description": "The normalized container number that was looked up.", + "example": "MSCU1234567" }, - "type": { + "found": { + "type": "boolean", + "description": "`false` when no US import of this container is on record, or the number is malformed." + }, + "error": { "type": "string", - "enum": [ - "user" - ] + "description": "Only when `found` is `false` because the number is malformed.", + "example": "expected ISO 6346 format, e.g. MSCU1234567" }, - "attributes": { + "latest_import": { "type": "object", - "required": [ - "email", - "admin" - ], - "properties": { - "email": { - "type": "string", - "format": "email" - }, - "name": { - "type": "string", - "nullable": true - }, - "role": { - "type": "string", - "enum": [ - "member", - "account_manager" - ], - "description": "`account_manager` can manage the account's users and billing." - }, - "job_role": { - "type": "string", - "nullable": true, - "enum": [ - "other", - "dispatcher", - "driver", - "broker", - "shipper", - "forwarder", - null - ] - }, - "job_title": { - "type": "string", - "nullable": true - }, - "admin": { - "type": "boolean", - "description": "`true` only for Terminal49 staff." - } - } + "description": "Summary of the container's most recent US import (import date, carrier, vessel, ports, and destination), present when `found` is `true`.", + "properties": {}, + "additionalProperties": true }, - "relationships": { - "type": "object", - "properties": { - "accounts": { - "type": "object", - "description": "Every open account this user can select with `x-account-id`.", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "account" - ] - } - }, - "required": [ - "id", - "type" - ] - } - } - }, - "required": [ - "data" - ] - } + "bills_of_lading": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelContainerBillOfLading" }, - "required": [ - "accounts" - ] + "description": "Bills of lading the container travelled under on that import." + }, + "commodities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelCommodityLine" + }, + "description": "Commodity lines on those bills, grouped by bill with the highest estimated value first within each bill. At most 200 lines are returned; the cap keeps the first 200 in that order, not the 200 highest-value lines overall." + }, + "commodities_truncated": { + "type": "boolean", + "description": "`true` when more than 200 commodity lines exist and only the first 200 are returned." + }, + "note": { + "type": "string", + "description": "Coverage caveat for this response.", + "example": "only the most recent US import of this container is on record; earlier imports are not included" + } + }, + "required": [ + "container_number", + "found" + ] + }, + "TradeIntelBillOfLadingLookupRequest": { + "type": "object", + "properties": { + "bol_number": { + "type": "string", + "description": "Master (SCAC-prefixed) or house bill of lading number. Spaces and hyphens are removed and letters uppercased before matching.", + "minLength": 4, + "maxLength": 40, + "example": "MEDUW9559867" + }, + "months": { + "type": "integer", + "description": "How many months back to search.", + "minimum": 1, + "maximum": 18, + "default": 12 + } + }, + "required": [ + "bol_number" + ] + }, + "TradeIntelBillOfLadingContainer": { + "type": "object", + "description": "A container that moved under the bill of lading.", + "properties": { + "container_number": { + "type": "string", + "description": "ISO 6346 container number.", + "nullable": true + }, + "imported_on": { + "type": "string", + "description": "Import date.", + "format": "date", + "nullable": true + }, + "scac": { + "type": "string", + "description": "Ocean carrier SCAC.", + "nullable": true + }, + "vessel_name": { + "type": "string", + "nullable": true + }, + "voyage_number": { + "type": "string", + "nullable": true + }, + "port_of_lading_name": { + "type": "string", + "description": "Foreign port where the container was loaded.", + "nullable": true + }, + "port_of_discharge_name": { + "type": "string", + "description": "US port where the container was discharged.", + "nullable": true + }, + "destination_city": { + "type": "string", + "nullable": true + }, + "destination_state": { + "type": "string", + "description": "Two-letter US state.", + "nullable": true + }, + "container_type_short_description": { + "type": "string", + "description": "Container type.", + "nullable": true + }, + "container_teu": { + "type": "number", + "description": "TEUs of the container.", + "nullable": true } } + }, + "TradeIntelBillOfLadingLookup": { + "type": "object", + "properties": { + "bol_number": { + "type": "string", + "description": "The normalized bill of lading number that was looked up.", + "example": "MEDUW9559867" + }, + "found": { + "type": "boolean", + "description": "`false` when no import under this number is on record in the search window." + }, + "searched_since": { + "type": "string", + "description": "Start of the search window.", + "format": "date", + "example": "2025-10-01" + }, + "bills_matched": { + "type": "integer", + "description": "Distinct bill of lading records matched (at most 50)." + }, + "bills_truncated": { + "type": "boolean", + "description": "`true` when more than 50 records matched and only the most recent 50 are used." + }, + "containers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelBillOfLadingContainer" + }, + "description": "Containers on the matched bills (at most 200)." + }, + "containers_truncated": { + "type": "boolean", + "description": "`true` when more than 200 containers exist and only the first 200 are returned." + }, + "commodities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TradeIntelCommodityLine" + }, + "description": "Commodity lines on the matched bills, grouped by bill with the highest estimated value first within each bill. At most 200 lines are returned; the cap keeps the first 200 in that order, not the 200 highest-value lines overall." + }, + "commodities_truncated": { + "type": "boolean", + "description": "`true` when more than 200 commodity lines exist and only the first 200 are returned." + } + }, + "required": [ + "bol_number", + "found", + "searched_since" + ] } }, "responses": { @@ -21240,6 +23819,109 @@ } } } + }, + "TradeIntelBadRequest": { + "description": "Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelError" + }, + "example": { + "error": "hs4 must be a 4-digit HS code, e.g. '0306'; use commodities/search to find one" + } + } + } + }, + "TradeIntelUnauthorized": { + "description": "Unauthorized - the API key is missing or invalid.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelError" + }, + "example": { + "error": "Terminal49 API key could not be verified" + } + } + } + }, + "TradeIntelNotEnabled": { + "description": "Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelError" + }, + "example": { + "error": "Trade intelligence is not enabled for this account" + } + } + } + }, + "TradeIntelValidationFailed": { + "description": "Unprocessable Entity - either the body failed schema validation (a value out of range, a malformed month, or an unknown enum value), reported in `detail`, or the request would read more data than the query cost cap allows, reported in `error`. Narrow the time window or filters for the second.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/TradeIntelValidationError" + }, + { + "$ref": "#/components/schemas/TradeIntelError" + } + ] + }, + "examples": { + "Schema validation": { + "value": { + "detail": [ + { + "loc": [ + "body", + "limit" + ], + "msg": "Input should be less than or equal to 50", + "type": "less_than_equal" + } + ] + } + }, + "Query cost cap": { + "value": { + "error": "Query too broad for the cost cap; narrow the time window or filters." + } + } + } + } + } + }, + "TradeIntelRateLimited": { + "description": "Too Many Requests - about 120 requests per minute are allowed per account.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelError" + }, + "example": { + "error": "Rate limit exceeded; retry in a minute" + } + } + } + }, + "TradeIntelUnavailable": { + "description": "Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TradeIntelError" + }, + "example": { + "error": "Trade intelligence is temporarily unavailable; try again shortly" + } + } + } } }, "securitySchemes": { @@ -21311,6 +23993,10 @@ }, { "name": "Account" + }, + { + "name": "Trade Intelligence", + "description": "Trade intelligence answers questions about who imports what into the US, from where, on which carriers, and how that changes over time. The data is US import bill-of-lading records (US Customs vessel manifests): every ocean container landed at a US port (plus US-bound cargo landed at Vancouver, BC) from January 2022 to today, refreshed daily. It does not include air freight, exports, or domestic moves.\n\n**Access.** Trade intelligence is enabled per account. Accounts without it receive `403 Forbidden` with `{\"error\": \"Trade intelligence is not enabled for this account\"}`; contact sales@terminal49.com to enable it. Requests are limited to roughly 120 per minute per account (`429` with `{\"error\": \"Rate limit exceeded; retry in a minute\"}`).\n\n**Format.** These endpoints accept and return plain JSON, not JSON:API. Send `Content-Type: application/json` on `POST` requests and authenticate exactly like every other v2 endpoint (`Authorization: Token YOUR_API_KEY`).\n\n**Typical flow.** Resolve a name or product first, then analyze: `companies/search` or `commodities/search` give you the exact `company_name` or `hs4` to pass to `companies/profile`, `importers/top`, `trends`, or `breakdown`. Container and bill of lading numbers go straight to `containers/lookup` and `bills_of_lading/lookup`.\n\n**Reading the numbers.**\n\n- **Volume is physical containers.** Each box is counted once, even when it appears on several bills of lading. A container carrying several HS codes counts once per code and companies can share containers, so do not add volumes across HS codes or companies; take market totals from `trends` or `breakdown` without a company filter.\n- **Estimated value is a modelled USD estimate**, not the declared customs value.\n- **The current month is partial.** `trends` and `breakdown` include it by default; `companies/profile` and `importers/top` use full calendar months. Compare full months against the same months a year earlier.\n- **Absent volume is not small volume.** Importers can ask US Customs to withhold their name from manifests, and much large-retail freight is booked under forwarders or suppliers. Treat a company's figures as a floor, never as its size.\n- **One company, many names.** Company names are normalized but split by state, and large importers use several names (distribution, merchandising, and DC entities). Related entities are separate companies; report them separately. `companies/search` ranks by match quality, not by size.\n- **Companies are the consignee or notify party on the bill.** Forwarders, NVOCCs, and customs brokers appear alongside cargo owners. A high notify-party share, or LOGISTICS, FREIGHT, SHIPPING, CUSTOMS, or BROKERAGE in the name, usually indicates a logistics provider.\n- **Carriers, countries, and ports use the manifests' spellings**, and carriers appear under spelling variants (for example `CMA CGM` and `CMA CGM AMERICA LLC`). Filter with substrings and merge variants before computing shares.\n- **HS4 descriptions are truncated.** Check `common_goods` from `commodities/search` before relying on a code." } ], "security": [ diff --git a/docs/sdk/error-handling.mdx b/docs/sdk/error-handling.mdx index 89954d3b3..0a832a3de 100644 --- a/docs/sdk/error-handling.mdx +++ b/docs/sdk/error-handling.mdx @@ -21,7 +21,7 @@ The SDK throws typed errors you can catch and handle based on the error type. | `NotFoundError` | Resource doesn't exist or isn't accessible | | `ValidationError` | Invalid request parameters | | `RateLimitError` | Too many requests | -| `FeatureNotEnabledError` | Feature requires a plan upgrade | +| `FeatureNotEnabledError` | Feature is not enabled for the account, for example trade intelligence or routing data | | `UpstreamError` | Carrier or terminal API is unavailable | | `Terminal49Error` | Generic error fallback | @@ -57,7 +57,7 @@ try { ## Automatic retries -The SDK automatically retries `429` and `5xx` responses with exponential backoff up to `maxRetries` (default: 2). +The SDK automatically retries `429` and `5xx` responses with exponential backoff up to `maxRetries` (default: 2). Retries apply to reads: `GET` requests and the read-only `POST` queries under `client.tradeIntel`. Other writes are retried only when you send an `Idempotency-Key` header. ```typescript const client = new Terminal49Client({ diff --git a/docs/sdk/methods.mdx b/docs/sdk/methods.mdx index 7dae6d7c1..f23d60108 100644 --- a/docs/sdk/methods.mdx +++ b/docs/sdk/methods.mdx @@ -191,6 +191,29 @@ The SDK exposes a `Terminal49Client` with methods grouped by resource type. Each |--------|----------|-------------| | `client.documentSchemas.get(id, options?)` | `GET /document_schemas/{id}` | Fetch an extraction schema by its versioned id, `@`, such as `commercial_invoice@2026-03-23`. | +### Trade intelligence + +Trade intelligence covers US import bill-of-lading records (US Customs manifests) from January 2022 onward, refreshed daily. These methods return the API's plain JSON body (not JSON:API), so `format` does not apply. Accounts without the feature get `FeatureNotEnabledError`; contact sales@terminal49.com to enable it. + +| Method | Description | +|--------|-------------| +| `client.tradeIntel.meta()` | Coverage window, history start, the current partial month, and build time. | +| `client.tradeIntel.searchCompanies(request?)` | Find importers by name (fuzzy), by what they import, or both. Ranked by match quality, not size. | +| `client.tradeIntel.companyProfile(request)` | One importer's monthly history, ports, origins, carriers, and HS4 commodities. Needs the exact `company_name` from `searchCompanies`. | +| `client.tradeIntel.searchCommodities(request)` | Resolve a product description or HS prefix to 4-digit HS headings. | +| `client.tradeIntel.topImporters(request?)` | Rank importers by containers for an HS4 heading, port, or origin country. | +| `client.tradeIntel.trends(request?)` | Time series of containers, TEUs, or estimated value, split by up to two dimensions. | +| `client.tradeIntel.breakdown(request)` | Nested totals over a dimension hierarchy such as region, country, and port. | +| `client.tradeIntel.lookupContainer(containerNumber)` | A container's most recent US import: bills of lading, parties, and commodity lines. | +| `client.tradeIntel.lookupBillOfLading(bolNumber, options?)` | The import record for a master or house bill of lading. | + +```typescript +const { results } = await client.tradeIntel.searchCommodities({ query: 'office chairs' }); +const ranking = await client.tradeIntel.topImporters({ hs4: results[0].hs4, months: 12 }); +``` + +Volume is physical containers, each counted once. Estimated values are modelled USD estimates, not declared customs values. `trends` and `breakdown` include the current, partial month by default. Company names are split by state and large importers use several names, so treat a company's figures as a floor. See the [Trade Intelligence API reference](/api-docs/api-reference/trade-intelligence/get-trade-intelligence-coverage) for every field and caveat. + ## Helpers and aliases | Method | Description | diff --git a/docs/sdk/reference/client/classes/Terminal49Client.mdx b/docs/sdk/reference/client/classes/Terminal49Client.mdx index 6421e6ef2..14309e0bb 100644 --- a/docs/sdk/reference/client/classes/Terminal49Client.mdx +++ b/docs/sdk/reference/client/classes/Terminal49Client.mdx @@ -29,62 +29,63 @@ data from Node.js applications. ## Properties -| Property | Modifier | Type | -| ------ | ------ | ------ | -| `containers` | `public` | [`ContainerManager`](/sdk/reference/client/managers/classes/ContainerManager) | -| `customFieldDefinitions` | `public` | `object` | -| `customFieldDefinitions.create` | `public` | (`payload`, `options?`) => `Promise`\<`any`\> | -| `customFieldDefinitions.delete` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `customFieldDefinitions.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `customFieldDefinitions.list` | `public` | (`options?`) => `Promise`\<`any`\> | -| `customFieldDefinitions.update` | `public` | (`id`, `payload`, `options?`) => `Promise`\<`any`\> | -| `customFieldOptions` | `public` | `object` | -| `customFieldOptions.create` | `public` | (`definitionId`, `payload`, `options?`) => `Promise`\<`any`\> | -| `customFieldOptions.delete` | `public` | (`definitionId`, `optionId`, `options?`) => `Promise`\<`any`\> | -| `customFieldOptions.get` | `public` | (`definitionId`, `optionId`, `options?`) => `Promise`\<`any`\> | -| `customFieldOptions.list` | `public` | (`definitionId`, `options?`) => `Promise`\<`any`\> | -| `customFieldOptions.update` | `public` | (`definitionId`, `optionId`, `payload`, `options?`) => `Promise`\<`any`\> | -| `customFields` | `public` | `object` | -| `customFields.create` | `public` | (`payload`, `options?`) => `Promise`\<`any`\> | -| `customFields.delete` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `customFields.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `customFields.list` | `public` | (`options?`) => `Promise`\<`any`\> | -| `customFields.update` | `public` | (`id`, `payload`, `options?`) => `Promise`\<`any`\> | -| `documents` | `public` | [`DocumentManager`](/sdk/reference/client/managers/classes/DocumentManager) | -| `documentSchemas` | `public` | [`DocumentSchemaManager`](/sdk/reference/client/managers/classes/DocumentSchemaManager) | -| `emailSubmissions` | `public` | [`EmailSubmissionManager`](/sdk/reference/client/managers/classes/EmailSubmissionManager) | -| `metroAreas` | `public` | `object` | -| `metroAreas.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `parties` | `public` | `object` | -| `parties.create` | `public` | (`attributes`, `options?`) => `Promise`\<`any`\> | -| `parties.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `parties.list` | `public` | (`options?`) => `Promise`\<`any`\> | -| `parties.update` | `public` | (`id`, `attributes`, `options?`) => `Promise`\<`any`\> | -| `ports` | `public` | `object` | -| `ports.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `shipments` | `public` | [`ShipmentManager`](/sdk/reference/client/managers/classes/ShipmentManager) | -| `shippingLines` | `public` | [`ShippingLineManager`](/sdk/reference/client/managers/classes/ShippingLineManager) | -| `terminals` | `public` | `object` | -| `terminals.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `trackingRequests` | `public` | [`TrackingRequestManager`](/sdk/reference/client/managers/classes/TrackingRequestManager) | -| `vessels` | `public` | `object` | -| `vessels.futurePositions` | `public` | (`id`, `params`, `options?`) => `Promise`\<`any`\> | -| `vessels.futurePositionsWithCoords` | `public` | (`id`, `params`, `options?`) => `Promise`\<`any`\> | -| `vessels.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `vessels.getByImo` | `public` | (`imo`, `options?`) => `Promise`\<`any`\> | -| `webhookNotifications` | `public` | `object` | -| `webhookNotifications.examples` | `public` | (`event`, `options?`) => `Promise`\<`any`\> | -| `webhookNotifications.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `webhookNotifications.list` | `public` | (`options?`) => `Promise`\<`any`\> | -| `webhooks` | `public` | `object` | -| `webhooks.create` | `public` | (`payload`, `options?`) => `Promise`\<`any`\> | -| `webhooks.delete` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `webhooks.events` | `public` | (`options?`) => `Promise`\<`any`\> | -| `webhooks.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | -| `webhooks.ips` | `public` | (`options?`) => `Promise`\<`any`\> | -| `webhooks.list` | `public` | (`options?`) => `Promise`\<`any`\> | -| `webhooks.trigger` | `public` | (`params`, `options?`) => `Promise`\<`any`\> | -| `webhooks.update` | `public` | (`id`, `payload`, `options?`) => `Promise`\<`any`\> | +| Property | Modifier | Type | Description | +| ------ | ------ | ------ | ------ | +| `containers` | `public` | [`ContainerManager`](/sdk/reference/client/managers/classes/ContainerManager) | - | +| `customFieldDefinitions` | `public` | `object` | - | +| `customFieldDefinitions.create` | `public` | (`payload`, `options?`) => `Promise`\<`any`\> | - | +| `customFieldDefinitions.delete` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `customFieldDefinitions.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `customFieldDefinitions.list` | `public` | (`options?`) => `Promise`\<`any`\> | - | +| `customFieldDefinitions.update` | `public` | (`id`, `payload`, `options?`) => `Promise`\<`any`\> | - | +| `customFieldOptions` | `public` | `object` | - | +| `customFieldOptions.create` | `public` | (`definitionId`, `payload`, `options?`) => `Promise`\<`any`\> | - | +| `customFieldOptions.delete` | `public` | (`definitionId`, `optionId`, `options?`) => `Promise`\<`any`\> | - | +| `customFieldOptions.get` | `public` | (`definitionId`, `optionId`, `options?`) => `Promise`\<`any`\> | - | +| `customFieldOptions.list` | `public` | (`definitionId`, `options?`) => `Promise`\<`any`\> | - | +| `customFieldOptions.update` | `public` | (`definitionId`, `optionId`, `payload`, `options?`) => `Promise`\<`any`\> | - | +| `customFields` | `public` | `object` | - | +| `customFields.create` | `public` | (`payload`, `options?`) => `Promise`\<`any`\> | - | +| `customFields.delete` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `customFields.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `customFields.list` | `public` | (`options?`) => `Promise`\<`any`\> | - | +| `customFields.update` | `public` | (`id`, `payload`, `options?`) => `Promise`\<`any`\> | - | +| `documents` | `public` | [`DocumentManager`](/sdk/reference/client/managers/classes/DocumentManager) | - | +| `documentSchemas` | `public` | [`DocumentSchemaManager`](/sdk/reference/client/managers/classes/DocumentSchemaManager) | - | +| `emailSubmissions` | `public` | [`EmailSubmissionManager`](/sdk/reference/client/managers/classes/EmailSubmissionManager) | - | +| `metroAreas` | `public` | `object` | - | +| `metroAreas.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `parties` | `public` | `object` | - | +| `parties.create` | `public` | (`attributes`, `options?`) => `Promise`\<`any`\> | - | +| `parties.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `parties.list` | `public` | (`options?`) => `Promise`\<`any`\> | - | +| `parties.update` | `public` | (`id`, `attributes`, `options?`) => `Promise`\<`any`\> | - | +| `ports` | `public` | `object` | - | +| `ports.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `shipments` | `public` | [`ShipmentManager`](/sdk/reference/client/managers/classes/ShipmentManager) | - | +| `shippingLines` | `public` | [`ShippingLineManager`](/sdk/reference/client/managers/classes/ShippingLineManager) | - | +| `terminals` | `public` | `object` | - | +| `terminals.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `trackingRequests` | `public` | [`TrackingRequestManager`](/sdk/reference/client/managers/classes/TrackingRequestManager) | - | +| `tradeIntel` | `public` | [`TradeIntelManager`](/sdk/reference/client/managers/classes/TradeIntelManager) | Trade intelligence: US import bill-of-lading records (US Customs manifests). Plain JSON responses; requires the trade intelligence feature on the account (otherwise `FeatureNotEnabledError`). | +| `vessels` | `public` | `object` | - | +| `vessels.futurePositions` | `public` | (`id`, `params`, `options?`) => `Promise`\<`any`\> | - | +| `vessels.futurePositionsWithCoords` | `public` | (`id`, `params`, `options?`) => `Promise`\<`any`\> | - | +| `vessels.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `vessels.getByImo` | `public` | (`imo`, `options?`) => `Promise`\<`any`\> | - | +| `webhookNotifications` | `public` | `object` | - | +| `webhookNotifications.examples` | `public` | (`event`, `options?`) => `Promise`\<`any`\> | - | +| `webhookNotifications.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `webhookNotifications.list` | `public` | (`options?`) => `Promise`\<`any`\> | - | +| `webhooks` | `public` | `object` | - | +| `webhooks.create` | `public` | (`payload`, `options?`) => `Promise`\<`any`\> | - | +| `webhooks.delete` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `webhooks.events` | `public` | (`options?`) => `Promise`\<`any`\> | - | +| `webhooks.get` | `public` | (`id`, `options?`) => `Promise`\<`any`\> | - | +| `webhooks.ips` | `public` | (`options?`) => `Promise`\<`any`\> | - | +| `webhooks.list` | `public` | (`options?`) => `Promise`\<`any`\> | - | +| `webhooks.trigger` | `public` | (`params`, `options?`) => `Promise`\<`any`\> | - | +| `webhooks.update` | `public` | (`id`, `payload`, `options?`) => `Promise`\<`any`\> | - | ## Methods diff --git a/docs/sdk/reference/client/interceptors/classes/RetryInterceptor.mdx b/docs/sdk/reference/client/interceptors/classes/RetryInterceptor.mdx index 9ea2e835e..74341098d 100644 --- a/docs/sdk/reference/client/interceptors/classes/RetryInterceptor.mdx +++ b/docs/sdk/reference/client/interceptors/classes/RetryInterceptor.mdx @@ -12,8 +12,10 @@ Retries transient failures with backoff. Two kinds of failure are handled: `onError` — these never reach `onResponse` because `fetch` rejected. Retries are gated by shouldRetryRequest: idempotent methods are always -eligible, but non-idempotent writes are only retried when the caller supplied -an `Idempotency-Key` header. 429 backoff honors the server's `Retry-After`. +eligible, as are read-only query `POST`s (the `/trade_intel/` routes, whose +body is a query and creates nothing). Other non-idempotent writes are only +retried when the caller supplied an `Idempotency-Key` header. 429 backoff +honors the server's `Retry-After`. ## Constructors @@ -63,7 +65,7 @@ NetworkError so error mapping is consistent with the response path. | Parameter | Type | | ------ | ------ | -| `__namedParameters` | `Pick`\<`MiddlewareCallbackParams`, `"id"` \| `"request"`\> | +| `__namedParameters` | `RetryRequestParams` | #### Returns diff --git a/docs/sdk/reference/client/managers/classes/BaseManager.mdx b/docs/sdk/reference/client/managers/classes/BaseManager.mdx index 3c2436d5e..2604a0bff 100644 --- a/docs/sdk/reference/client/managers/classes/BaseManager.mdx +++ b/docs/sdk/reference/client/managers/classes/BaseManager.mdx @@ -14,6 +14,7 @@ description: "BaseManager class in the Terminal49 TypeScript SDK, the shared bas - [`DocumentManager`](/sdk/reference/client/managers/classes/DocumentManager) - [`EmailSubmissionManager`](/sdk/reference/client/managers/classes/EmailSubmissionManager) - [`DocumentSchemaManager`](/sdk/reference/client/managers/classes/DocumentSchemaManager) +- [`TradeIntelManager`](/sdk/reference/client/managers/classes/TradeIntelManager) ## Constructors diff --git a/docs/sdk/reference/client/managers/classes/TradeIntelManager.mdx b/docs/sdk/reference/client/managers/classes/TradeIntelManager.mdx new file mode 100644 index 000000000..f02045380 --- /dev/null +++ b/docs/sdk/reference/client/managers/classes/TradeIntelManager.mdx @@ -0,0 +1,275 @@ +--- +title: "Class: TradeIntelManager" +--- + +# Class: TradeIntelManager + +Trade intelligence: US import bill-of-lading records (US Customs manifests), +January 2022 onward, refreshed daily. + +These endpoints accept and return plain JSON rather than JSON:API, so every +method resolves to the response body as the API sent it. They are gated per +account: when trade intelligence is not enabled, calls reject with +`FeatureNotEnabledError` (HTTP 403). Invalid input rejects with +`ValidationError` (400 or 422), and 429 / 502 / 504 responses are retried +with backoff like every other read before `RateLimitError` or +`UpstreamError` is thrown. + +Volume figures are physical containers (each box counted once), estimated +values are modelled USD estimates rather than declared customs values, and +the current month is partial. Company names are split by state and large +importers use several names, so absent volume does not mean low volume. + +## Extends + +- [`BaseManager`](/sdk/reference/client/managers/classes/BaseManager) + +## Constructors + +### Constructor + +> **new TradeIntelManager**(`transport`, `defaultFormat?`): `TradeIntelManager` + +#### Parameters + +| Parameter | Type | Default value | +| ------ | ------ | ------ | +| `transport` | [`Transport`](/sdk/reference/client/transport/classes/Transport) | `undefined` | +| `defaultFormat` | [`ResponseFormat`](/sdk/reference/types/options/type-aliases/ResponseFormat) | `'raw'` | + +#### Returns + +`TradeIntelManager` + +#### Inherited from + +[`BaseManager`](/sdk/reference/client/managers/classes/BaseManager).[`constructor`](/sdk/reference/client/managers/classes/BaseManager#constructor) + +## Methods + +### breakdown() + +> **breakdown**(`request`): `Promise`\<\{ `dims`: (`"reefer"` \| `"carrier"` \| `"scac"` \| `"origin_country"` \| `"origin_region"` \| `"pod"` \| `"pod_coast"` \| `"dest_state"` \| `"pol"` \| `"pol_country"` \| `"container_type"` \| `"company"` \| `"company_state"` \| `"hs4"` \| `"hs2"`)[]; `fact`: `string`; `filters`: \{ `carrier?`: `string` \| `null`; `company?`: `string` \| `null`; `company_state?`: `string` \| `null`; `container_type?`: `string` \| `null`; `dest_state?`: `string` \| `null`; `hs2?`: `string` \| `null`; `hs4?`: `string` \| `null`; `origin_country?`: `string` \| `null`; `origin_region?`: `string` \| `null`; `pod?`: `string` \| `null`; `pod_coast?`: `"EAST"` \| `"WEST"` \| `"GULF"` \| `null`; `pol?`: `string` \| `null`; `pol_country?`: `string` \| `null`; `reefer?`: `boolean` \| `null`; `scac?`: `string` \| `null`; \}; `measure`: `"containers"` \| `"teus"` \| `"estimated_value"`; `notes`: `string`[]; `rows`: `object` & `object`[]; `since`: `string`; `until`: `string`; \}\> + +Nested totals over a dimension hierarchy, with a grand total and +subtotals at every level. Defaults to the 12 months ending with the +current, partial month. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `request` | \{ `dims`: (`"reefer"` \| `"carrier"` \| `"scac"` \| `"origin_country"` \| `"origin_region"` \| `"pod"` \| `"pod_coast"` \| `"dest_state"` \| `"pol"` \| `"pol_country"` \| `"container_type"` \| `"company"` \| `"company_state"` \| `"hs4"` \| `"hs2"`)[]; `filters?`: \{ `carrier?`: `string` \| `null`; `company?`: `string` \| `null`; `company_state?`: `string` \| `null`; `container_type?`: `string` \| `null`; `dest_state?`: `string` \| `null`; `hs2?`: `string` \| `null`; `hs4?`: `string` \| `null`; `origin_country?`: `string` \| `null`; `origin_region?`: `string` \| `null`; `pod?`: `string` \| `null`; `pod_coast?`: `"EAST"` \| `"WEST"` \| `"GULF"` \| `null`; `pol?`: `string` \| `null`; `pol_country?`: `string` \| `null`; `reefer?`: `boolean` \| `null`; `scac?`: `string` \| `null`; \}; `measure?`: `"containers"` \| `"teus"` \| `"estimated_value"`; `since?`: `string` \| `null`; `top?`: `number`; `until?`: `string` \| `null`; \} | - | +| `request.dims` | (`"reefer"` \| `"carrier"` \| `"scac"` \| `"origin_country"` \| `"origin_region"` \| `"pod"` \| `"pod_coast"` \| `"dest_state"` \| `"pol"` \| `"pol_country"` \| `"container_type"` \| `"company"` \| `"company_state"` \| `"hs4"` \| `"hs2"`)[] | **Description** Hierarchy, outermost first, for example `["origin_region", "origin_country", "pod"]` or `["hs2", "hs4"]`. | +| `request.filters?` | \{ `carrier?`: `string` \| `null`; `company?`: `string` \| `null`; `company_state?`: `string` \| `null`; `container_type?`: `string` \| `null`; `dest_state?`: `string` \| `null`; `hs2?`: `string` \| `null`; `hs4?`: `string` \| `null`; `origin_country?`: `string` \| `null`; `origin_region?`: `string` \| `null`; `pod?`: `string` \| `null`; `pod_coast?`: `"EAST"` \| `"WEST"` \| `"GULF"` \| `null`; `pol?`: `string` \| `null`; `pol_country?`: `string` \| `null`; `reefer?`: `boolean` \| `null`; `scac?`: `string` \| `null`; \} | - | +| `request.filters.carrier?` | `string` \| `null` | **Description** Substring of the ocean carrier name as it appears on manifests. Carriers appear under spelling variants; prefer `scac` for an exact match. **Example** `MAERSK` | +| `request.filters.company?` | `string` \| `null` | **Description** Case-insensitive **substring** match on the company name, so `IKEA` also matches `IKEA SUPPLY AG`. For one company's own figures use `companies/profile`, which matches the exact name. **Example** `CATERPILLAR` | +| `request.filters.company_state?` | `string` \| `null` | **Description** Two-letter US state of the importer; exact match. **Example** `IL` | +| `request.filters.container_type?` | `string` \| `null` | **Description** Substring of the container type description. | +| `request.filters.dest_state?` | `string` \| `null` | **Description** Two-letter destination US state; exact match. **Example** `TX` | +| `request.filters.hs2?` | `string` \| `null` | **Description** 2-digit HS chapter; exact match. **Example** `03` | +| `request.filters.hs4?` | `string` \| `null` | **Description** 4-digit HS heading; exact match. Use `commodities/search` to find one. **Example** `0306` | +| `request.filters.origin_country?` | `string` \| `null` | **Description** Substring of the origin country as spelled on manifests, for example `china` matches `PEOPLES REP OF CHINA`. **Example** `vietnam` | +| `request.filters.origin_region?` | `string` \| `null` | **Description** Substring of the origin region. | +| `request.filters.pod?` | `string` \| `null` | **Description** Substring of the US port of discharge. **Example** `savannah` | +| `request.filters.pod_coast?` | `"EAST"` \| `"WEST"` \| `"GULF"` \| `null` | **Description** US coast of the port of discharge; exact match. | +| `request.filters.pol?` | `string` \| `null` | **Description** Substring of the foreign port of lading. | +| `request.filters.pol_country?` | `string` \| `null` | **Description** Substring of the port-of-lading country. | +| `request.filters.reefer?` | `boolean` \| `null` | **Description** Only refrigerated (`true`) or only dry (`false`) containers. | +| `request.filters.scac?` | `string` \| `null` | **Description** Carrier SCAC; exact match. **Example** `MAEU` | +| `request.measure?` | `"containers"` \| `"teus"` \| `"estimated_value"` | - | +| `request.since?` | `string` \| `null` | **Description** First month, `YYYY-MM` inclusive. Defaults to 11 months before `until`, so the default range covers 12 months. **Example** `2025-10` | +| `request.top?` | `number` | **Description** Top N children under each parent. **Default** `10` | +| `request.until?` | `string` \| `null` | **Description** Last month, `YYYY-MM` inclusive. Defaults to the current, partial month. **Example** `2026-09` | + +#### Returns + +`Promise`\<\{ `dims`: (`"reefer"` \| `"carrier"` \| `"scac"` \| `"origin_country"` \| `"origin_region"` \| `"pod"` \| `"pod_coast"` \| `"dest_state"` \| `"pol"` \| `"pol_country"` \| `"container_type"` \| `"company"` \| `"company_state"` \| `"hs4"` \| `"hs2"`)[]; `fact`: `string`; `filters`: \{ `carrier?`: `string` \| `null`; `company?`: `string` \| `null`; `company_state?`: `string` \| `null`; `container_type?`: `string` \| `null`; `dest_state?`: `string` \| `null`; `hs2?`: `string` \| `null`; `hs4?`: `string` \| `null`; `origin_country?`: `string` \| `null`; `origin_region?`: `string` \| `null`; `pod?`: `string` \| `null`; `pod_coast?`: `"EAST"` \| `"WEST"` \| `"GULF"` \| `null`; `pol?`: `string` \| `null`; `pol_country?`: `string` \| `null`; `reefer?`: `boolean` \| `null`; `scac?`: `string` \| `null`; \}; `measure`: `"containers"` \| `"teus"` \| `"estimated_value"`; `notes`: `string`[]; `rows`: `object` & `object`[]; `since`: `string`; `until`: `string`; \}\> + +*** + +### companyProfile() + +> **companyProfile**(`request`): `Promise`\<\{ `carriers?`: `object`[]; `commodities_hs4?`: `object`[]; `company_name`: `string`; `company_state`: `string` \| `null`; `destination_states?`: `object`[]; `found`: `boolean`; `monthly?`: `object`[]; `notes?`: `string`[]; `origin_countries?`: `object`[]; `ports_of_discharge?`: `object`[]; `since`: `string`; `totals?`: \{ `containers`: `number`; `containers_as_consignee`: `number`; `containers_as_notify_party`: `number`; `states`: `string`[] \| `null`; `teus`: `number`; \}; `until?`: `string`; \}\> + +Import profile for one company over full calendar months. `company_name` +must be the exact name returned by [searchCompanies](#searchcompanies). + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `request` | \{ `company_name`: `string`; `company_state?`: `string` \| `null`; `months?`: `number`; \} | - | +| `request.company_name` | `string` | **Description** Exact `company_name` from `companies/search`. **Example** `CATERPILLAR` | +| `request.company_state?` | `string` \| `null` | **Description** Restrict to one state; omit for all states. **Example** `IL` | +| `request.months?` | `number` | **Description** Full calendar months ending last month. Use 24 or more for a year-over-year view. **Default** `12` | + +#### Returns + +`Promise`\<\{ `carriers?`: `object`[]; `commodities_hs4?`: `object`[]; `company_name`: `string`; `company_state`: `string` \| `null`; `destination_states?`: `object`[]; `found`: `boolean`; `monthly?`: `object`[]; `notes?`: `string`[]; `origin_countries?`: `object`[]; `ports_of_discharge?`: `object`[]; `since`: `string`; `totals?`: \{ `containers`: `number`; `containers_as_consignee`: `number`; `containers_as_notify_party`: `number`; `states`: `string`[] \| `null`; `teus`: `number`; \}; `until?`: `string`; \}\> + +*** + +### lookupBillOfLading() + +> **lookupBillOfLading**(`bolNumber`, `options?`): `Promise`\<\{ `bills_matched?`: `number`; `bills_truncated?`: `boolean`; `bol_number`: `string`; `commodities?`: `object`[]; `commodities_truncated?`: `boolean`; `containers?`: `object`[]; `containers_truncated?`: `boolean`; `found`: `boolean`; `searched_since`: `string`; \}\> + +The import record for a master or house bill of lading: containers, +parties, and commodity lines. Searches the last `months` months +(default 12). + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `bolNumber` | `string` | +| `options` | [`TradeIntelBillOfLadingLookupOptions`](/sdk/reference/client/managers/interfaces/TradeIntelBillOfLadingLookupOptions) | + +#### Returns + +`Promise`\<\{ `bills_matched?`: `number`; `bills_truncated?`: `boolean`; `bol_number`: `string`; `commodities?`: `object`[]; `commodities_truncated?`: `boolean`; `containers?`: `object`[]; `containers_truncated?`: `boolean`; `found`: `boolean`; `searched_since`: `string`; \}\> + +*** + +### lookupContainer() + +> **lookupContainer**(`containerNumber`): `Promise`\<\{ `bills_of_lading?`: `object`[]; `commodities?`: `object`[]; `commodities_truncated?`: `boolean`; `container_number`: `string`; `error?`: `string`; `found`: `boolean`; `latest_import?`: \{\[`key`: `string`\]: `unknown`; \}; `note?`: `string`; \}\> + +The most recent US import of a container: its bills of lading, parties, +and commodity lines. Resolves with `found: false` (HTTP 200) when the +number is malformed or no import is on record. + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `containerNumber` | `string` | + +#### Returns + +`Promise`\<\{ `bills_of_lading?`: `object`[]; `commodities?`: `object`[]; `commodities_truncated?`: `boolean`; `container_number`: `string`; `error?`: `string`; `found`: `boolean`; `latest_import?`: \{\[`key`: `string`\]: `unknown`; \}; `note?`: `string`; \}\> + +*** + +### meta() + +> **meta**(): `Promise`\<\{ `built_at`: `string`; `companies`: `number`; `fact_rows`: \{ `commodity_month`: `number`; `company_month`: `number`; `hs_lane_month`: `number`; `lane_month`: `number`; \}; `facts_hash`: `string`; `facts_since_month`: `string`; `facts_until_exclusive`: `string`; `hs_codes`: `number`; `min_containers`: `number`; `mode`: `string`; `months`: `number`; `partial_month`: `string`; `refreshed_since`: `string`; `since_month`: `string`; `until_month_exclusive`: `string`; `volume_measure`: `string`; \}\> + +Index window, history start, partial month, and build time. Also the +cheapest way to check whether the account has trade intelligence enabled. + +#### Returns + +`Promise`\<\{ `built_at`: `string`; `companies`: `number`; `fact_rows`: \{ `commodity_month`: `number`; `company_month`: `number`; `hs_lane_month`: `number`; `lane_month`: `number`; \}; `facts_hash`: `string`; `facts_since_month`: `string`; `facts_until_exclusive`: `string`; `hs_codes`: `number`; `min_containers`: `number`; `mode`: `string`; `months`: `number`; `partial_month`: `string`; `refreshed_since`: `string`; `since_month`: `string`; `until_month_exclusive`: `string`; `volume_measure`: `string`; \}\> + +*** + +### searchCommodities() + +> **searchCommodities**(`request`): `Promise`\<\{ `results`: `object`[]; \}\> + +Resolve a product description or HS code prefix to 4-digit HS headings. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `request` | \{ `limit?`: `number`; `query`: `string`; \} | - | +| `request.limit?` | `number` | **Description** Maximum results to return. **Default** `10` | +| `request.query` | `string` | **Description** Product description in plain words, or an HS code prefix. **Example** `office chairs` | + +#### Returns + +`Promise`\<\{ `results`: `object`[]; \}\> + +*** + +### searchCompanies() + +> **searchCompanies**(`request?`): `Promise`\<\{ `index`: \{ `built_at`: `string`; `companies`: `number`; `fact_rows`: \{ `commodity_month`: `number`; `company_month`: `number`; `hs_lane_month`: `number`; `lane_month`: `number`; \}; `facts_hash`: `string`; `facts_since_month`: `string`; `facts_until_exclusive`: `string`; `hs_codes`: `number`; `min_containers`: `number`; `mode`: `string`; `months`: `number`; `partial_month`: `string`; `refreshed_since`: `string`; `since_month`: `string`; `until_month_exclusive`: `string`; `volume_measure`: `string`; \}; `results`: `object`[]; \}\> + +Find US importers by name (fuzzy), by what they import (semantic), or +both. Results are ranked by match quality, not size. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `request` | \{ `imports?`: `string` \| `null`; `limit?`: `number`; `min_containers?`: `number` \| `null`; `name?`: `string` \| `null`; `origin_country?`: `string` \| `null`; `port_of_discharge?`: `string` \| `null`; `state?`: `string` \| `null`; \} | - | +| `request.imports?` | `string` \| `null` | **Description** What the company imports, in plain words (semantic match). **Example** `frozen shrimp` | +| `request.limit?` | `number` | **Description** Maximum results to return. **Default** `10` | +| `request.min_containers?` | `number` \| `null` | **Description** Minimum containers in the index window. | +| `request.name?` | `string` \| `null` | **Description** Company name; partial or misspelled is fine (fuzzy match). Results are ranked by match quality, not size, so a close but small match can outrank a large importer. **Example** `home depot` | +| `request.origin_country?` | `string` \| `null` | **Description** Substring of an origin country. **Example** `Vietnam` | +| `request.port_of_discharge?` | `string` \| `null` | **Description** Substring of a US port name. **Example** `Long Beach` | +| `request.state?` | `string` \| `null` | **Description** US state code of the importer. **Example** `FL` | + +#### Returns + +`Promise`\<\{ `index`: \{ `built_at`: `string`; `companies`: `number`; `fact_rows`: \{ `commodity_month`: `number`; `company_month`: `number`; `hs_lane_month`: `number`; `lane_month`: `number`; \}; `facts_hash`: `string`; `facts_since_month`: `string`; `facts_until_exclusive`: `string`; `hs_codes`: `number`; `min_containers`: `number`; `mode`: `string`; `months`: `number`; `partial_month`: `string`; `refreshed_since`: `string`; `since_month`: `string`; `until_month_exclusive`: `string`; `volume_measure`: `string`; \}; `results`: `object`[]; \}\> + +*** + +### topImporters() + +> **topImporters**(`request?`): `Promise`\<\{ `filters`: \{ `hs4?`: `string`; `origin_country?`: `string`; `pod?`: `string`; \}; `importers`: `object`[]; `notes`: `string`[]; `ranked_by`: `string`; `since`: `string`; `until`: `string`; \}\> + +Rank US importers by physical containers, optionally for one HS4 heading, +port of discharge, or origin country. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `request` | \{ `hs4?`: `string` \| `null`; `limit?`: `number`; `months?`: `number`; `origin_country?`: `string` \| `null`; `port_of_discharge?`: `string` \| `null`; \} | - | +| `request.hs4?` | `string` \| `null` | **Description** 4-digit HS heading: rank importers of containers carrying it. Any other value returns `400`. Use `commodities/search` to find one. **Example** `0306` | +| `request.limit?` | `number` | **Description** Maximum importers to return. **Default** `20` | +| `request.months?` | `number` | **Description** Full calendar months ending last month. **Default** `12` | +| `request.origin_country?` | `string` \| `null` | **Description** Substring of an origin country. **Example** `vietnam` | +| `request.port_of_discharge?` | `string` \| `null` | **Description** Substring of a US port name. **Example** `savannah` | + +#### Returns + +`Promise`\<\{ `filters`: \{ `hs4?`: `string`; `origin_country?`: `string`; `pod?`: `string`; \}; `importers`: `object`[]; `notes`: `string`[]; `ranked_by`: `string`; `since`: `string`; `until`: `string`; \}\> + +*** + +### trends() + +> **trends**(`request?`): `Promise`\<\{ `fact`: `string`; `filters`: \{ `carrier?`: `string` \| `null`; `company?`: `string` \| `null`; `company_state?`: `string` \| `null`; `container_type?`: `string` \| `null`; `dest_state?`: `string` \| `null`; `hs2?`: `string` \| `null`; `hs4?`: `string` \| `null`; `origin_country?`: `string` \| `null`; `origin_region?`: `string` \| `null`; `pod?`: `string` \| `null`; `pod_coast?`: `"EAST"` \| `"WEST"` \| `"GULF"` \| `null`; `pol?`: `string` \| `null`; `pol_country?`: `string` \| `null`; `reefer?`: `boolean` \| `null`; `scac?`: `string` \| `null`; \}; `group_by`: (`"reefer"` \| `"carrier"` \| `"scac"` \| `"origin_country"` \| `"origin_region"` \| `"pod"` \| `"pod_coast"` \| `"dest_state"` \| `"pol"` \| `"pol_country"` \| `"container_type"` \| `"company"` \| `"company_state"` \| `"hs4"` \| `"hs2"`)[]; `interval`: `"month"` \| `"quarter"` \| `"year"`; `measure`: `"containers"` \| `"teus"` \| `"estimated_value"`; `notes`: `string`[]; `series`: `object` & `object`[]; `since`: `string`; `until`: `string`; \}\> + +Time series of containers, TEUs, or estimated value, optionally split by +up to two dimensions. Defaults to the 24 months ending with the current, +partial month. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `request` | \{ `filters?`: \{ `carrier?`: `string` \| `null`; `company?`: `string` \| `null`; `company_state?`: `string` \| `null`; `container_type?`: `string` \| `null`; `dest_state?`: `string` \| `null`; `hs2?`: `string` \| `null`; `hs4?`: `string` \| `null`; `origin_country?`: `string` \| `null`; `origin_region?`: `string` \| `null`; `pod?`: `string` \| `null`; `pod_coast?`: `"EAST"` \| `"WEST"` \| `"GULF"` \| `null`; `pol?`: `string` \| `null`; `pol_country?`: `string` \| `null`; `reefer?`: `boolean` \| `null`; `scac?`: `string` \| `null`; \}; `group_by?`: (`"reefer"` \| `"carrier"` \| `"scac"` \| `"origin_country"` \| `"origin_region"` \| `"pod"` \| `"pod_coast"` \| `"dest_state"` \| `"pol"` \| `"pol_country"` \| `"container_type"` \| `"company"` \| `"company_state"` \| `"hs4"` \| `"hs2"`)[]; `interval?`: `"month"` \| `"quarter"` \| `"year"`; `measure?`: `"containers"` \| `"teus"` \| `"estimated_value"`; `since?`: `string` \| `null`; `top?`: `number`; `until?`: `string` \| `null`; \} | - | +| `request.filters?` | \{ `carrier?`: `string` \| `null`; `company?`: `string` \| `null`; `company_state?`: `string` \| `null`; `container_type?`: `string` \| `null`; `dest_state?`: `string` \| `null`; `hs2?`: `string` \| `null`; `hs4?`: `string` \| `null`; `origin_country?`: `string` \| `null`; `origin_region?`: `string` \| `null`; `pod?`: `string` \| `null`; `pod_coast?`: `"EAST"` \| `"WEST"` \| `"GULF"` \| `null`; `pol?`: `string` \| `null`; `pol_country?`: `string` \| `null`; `reefer?`: `boolean` \| `null`; `scac?`: `string` \| `null`; \} | - | +| `request.filters.carrier?` | `string` \| `null` | **Description** Substring of the ocean carrier name as it appears on manifests. Carriers appear under spelling variants; prefer `scac` for an exact match. **Example** `MAERSK` | +| `request.filters.company?` | `string` \| `null` | **Description** Case-insensitive **substring** match on the company name, so `IKEA` also matches `IKEA SUPPLY AG`. For one company's own figures use `companies/profile`, which matches the exact name. **Example** `CATERPILLAR` | +| `request.filters.company_state?` | `string` \| `null` | **Description** Two-letter US state of the importer; exact match. **Example** `IL` | +| `request.filters.container_type?` | `string` \| `null` | **Description** Substring of the container type description. | +| `request.filters.dest_state?` | `string` \| `null` | **Description** Two-letter destination US state; exact match. **Example** `TX` | +| `request.filters.hs2?` | `string` \| `null` | **Description** 2-digit HS chapter; exact match. **Example** `03` | +| `request.filters.hs4?` | `string` \| `null` | **Description** 4-digit HS heading; exact match. Use `commodities/search` to find one. **Example** `0306` | +| `request.filters.origin_country?` | `string` \| `null` | **Description** Substring of the origin country as spelled on manifests, for example `china` matches `PEOPLES REP OF CHINA`. **Example** `vietnam` | +| `request.filters.origin_region?` | `string` \| `null` | **Description** Substring of the origin region. | +| `request.filters.pod?` | `string` \| `null` | **Description** Substring of the US port of discharge. **Example** `savannah` | +| `request.filters.pod_coast?` | `"EAST"` \| `"WEST"` \| `"GULF"` \| `null` | **Description** US coast of the port of discharge; exact match. | +| `request.filters.pol?` | `string` \| `null` | **Description** Substring of the foreign port of lading. | +| `request.filters.pol_country?` | `string` \| `null` | **Description** Substring of the port-of-lading country. | +| `request.filters.reefer?` | `boolean` \| `null` | **Description** Only refrigerated (`true`) or only dry (`false`) containers. | +| `request.filters.scac?` | `string` \| `null` | **Description** Carrier SCAC; exact match. **Example** `MAEU` | +| `request.group_by?` | (`"reefer"` \| `"carrier"` \| `"scac"` \| `"origin_country"` \| `"origin_region"` \| `"pod"` \| `"pod_coast"` \| `"dest_state"` \| `"pol"` \| `"pol_country"` \| `"container_type"` \| `"company"` \| `"company_state"` \| `"hs4"` \| `"hs2"`)[] | **Description** Split the series by up to two dimensions, keeping the top `top` groups. | +| `request.interval?` | `"month"` \| `"quarter"` \| `"year"` | - | +| `request.measure?` | `"containers"` \| `"teus"` \| `"estimated_value"` | - | +| `request.since?` | `string` \| `null` | **Description** First period, `YYYY-MM` inclusive. Defaults to 23 months before `until`, so the default series covers 24 months; history is available back to January 2022 (`facts_since_month` in `meta`). **Example** `2024-01` | +| `request.top?` | `number` | **Description** Keep the top N groups by total over the range. **Default** `10` | +| `request.until?` | `string` \| `null` | **Description** Last period, `YYYY-MM` inclusive. Defaults to the current, partial month. **Example** `2026-09` | + +#### Returns + +`Promise`\<\{ `fact`: `string`; `filters`: \{ `carrier?`: `string` \| `null`; `company?`: `string` \| `null`; `company_state?`: `string` \| `null`; `container_type?`: `string` \| `null`; `dest_state?`: `string` \| `null`; `hs2?`: `string` \| `null`; `hs4?`: `string` \| `null`; `origin_country?`: `string` \| `null`; `origin_region?`: `string` \| `null`; `pod?`: `string` \| `null`; `pod_coast?`: `"EAST"` \| `"WEST"` \| `"GULF"` \| `null`; `pol?`: `string` \| `null`; `pol_country?`: `string` \| `null`; `reefer?`: `boolean` \| `null`; `scac?`: `string` \| `null`; \}; `group_by`: (`"reefer"` \| `"carrier"` \| `"scac"` \| `"origin_country"` \| `"origin_region"` \| `"pod"` \| `"pod_coast"` \| `"dest_state"` \| `"pol"` \| `"pol_country"` \| `"container_type"` \| `"company"` \| `"company_state"` \| `"hs4"` \| `"hs2"`)[]; `interval`: `"month"` \| `"quarter"` \| `"year"`; `measure`: `"containers"` \| `"teus"` \| `"estimated_value"`; `notes`: `string`[]; `series`: `object` & `object`[]; `since`: `string`; `until`: `string`; \}\> diff --git a/docs/sdk/reference/client/managers/index.mdx b/docs/sdk/reference/client/managers/index.mdx index 092c2b48a..2795a85b4 100644 --- a/docs/sdk/reference/client/managers/index.mdx +++ b/docs/sdk/reference/client/managers/index.mdx @@ -17,6 +17,7 @@ description: "Reference for the Terminal49 TypeScript SDK managers module: conta | [ShipmentManager](/sdk/reference/client/managers/classes/ShipmentManager) | - | | [ShippingLineManager](/sdk/reference/client/managers/classes/ShippingLineManager) | - | | [TrackingRequestManager](/sdk/reference/client/managers/classes/TrackingRequestManager) | - | +| [TradeIntelManager](/sdk/reference/client/managers/classes/TradeIntelManager) | Trade intelligence: US import bill-of-lading records (US Customs manifests), January 2022 onward, refreshed daily. | ## Interfaces @@ -29,6 +30,7 @@ description: "Reference for the Terminal49 TypeScript SDK managers module: conta | [IterateOptions](/sdk/reference/client/managers/interfaces/IterateOptions) | Options accepted by BaseManager.createIterator. | | [ShipmentAddPartyRoleParams](/sdk/reference/client/managers/interfaces/ShipmentAddPartyRoleParams) | Parameters for `addPartyRole`; `role` is limited to what the spec accepts on this route. | | [TrackingRequestListFilters](/sdk/reference/client/managers/interfaces/TrackingRequestListFilters) | - | +| [TradeIntelBillOfLadingLookupOptions](/sdk/reference/client/managers/interfaces/TradeIntelBillOfLadingLookupOptions) | Options for [TradeIntelManager.lookupBillOfLading](/sdk/reference/client/managers/classes/TradeIntelManager#lookupbilloflading). | | [UpdateDocumentParams](/sdk/reference/client/managers/interfaces/UpdateDocumentParams) | Attributes accepted by [DocumentManager.update](/sdk/reference/client/managers/classes/DocumentManager#update). | ## Type Aliases @@ -40,6 +42,25 @@ description: "Reference for the Terminal49 TypeScript SDK managers module: conta | [ShipmentUpdateAttributes](/sdk/reference/client/managers/type-aliases/ShipmentUpdateAttributes) | Writable shipment attributes. Each list replaces the existing one. | | [TrackingRequestType](/sdk/reference/client/managers/type-aliases/TrackingRequestType) | - | | [TrackingRequestUpdateAttributes](/sdk/reference/client/managers/type-aliases/TrackingRequestUpdateAttributes) | Writable tracking request attributes. `ref_numbers` replaces the existing list. | +| [TradeIntelBillOfLadingLookup](/sdk/reference/client/managers/type-aliases/TradeIntelBillOfLadingLookup) | Response of `POST /trade_intel/bills_of_lading/lookup`. | +| [TradeIntelBreakdown](/sdk/reference/client/managers/type-aliases/TradeIntelBreakdown) | Response of `POST /trade_intel/breakdown`. | +| [TradeIntelBreakdownRequest](/sdk/reference/client/managers/type-aliases/TradeIntelBreakdownRequest) | Body of `POST /trade_intel/breakdown`. | +| [TradeIntelCommoditySearchRequest](/sdk/reference/client/managers/type-aliases/TradeIntelCommoditySearchRequest) | Body of `POST /trade_intel/commodities/search`. | +| [TradeIntelCommoditySearchResponse](/sdk/reference/client/managers/type-aliases/TradeIntelCommoditySearchResponse) | Response of `POST /trade_intel/commodities/search`. | +| [TradeIntelCompanyProfile](/sdk/reference/client/managers/type-aliases/TradeIntelCompanyProfile) | Response of `POST /trade_intel/companies/profile`. | +| [TradeIntelCompanyProfileRequest](/sdk/reference/client/managers/type-aliases/TradeIntelCompanyProfileRequest) | Body of `POST /trade_intel/companies/profile`. | +| [TradeIntelCompanySearchRequest](/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchRequest) | Body of `POST /trade_intel/companies/search`. | +| [TradeIntelCompanySearchResponse](/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchResponse) | Response of `POST /trade_intel/companies/search`. | +| [TradeIntelCompanySearchResult](/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchResult) | One importer returned by `searchCompanies`. | +| [TradeIntelContainerLookup](/sdk/reference/client/managers/type-aliases/TradeIntelContainerLookup) | Response of `POST /trade_intel/containers/lookup`. | +| [TradeIntelDimension](/sdk/reference/client/managers/type-aliases/TradeIntelDimension) | A dimension accepted by `group_by` (trends) and `dims` (breakdown). | +| [TradeIntelFilters](/sdk/reference/client/managers/type-aliases/TradeIntelFilters) | Filters accepted by `trends` and `breakdown`. | +| [TradeIntelMeasure](/sdk/reference/client/managers/type-aliases/TradeIntelMeasure) | A measure accepted by `trends` and `breakdown`. | +| [TradeIntelMeta](/sdk/reference/client/managers/type-aliases/TradeIntelMeta) | Index window, freshness, and counts returned by `GET /trade_intel/meta`. | +| [TradeIntelTopImporters](/sdk/reference/client/managers/type-aliases/TradeIntelTopImporters) | Response of `POST /trade_intel/importers/top`. | +| [TradeIntelTopImportersRequest](/sdk/reference/client/managers/type-aliases/TradeIntelTopImportersRequest) | Body of `POST /trade_intel/importers/top`. | +| [TradeIntelTrends](/sdk/reference/client/managers/type-aliases/TradeIntelTrends) | Response of `POST /trade_intel/trends`. | +| [TradeIntelTrendsRequest](/sdk/reference/client/managers/type-aliases/TradeIntelTrendsRequest) | Body of `POST /trade_intel/trends`. | ## Variables diff --git a/docs/sdk/reference/client/managers/interfaces/TradeIntelBillOfLadingLookupOptions.mdx b/docs/sdk/reference/client/managers/interfaces/TradeIntelBillOfLadingLookupOptions.mdx new file mode 100644 index 000000000..d85ee3a72 --- /dev/null +++ b/docs/sdk/reference/client/managers/interfaces/TradeIntelBillOfLadingLookupOptions.mdx @@ -0,0 +1,13 @@ +--- +title: "Interface: TradeIntelBillOfLadingLookupOptions" +--- + +# Interface: TradeIntelBillOfLadingLookupOptions + +Options for [TradeIntelManager.lookupBillOfLading](/sdk/reference/client/managers/classes/TradeIntelManager#lookupbilloflading). + +## Properties + +| Property | Type | Description | +| ------ | ------ | ------ | +| `months?` | `number` | How many months back to search (1 to 18). Defaults to 12. | diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelBillOfLadingLookup.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelBillOfLadingLookup.mdx new file mode 100644 index 000000000..9b1577f56 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelBillOfLadingLookup.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelBillOfLadingLookup" +--- + +# Type Alias: TradeIntelBillOfLadingLookup + +> **TradeIntelBillOfLadingLookup** = `Schemas`\[`"TradeIntelBillOfLadingLookup"`\] + +Response of `POST /trade_intel/bills_of_lading/lookup`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelBreakdown.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelBreakdown.mdx new file mode 100644 index 000000000..fd108497c --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelBreakdown.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelBreakdown" +--- + +# Type Alias: TradeIntelBreakdown + +> **TradeIntelBreakdown** = `Schemas`\[`"TradeIntelBreakdown"`\] + +Response of `POST /trade_intel/breakdown`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelBreakdownRequest.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelBreakdownRequest.mdx new file mode 100644 index 000000000..288526eb2 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelBreakdownRequest.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelBreakdownRequest" +--- + +# Type Alias: TradeIntelBreakdownRequest + +> **TradeIntelBreakdownRequest** = `Schemas`\[`"TradeIntelBreakdownRequest"`\] + +Body of `POST /trade_intel/breakdown`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelCommoditySearchRequest.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCommoditySearchRequest.mdx new file mode 100644 index 000000000..066aa952d --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCommoditySearchRequest.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelCommoditySearchRequest" +--- + +# Type Alias: TradeIntelCommoditySearchRequest + +> **TradeIntelCommoditySearchRequest** = `Schemas`\[`"TradeIntelCommoditySearchRequest"`\] + +Body of `POST /trade_intel/commodities/search`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelCommoditySearchResponse.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCommoditySearchResponse.mdx new file mode 100644 index 000000000..ab560a62e --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCommoditySearchResponse.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelCommoditySearchResponse" +--- + +# Type Alias: TradeIntelCommoditySearchResponse + +> **TradeIntelCommoditySearchResponse** = `Schemas`\[`"TradeIntelCommoditySearchResponse"`\] + +Response of `POST /trade_intel/commodities/search`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanyProfile.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanyProfile.mdx new file mode 100644 index 000000000..3cd609ffe --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanyProfile.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelCompanyProfile" +--- + +# Type Alias: TradeIntelCompanyProfile + +> **TradeIntelCompanyProfile** = `Schemas`\[`"TradeIntelCompanyProfile"`\] + +Response of `POST /trade_intel/companies/profile`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanyProfileRequest.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanyProfileRequest.mdx new file mode 100644 index 000000000..aff3f6773 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanyProfileRequest.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelCompanyProfileRequest" +--- + +# Type Alias: TradeIntelCompanyProfileRequest + +> **TradeIntelCompanyProfileRequest** = `Schemas`\[`"TradeIntelCompanyProfileRequest"`\] + +Body of `POST /trade_intel/companies/profile`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchRequest.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchRequest.mdx new file mode 100644 index 000000000..81b2869a5 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchRequest.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelCompanySearchRequest" +--- + +# Type Alias: TradeIntelCompanySearchRequest + +> **TradeIntelCompanySearchRequest** = `Schemas`\[`"TradeIntelCompanySearchRequest"`\] + +Body of `POST /trade_intel/companies/search`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchResponse.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchResponse.mdx new file mode 100644 index 000000000..1623d9c3f --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchResponse.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelCompanySearchResponse" +--- + +# Type Alias: TradeIntelCompanySearchResponse + +> **TradeIntelCompanySearchResponse** = `Schemas`\[`"TradeIntelCompanySearchResponse"`\] + +Response of `POST /trade_intel/companies/search`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchResult.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchResult.mdx new file mode 100644 index 000000000..8fb13bf83 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelCompanySearchResult.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelCompanySearchResult" +--- + +# Type Alias: TradeIntelCompanySearchResult + +> **TradeIntelCompanySearchResult** = `Schemas`\[`"TradeIntelCompanySearchResult"`\] + +One importer returned by `searchCompanies`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelContainerLookup.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelContainerLookup.mdx new file mode 100644 index 000000000..a895d5f96 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelContainerLookup.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelContainerLookup" +--- + +# Type Alias: TradeIntelContainerLookup + +> **TradeIntelContainerLookup** = `Schemas`\[`"TradeIntelContainerLookup"`\] + +Response of `POST /trade_intel/containers/lookup`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelDimension.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelDimension.mdx new file mode 100644 index 000000000..558bf69f1 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelDimension.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelDimension" +--- + +# Type Alias: TradeIntelDimension + +> **TradeIntelDimension** = `Schemas`\[`"TradeIntelDimension"`\] + +A dimension accepted by `group_by` (trends) and `dims` (breakdown). diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelFilters.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelFilters.mdx new file mode 100644 index 000000000..e8a2f0408 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelFilters.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelFilters" +--- + +# Type Alias: TradeIntelFilters + +> **TradeIntelFilters** = `Schemas`\[`"TradeIntelFilters"`\] + +Filters accepted by `trends` and `breakdown`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelMeasure.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelMeasure.mdx new file mode 100644 index 000000000..6902f1065 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelMeasure.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelMeasure" +--- + +# Type Alias: TradeIntelMeasure + +> **TradeIntelMeasure** = `Schemas`\[`"TradeIntelMeasure"`\] + +A measure accepted by `trends` and `breakdown`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelMeta.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelMeta.mdx new file mode 100644 index 000000000..330f2b04b --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelMeta.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelMeta" +--- + +# Type Alias: TradeIntelMeta + +> **TradeIntelMeta** = `Schemas`\[`"TradeIntelMeta"`\] + +Index window, freshness, and counts returned by `GET /trade_intel/meta`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelTopImporters.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelTopImporters.mdx new file mode 100644 index 000000000..95a7c31c6 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelTopImporters.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelTopImporters" +--- + +# Type Alias: TradeIntelTopImporters + +> **TradeIntelTopImporters** = `Schemas`\[`"TradeIntelTopImporters"`\] + +Response of `POST /trade_intel/importers/top`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelTopImportersRequest.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelTopImportersRequest.mdx new file mode 100644 index 000000000..ef39988b6 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelTopImportersRequest.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelTopImportersRequest" +--- + +# Type Alias: TradeIntelTopImportersRequest + +> **TradeIntelTopImportersRequest** = `Schemas`\[`"TradeIntelTopImportersRequest"`\] + +Body of `POST /trade_intel/importers/top`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelTrends.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelTrends.mdx new file mode 100644 index 000000000..f556abf4e --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelTrends.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelTrends" +--- + +# Type Alias: TradeIntelTrends + +> **TradeIntelTrends** = `Schemas`\[`"TradeIntelTrends"`\] + +Response of `POST /trade_intel/trends`. diff --git a/docs/sdk/reference/client/managers/type-aliases/TradeIntelTrendsRequest.mdx b/docs/sdk/reference/client/managers/type-aliases/TradeIntelTrendsRequest.mdx new file mode 100644 index 000000000..b46065fb9 --- /dev/null +++ b/docs/sdk/reference/client/managers/type-aliases/TradeIntelTrendsRequest.mdx @@ -0,0 +1,9 @@ +--- +title: "Type Alias: TradeIntelTrendsRequest" +--- + +# Type Alias: TradeIntelTrendsRequest + +> **TradeIntelTrendsRequest** = `Schemas`\[`"TradeIntelTrendsRequest"`\] + +Body of `POST /trade_intel/trends`. diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index c30c79d94..470e27220 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to the Terminal49 MCP Server (TypeScript) will be documented The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Added +- Trade intelligence tools for US ocean import market data (US Customs bill-of-lading records, January 2022 onward): `search_importers`, `get_importer_profile`, `search_commodities`, `rank_importers`, `get_trade_trends`, `get_trade_breakdown`, and `get_trade_data_coverage`. All are read-only and gated per account; without the feature they reply that trade intelligence isn't enabled instead of failing. Responses are compacted (rounded numbers, capped lists, internal fields dropped), and the tool descriptions and server instructions carry the data caveats agents need. Record-level container and bill of lading lookups stay out of MCP. + ## [1.2.0] - 2026-10-09 ### Added diff --git a/packages/mcp/README.md b/packages/mcp/README.md index 83a075594..bd509cf58 100644 --- a/packages/mcp/README.md +++ b/packages/mcp/README.md @@ -15,7 +15,7 @@ ## 📦 What's Included -### 🛠️ Tools (14 Available) +### 🛠️ Tools (21 Available) | Tool | Description | Key Features | |------|-------------|--------------| @@ -33,6 +33,13 @@ | **`list_tracking_requests`** | List tracking requests and statuses | Audit and monitoring | | **`search_docs`** | Search the public Terminal49 documentation | Returns links to cite | | **`whoami`** | Identify the credential, its account, and the features it can use | Explains empty or unauthorized results | +| **`search_importers`** | Find US importers by name, by what they import, or both | Trade intelligence, per account | +| **`get_importer_profile`** | One importer's totals, monthly series, ports, origins, carriers, and products | Trade intelligence, per account | +| **`search_commodities`** | Turn a product description or HS prefix into four-digit HS codes | Trade intelligence, per account | +| **`rank_importers`** | Rank importers by containers for a product, US port, or origin country | Trade intelligence, per account | +| **`get_trade_trends`** | Time series of containers, TEUs, or estimated value | Trade intelligence, per account | +| **`get_trade_breakdown`** | Nested totals over one to three dimensions | Trade intelligence, per account | +| **`get_trade_data_coverage`** | Where trade data starts, the latest and last full month | Trade intelligence, per account | ### 🎯 Prompts (3 Workflows) diff --git a/packages/mcp/TOOLS_OVERVIEW.md b/packages/mcp/TOOLS_OVERVIEW.md index d659c8ed1..b487293a9 100644 --- a/packages/mcp/TOOLS_OVERVIEW.md +++ b/packages/mcp/TOOLS_OVERVIEW.md @@ -2,7 +2,7 @@ ## Summary -The Terminal49 MCP Server now provides **13 specialized tools** and **4 MCP resources** for comprehensive container tracking and shipment management. +The Terminal49 MCP Server now provides **21 specialized tools** and **4 MCP resources** for comprehensive container tracking and shipment management. ### Design Philosophy @@ -375,6 +375,11 @@ whoami() --- +### Trade intelligence tools +`search_importers`, `get_importer_profile`, `search_commodities`, `rank_importers`, `get_trade_trends`, `get_trade_breakdown`, and `get_trade_data_coverage` answer US ocean import market questions from US Customs bill-of-lading records (January 2022 onward). They are read-only and enabled per account. See `docs/mcp/home.mdx` for parameters and the caveats agents must apply. + +--- + ## MCP Resources ### 1. `terminal49://container/{id}` @@ -590,7 +595,7 @@ get_container_transport_events({ id: "abc-123" }) ## Summary -With these 14 tools and 4 resources, the LLM can: +With these 21 tools and 4 resources, the LLM can: ✅ Find any container or shipment ✅ Get fast status updates diff --git a/packages/mcp/eval/quality.test.ts b/packages/mcp/eval/quality.test.ts index a8ef3bdf4..772437944 100644 --- a/packages/mcp/eval/quality.test.ts +++ b/packages/mcp/eval/quality.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vite-plus/test'; import type { ToolResult } from './client.js'; -import { scoreResult } from './quality.js'; +import { scoreFeatureNotEnabled, scoreResult } from './quality.js'; function resultWithJson(json: unknown): ToolResult { const text = JSON.stringify(json); @@ -52,3 +52,35 @@ describe('scoreResult', () => { ); }); }); + +describe('scoreFeatureNotEnabled', () => { + const textResult = (text: string, isError = false): ToolResult => ({ + http: 200, + isError, + latencyMs: 10, + bytes: text.length, + blocks: [{ index: 0, text, json: undefined }], + payload: undefined, + errorMessage: undefined, + rawText: text, + }); + + it('passes a plain not-enabled reply that says how to get access', () => { + const score = scoreFeatureNotEnabled( + textResult( + "Trade intelligence isn't enabled for this Terminal49 account. To turn it on, contact support@terminal49.com.", + ), + ); + expect(score.contractPass).toBe(true); + }); + + it('fails a tool error or a reply without the support contact', () => { + expect( + scoreFeatureNotEnabled(textResult("isn't enabled", true)).contractPass, + ).toBe(false); + expect( + scoreFeatureNotEnabled(textResult("isn't enabled for this account")) + .contractPass, + ).toBe(false); + }); +}); diff --git a/packages/mcp/eval/quality.ts b/packages/mcp/eval/quality.ts index f3b29e906..abf36331a 100644 --- a/packages/mcp/eval/quality.ts +++ b/packages/mcp/eval/quality.ts @@ -138,6 +138,53 @@ export function scoreResult( }; } +/** + * Score a reply that says an account-gated feature isn't enabled. That reply + * is an allowed outcome (plain text, not a tool error), so it is judged on its + * own contract instead of the enabled-data spec. + */ +export function scoreFeatureNotEnabled( + result: ToolResult, + latencyBudgetMs = DEFAULT_LATENCY_BUDGET_MS, +): QualityScore { + const checks: Check[] = [ + { + name: 'transport 200', + pass: result.http === 200, + detail: `http=${result.http}`, + soft: false, + }, + { + name: 'not a tool error', + pass: !result.isError, + detail: result.errorMessage, + soft: false, + }, + { + name: 'explains the feature is not enabled and how to get it', + pass: + /isn't enabled/.test(result.rawText) && + /support@terminal49\.com/.test(result.rawText), + detail: undefined, + soft: false, + }, + { + name: `latency < ${latencyBudgetMs}ms`, + pass: result.latencyMs <= latencyBudgetMs, + detail: `${result.latencyMs}ms`, + soft: true, + }, + ]; + const passed = checks.filter((check) => check.pass).length; + return { + score: passed / checks.length, + passed, + total: checks.length, + contractPass: checks.every((check) => check.soft || check.pass), + checks, + }; +} + function findRemovedSteeringFields(values: unknown[]): string[] { const found = new Set(); diff --git a/packages/mcp/eval/tools.eval.ts b/packages/mcp/eval/tools.eval.ts index 84e6424bb..5ce5aea7d 100644 --- a/packages/mcp/eval/tools.eval.ts +++ b/packages/mcp/eval/tools.eval.ts @@ -24,6 +24,7 @@ import { hasArray, hasNonEmptyArray, readString, + scoreFeatureNotEnabled, scoreResult, type QualitySpec, type QualityScore, @@ -49,6 +50,9 @@ if (!cfg) { containerNumber?: string; } = {}; let serverInfo: unknown; + // Tools the server under test lists. Cases for tools added in a PR skip + // when the push-time eval runs against production before they deploy. + let listedTools = new Set(); /** Call a tool, score it, record the row, and return both for assertions. */ async function evaluate( @@ -63,6 +67,32 @@ if (!cfg) { return { result, score }; } + /** + * Like evaluate(), but a "not enabled for this account" reply from an + * account-gated tool is scored as the allowed outcome it is. + */ + async function evaluateGated( + tool: string, + args: Record, + spec: QualitySpec, + testCase = 'happy-path', + ): Promise<{ result: ToolResult; score: QualityScore }> { + const result = await client.callTool(tool, args); + const notEnabled = + !result.isError && + /isn't enabled for this Terminal49 account/.test(result.rawText); + const score = notEnabled + ? scoreFeatureNotEnabled(result) + : scoreResult(result, spec); + rows.push({ + tool, + testCase: notEnabled ? 'not-enabled' : testCase, + result, + score, + }); + return { result, score }; + } + // Fixture discovery is strict by default (see beforeAll): a sparse account // would silently skip the detail cases. Opt out with MCP_EVAL_ALLOW_SPARSE=1. const allowSparse = @@ -81,6 +111,7 @@ if (!cfg) { const init = await client.initialize(); serverInfo = init.serverInfo; expect(init.http).toBe(200); + listedTools = new Set((await client.listTools()).map((t) => t.name)); // Discover real ids to feed the detail tools. const ships = await client.callTool('list_shipments', { @@ -351,6 +382,81 @@ if (!cfg) { expect(score.contractPass).toBe(true); }); + // ---- trade intelligence ---- + // Enabled per account. Without it the tools answer with a plain + // not-enabled message (not a tool error), which is a passing outcome here. + + it('get_trade_data_coverage reports history from 2022 or a plain not-enabled message', async ({ + skip, + }) => { + if (!listedTools.has('get_trade_data_coverage')) return skip(); + const { result, score } = await evaluateGated( + 'get_trade_data_coverage', + {}, + { + requiredKeys: ['history_starts', 'latest_month', 'last_full_month'], + predicates: [ + { + name: 'history starts in January 2022', + test: (p) => readString(p, 'history_starts') === '2022-01', + }, + { + name: 'internal build fields are not exposed', + test: (p) => + isRecord(p) && !('facts_hash' in p) && !('fact_rows' in p), + }, + ], + }, + ); + expect(result.isError).toBe(false); + expect(score.contractPass).toBe(true); + }); + + it('search_commodities resolves a product to HS codes or explains it is not enabled', async ({ + skip, + }) => { + if (!listedTools.has('search_commodities')) return skip(); + const { result, score } = await evaluateGated( + 'search_commodities', + { query: 'office chairs', limit: 3 }, + { + requiredKeys: ['products'], + predicates: [ + { + name: 'returns four-digit codes with common goods', + test: (p) => + isRecord(p) && + Array.isArray(p.products) && + p.products.length > 0 && + p.products.every( + (row) => + isRecord(row) && + typeof row.hs4 === 'string' && + /^\d{4}$/.test(row.hs4) && + Array.isArray(row.common_goods), + ), + }, + ], + }, + ); + expect(result.isError).toBe(false); + expect(score.contractPass).toBe(true); + }); + + it('get_trade_trends rejects an impossible month before calling the API', async ({ + skip, + }) => { + if (!listedTools.has('get_trade_trends')) return skip(); + const { result, score } = await evaluate( + 'get_trade_trends', + { since: '2026-13' }, + { expectError: true }, + 'invalid-month', + ); + expect(result.isError).toBe(true); + expect(score.contractPass).toBe(true); + }); + // ---- search + track ---- it('search_container finds the tracked container', async ({ skip }) => { diff --git a/packages/mcp/scripts/http-protocol-smoke.mjs b/packages/mcp/scripts/http-protocol-smoke.mjs index b194996e5..b0712298b 100644 --- a/packages/mcp/scripts/http-protocol-smoke.mjs +++ b/packages/mcp/scripts/http-protocol-smoke.mjs @@ -78,12 +78,12 @@ try { const { tools } = await client.listTools(); if ( - tools.length !== 14 || + tools.length !== 21 || !tools.some((tool) => tool.name === 'search_docs') || !tools.some((tool) => tool.name === 'whoami') ) { throw new Error( - `Expected 14 preview tools including search_docs and whoami over ${protocolVersion}, received ${tools.length}`, + `Expected 21 preview tools including search_docs and whoami over ${protocolVersion}, received ${tools.length}`, ); } diff --git a/packages/mcp/scripts/protocol-smoke.mjs b/packages/mcp/scripts/protocol-smoke.mjs index 61f424507..2cce0a9c2 100644 --- a/packages/mcp/scripts/protocol-smoke.mjs +++ b/packages/mcp/scripts/protocol-smoke.mjs @@ -68,12 +68,12 @@ try { const { tools } = await client.listTools(); if ( - tools.length !== 14 || + tools.length !== 21 || !tools.some((tool) => tool.name === 'search_docs') || !tools.some((tool) => tool.name === 'whoami') ) { throw new Error( - `Expected 14 tools including search_docs and whoami over ${protocolVersion}, received ${tools.length}`, + `Expected 21 tools including search_docs and whoami over ${protocolVersion}, received ${tools.length}`, ); } diff --git a/packages/mcp/src/mcp.test.ts b/packages/mcp/src/mcp.test.ts index 22fd71fc1..39ca5d293 100644 --- a/packages/mcp/src/mcp.test.ts +++ b/packages/mcp/src/mcp.test.ts @@ -9,6 +9,7 @@ import { createTerminal49McpServer, TERMINAL49_SERVER_INSTRUCTIONS, } from './server.js'; +import { TRADE_INTEL_TOOL_NAMES } from './tools/trade-intel.js'; vi.mock('@sentry/node', () => ({ captureException: vi.fn(), @@ -26,12 +27,22 @@ const { containersList, shipmentsList, containersSummary, + tradeIntel, } = vi.hoisted(() => ({ search: vi.fn(), shippingLinesList: vi.fn(), containersList: vi.fn(), containersSummary: vi.fn(), shipmentsList: vi.fn(), + tradeIntel: { + meta: vi.fn(), + searchCompanies: vi.fn(), + companyProfile: vi.fn(), + searchCommodities: vi.fn(), + topImporters: vi.fn(), + trends: vi.fn(), + breakdown: vi.fn(), + }, })); vi.mock('@terminal49/sdk', () => ({ @@ -40,8 +51,12 @@ vi.mock('@terminal49/sdk', () => ({ shippingLines = { list: shippingLinesList }; containers = { list: containersList, summary: containersSummary }; shipments = { list: shipmentsList }; + tradeIntel = tradeIntel; + }, + FeatureNotEnabledError: class FeatureNotEnabledError extends Error { + name = 'FeatureNotEnabledError'; + status = 403; }, - FeatureNotEnabledError: class FeatureNotEnabledError extends Error {}, NotFoundError: class NotFoundError extends Error {}, })); @@ -51,6 +66,7 @@ beforeEach(() => { containersList.mockReset(); containersSummary.mockReset(); shipmentsList.mockReset(); + for (const fn of Object.values(tradeIntel)) fn.mockReset(); }); function _hasResponseContract(schema: unknown): boolean { @@ -356,7 +372,7 @@ describe('MCP server wiring', () => { ); const prompts = Object.keys((server as any)._registeredPrompts || {}); - expect(tools).toHaveLength(14); + expect(tools).toHaveLength(21); expect(tools).toContain('search_container'); expect(tools).toContain('track_container'); expect(tools).toContain('get_container'); @@ -371,6 +387,7 @@ describe('MCP server wiring', () => { expect(tools).toContain('list_tracking_requests'); expect(tools).toContain('search_docs'); expect(tools).toContain('whoami'); + for (const name of TRADE_INTEL_TOOL_NAMES) expect(tools).toContain(name); expect(prompts).toHaveLength(3); expect(prompts).toContain('track-shipment'); @@ -407,6 +424,13 @@ describe('MCP server wiring', () => { list_tracking_requests: {}, search_docs: { query: 'webhooks' }, whoami: {}, + search_importers: { name: 'acme' }, + get_importer_profile: { company_name: 'ACME' }, + search_commodities: { query: 'office chairs' }, + rank_importers: { hs4: '9401' }, + get_trade_trends: {}, + get_trade_breakdown: { dims: ['pod_coast'] }, + get_trade_data_coverage: {}, }; for (const [name, tool] of Object.entries(tools)) { @@ -918,3 +942,162 @@ describe('MCP server wiring', () => { ).toBe(true); }); }); + +describe('trade intelligence tools', () => { + const sdkError = (name: string, status: number, message: string) => + Object.assign(new Error(message), { name, status }); + + const callTool = async (name: string, args: Record) => { + const server = createTerminal49McpServer('token'); + const tool = (server as any)._registeredTools[name]; + const result = await tool.handler(args, {}); + return { tool, result }; + }; + + it('registers every trade intelligence tool as read-only and closed-world', () => { + const tools = (createTerminal49McpServer('token') as any)._registeredTools; + for (const name of TRADE_INTEL_TOOL_NAMES) { + expect(tools[name].annotations, name).toEqual({ + readOnlyHint: true, + destructiveHint: false, + openWorldHint: false, + }); + } + }); + + it('does not expose record-level container or bill of lading lookups', () => { + const tools = Object.keys( + (createTerminal49McpServer('token') as any)._registeredTools, + ); + expect(tools.filter((name) => /lookup|bill_of_lading/.test(name))).toEqual( + [], + ); + }); + + it.each(TRADE_INTEL_TOOL_NAMES.map((name) => [name]))( + '%s answers a 403 with a plain not-enabled message, not an error', + async (name) => { + const notEnabled = new ( + (await import('@terminal49/sdk')) as any + ).FeatureNotEnabledError( + 'Trade intelligence is not enabled for this account', + ); + for (const fn of Object.values(tradeIntel)) + fn.mockRejectedValue(notEnabled); + const args: Record> = { + search_importers: { name: 'acme' }, + get_importer_profile: { company_name: 'ACME' }, + search_commodities: { query: 'office chairs' }, + rank_importers: {}, + get_trade_trends: {}, + get_trade_breakdown: { dims: ['pod_coast'] }, + get_trade_data_coverage: {}, + }; + + const { tool, result } = await callTool(name, args[name]); + + expect(result.isError).toBeUndefined(); + expect(result.content[0].text).toMatch( + /isn't enabled for this Terminal49 account/, + ); + expect(result.content[0].text).toMatch(/support@terminal49\.com/); + expect( + tool.outputSchema.safeParse(result.structuredContent).success, + ).toBe(true); + }, + ); + + it('shows the API reason for a 400 and stays generic for other failures', async () => { + tradeIntel.topImporters.mockRejectedValueOnce( + sdkError( + 'ValidationError', + 400, + "hs4 must be a 4-digit HS code, e.g. '0306'; use commodities/search to find one", + ), + ); + const bad = await callTool('rank_importers', { hs4: '0306' }); + expect(bad.result.isError).toBe(true); + expect(bad.result.content[0].text).toBe( + "Trade intelligence could not answer this request: hs4 must be a 4-digit HS code, e.g. '0306'; use commodities/search to find one", + ); + + tradeIntel.trends.mockRejectedValueOnce( + sdkError('RateLimitError', 429, 'Rate limit exceeded; retry in a minute'), + ); + const limited = await callTool('get_trade_trends', {}); + expect(limited.result.content[0].text).toMatch(/Wait a minute/); + + tradeIntel.meta.mockRejectedValueOnce( + sdkError('UpstreamError', 502, 'upstream detail that must not leak'), + ); + const down = await callTool('get_trade_data_coverage', {}); + expect(down.result.content[0].text).toBe( + 'Trade intelligence is temporarily unavailable. Try again shortly.', + ); + expect(down.result.content[0].text).not.toMatch(/upstream detail/); + }); + + it('returns schema-valid compact results', async () => { + tradeIntel.searchCompanies.mockResolvedValue({ + index: { + since_month: '2025-10-01', + until_month_exclusive: '2026-10-01', + }, + results: [ + { + company_name: 'EXAMPLE OUTDOOR SUPPLY', + company_state: 'GA', + containers: 100, + containers_as_consignee: 20, + containers_as_notify_party: 80, + teus: 190.44, + estimated_value: 1234567.89, + reefer_share: 0, + first_month: '2025-10-01', + last_month: '2026-09-01', + top_ports: [], + top_origins: [], + top_carriers: [], + top_commodities: [], + score: 0.9, + }, + ], + }); + const { tool, result } = await callTool('search_importers', { + name: 'example outdoor', + }); + + expect(result.structuredContent.importers[0]).toMatchObject({ + company_name: 'EXAMPLE OUTDOOR SUPPLY', + share_as_notify_party: 0.8, + teus: 190.4, + estimated_value_usd: 1234568, + }); + expect(result.structuredContent.importers[0]).not.toHaveProperty('score'); + expect(result.structuredContent).not.toHaveProperty('index'); + expect(result.structuredContent.period).toMatchObject({ + from: '2025-10', + to: '2026-09', + }); + expect(result.structuredContent.importers[0]).toMatchObject({ + first_month: '2025-10', + last_month: '2026-09', + }); + expect(tool.outputSchema.safeParse(result.structuredContent).success).toBe( + true, + ); + }); + + it('tells agents how to read the data in the server instructions', () => { + for (const phrase of [ + 'January 2022', + 'physical containers', + 'support@terminal49.com', + 'months: 24', + 'substring match', + 'floor', + ]) { + expect(TERMINAL49_SERVER_INSTRUCTIONS).toContain(phrase); + } + }); +}); diff --git a/packages/mcp/src/protocol-compat.test.ts b/packages/mcp/src/protocol-compat.test.ts index d13b3a669..d8592e3a1 100644 --- a/packages/mcp/src/protocol-compat.test.ts +++ b/packages/mcp/src/protocol-compat.test.ts @@ -164,6 +164,118 @@ describe('MCP protocol compatibility', () => { ); }); + it('warns that estimated_value is not available by lane, in tools/list and the docs', async () => { + // The API answers estimated_value with a lane dimension or lane filter + // (pol, pol_country, container_type) with a 400: the trade-intel service + // checks every field used, grouped or filtered. The measure an agent picks + // must carry that rule, filters included, wherever it is offered. + const client = await connectClient({ era: 'modern' }); + const { tools } = await client.listTools(); + const laneRule = + /estimated_value.*not available.*\bfilters?\b.*\bpol\b.*\bpol_country\b.*\bcontainer_type\b/s; + + for (const toolName of ['get_trade_trends', 'get_trade_breakdown']) { + const schema = tools.find((tool) => tool.name === toolName) + ?.inputSchema as AdvertisedInputSchema | undefined; + expect(schema?.properties?.measure?.description, toolName).toMatch( + laneRule, + ); + expect(documentedToolSection(toolName), toolName).toMatch(laneRule); + } + }); + + it('states the default window the API computes, in tools/list, the MCP docs and the OpenAPI spec', async () => { + // Without since, the trade-intel service (analytics._range) returns the + // N months ending with until, which defaults to the current, partial + // month: since = until - (N - 1). With until 2026-10, trends starts at + // 2024-11 and breakdown at 2025-11. "N months ago" would be N + 1 months. + const client = await connectClient({ era: 'modern' }); + const { tools } = await client.listTools(); + const spec = JSON.parse( + readFileSync( + new URL('../../../docs/openapi.json', import.meta.url), + 'utf8', + ), + ); + const windows = [ + { + toolName: 'get_trade_trends', + path: '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/trade_intel/trends', + request: 'TradeIntelTrendsRequest', + window: '24 months ending with', + since: '23 months before', + }, + { + toolName: 'get_trade_breakdown', + path: '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/trade_intel/breakdown', + request: 'TradeIntelBreakdownRequest', + window: '12 months ending with', + since: '11 months before', + }, + ]; + + for (const { toolName, path, request, window, since } of windows) { + const tool = tools.find((candidate) => candidate.name === toolName); + const sinceDescriptions = { + 'tools/list since': (tool?.inputSchema as AdvertisedInputSchema) + ?.properties?.since?.description, + 'openapi since': + spec.components.schemas[request].properties.since.description, + }; + const windowDescriptions = { + 'tools/list description': tool?.description, + 'docs/mcp/home.mdx': documentedToolSection(toolName), + 'openapi operation': spec.paths[path].post.description, + }; + + for (const [surface, text] of Object.entries(sinceDescriptions)) { + expect(text, `${toolName} ${surface}`).toContain(since); + } + for (const [surface, text] of Object.entries(windowDescriptions)) { + expect(text, `${toolName} ${surface}`).toContain(window); + } + for (const [surface, text] of Object.entries({ + ...sinceDescriptions, + ...windowDescriptions, + })) { + expect(text, `${toolName} ${surface}`).not.toMatch( + /\d+ months ago|about (?:a|two) years? back/, + ); + } + } + }); + + it('gives the tools/list count and names wherever the docs count tools', async () => { + const client = await connectClient({ era: 'modern' }); + const { tools } = await client.listTools(); + const read = (path: string) => + readFileSync(new URL(path, import.meta.url), 'utf8'); + const docs = { + 'packages/mcp/README.md': read('../README.md'), + 'packages/mcp/TOOLS_OVERVIEW.md': read('../TOOLS_OVERVIEW.md'), + 'docs/api-docs/in-depth-guides/mcp.mdx': read( + '../../../docs/api-docs/in-depth-guides/mcp.mdx', + ), + }; + + for (const [path, text] of Object.entries(docs)) { + const counts = [ + ...text.matchAll( + /\b(\d+)\*{0,2} (?:specialized )?tools\b|Tools \((\d+) Available\)/gi, + ), + ].map((match) => Number(match[1] ?? match[2])); + expect(counts.length, path).toBeGreaterThan(0); + for (const count of counts) expect(count, path).toBe(tools.length); + } + + const readmeTable = [ + ...docs['packages/mcp/README.md'].matchAll( + /^\| \*\*`([a-z_]+)`\*\* \|/gm, + ), + ].map((match) => match[1]); + expect(readmeTable.sort()).toEqual(tools.map((tool) => tool.name).sort()); + }); + it('advertises bounded, identifier-only inputs in tools/list', async () => { const client = await connectClient({ era: 'modern' }); const { tools } = await client.listTools(); @@ -174,7 +286,7 @@ describe('MCP protocol compatibility', () => { ]), ); - expect(tools).toHaveLength(14); + expect(tools).toHaveLength(21); for (const tool of tools) { expect(tool.name.length, tool.name).toBeLessThanOrEqual(64); expect(tool.inputSchema.properties, tool.name).not.toHaveProperty( @@ -306,7 +418,7 @@ describe('MCP protocol compatibility', () => { client.listResourceTemplates(), ]); - expect(tools).toHaveLength(14); + expect(tools).toHaveLength(21); expect(prompts).toHaveLength(3); expect(resources).toHaveLength(3); expect(resourceTemplates).toHaveLength(1); diff --git a/packages/mcp/src/server.ts b/packages/mcp/src/server.ts index 5f15879e9..c5db5c3df 100644 --- a/packages/mcp/src/server.ts +++ b/packages/mcp/src/server.ts @@ -49,6 +49,23 @@ import { } from './tools/list-parties.js'; import { executeSearchDocs } from './tools/search-docs.js'; import { executeWhoami } from './tools/whoami.js'; +import { + executeGetImporterProfile, + executeGetTradeBreakdown, + executeGetTradeDataCoverage, + executeGetTradeTrends, + executeRankImporters, + executeSearchCommodities, + executeSearchImporters, + getImporterProfileInputSchema, + getTradeBreakdownInputSchema, + getTradeDataCoverageInputSchema, + getTradeTrendsInputSchema, + isTradeIntelTool, + rankImportersInputSchema, + searchCommoditiesInputSchema, + searchImportersInputSchema, +} from './tools/trade-intel.js'; import { readContainerResource } from './resources/container.js'; import { readMilestoneGlossaryResource } from './resources/milestone-glossary.js'; import { @@ -105,9 +122,13 @@ export const TERMINAL49_SERVER_INSTRUCTIONS = `Terminal49 tracks ocean container Domain vocabulary: SCAC = 4-letter carrier code; BOL = bill of lading and booking number identify a shipment; POL/POD = port of lading/discharge; LFD = last free day (pickup deadline before demurrage accrues); demurrage/detention = late fees; holds = customs/freight/terminal blocks preventing pickup; transport events = carrier milestones (vessel loaded, departed, arrived, discharged, rail, delivered); custom fields = account-defined fields (PO number, project manager, etc.) on containers and shipments, loaded with get_container include ['custom_fields'] or get_shipment_details include_custom_fields. -Only track_container changes Terminal49 account records: it creates a tracking request to begin monitoring a number and is marked non-read-only. The other tools only fetch data and are marked read-only. All tools except search_docs operate within the user's private Terminal49 account; search_docs searches the public Terminal49 documentation. None delete or overwrite data. +Only track_container changes Terminal49 account records: it creates a tracking request to begin monitoring a number and is marked non-read-only. The other tools only fetch data and are marked read-only. The shipment, container, tracking, party, and whoami tools operate within the user's private Terminal49 account; search_docs searches the public Terminal49 documentation; the trade intelligence tools read US import market data, not the account's shipments. None delete or overwrite data. -Canonical chaining: start with search_container to resolve a container number / BOL / reference into Terminal49 UUIDs, then get_container or get_shipment_details for a snapshot, then get_container_transport_events for the milestone timeline (and get_container_route for ports, ETAs, and the current vessel if the account has Routing Data). Use get_supported_shipping_lines to resolve a carrier name to its SCAC before track_container. Use list_parties to resolve a company name (customer, shipper, dray carrier) to a party ID before filtering containers by advanced_filters.parties. Use list_containers / list_shipments / list_tracking_requests for fleet-level worklists. Use search_docs for how-to and API questions (webhooks, statuses, LFD rules, SDK, MCP) and cite the returned links. Call whoami to learn which account and credential this session is bound to and which features it can use: when the user asks who they are or which account is connected, when a lookup returns nothing or an authorization error, or before relying on a gated feature such as routing, custom fields, or stop tracking.`; +Canonical chaining: start with search_container to resolve a container number / BOL / reference into Terminal49 UUIDs, then get_container or get_shipment_details for a snapshot, then get_container_transport_events for the milestone timeline (and get_container_route for ports, ETAs, and the current vessel if the account has Routing Data). Use get_supported_shipping_lines to resolve a carrier name to its SCAC before track_container. Use list_parties to resolve a company name (customer, shipper, dray carrier) to a party ID before filtering containers by advanced_filters.parties. Use list_containers / list_shipments / list_tracking_requests for fleet-level worklists. Use search_docs for how-to and API questions (webhooks, statuses, LFD rules, SDK, MCP) and cite the returned links. Call whoami to learn which account and credential this session is bound to and which features it can use: when the user asks who they are or which account is connected, when a lookup returns nothing or an authorization error, or before relying on a gated feature such as routing, custom fields, or stop tracking. +Trade intelligence (search_importers, get_importer_profile, search_commodities, rank_importers, get_trade_trends, get_trade_breakdown, get_trade_data_coverage) answers market questions about US ocean imports: who imports a product, what a named company imports and how that is changing, where goods come from, and port, carrier, and lane volumes. It is built from US Customs bill-of-lading records from January 2022 to today, refreshed daily, and is enabled per account; if a tool says it isn't enabled, tell the user to contact support@terminal49.com and don't retry or invent figures. +Resolve first, then analyze: search_importers for a company (use its exact company_name), search_commodities for a product (check common_goods before trusting an HS4 code). Then get_importer_profile for one company (months: 24 for a year-over-year trend; the company filter in trends is a substring match), rank_importers for "who imports X", get_trade_trends for change over time, get_trade_breakdown for mix and share. Most answers take two to five calls. +Read the numbers carefully: volume is physical containers, each counted once; values are estimates, not declared customs values; trends and breakdowns include the current, incomplete month unless until is set, so a last-period drop is usually that; history starts in January 2022, not where the default two-year trends window begins. A company can appear under several names and once per state, and some importers keep their names off the records or ship under a forwarder, so low or missing volume is a floor, not the company's size. Forwarders and customs brokers appear among importers. A high share_as_notify_party is a clue, not proof: large cargo owners can also be listed mostly as notify party, so also weigh the name (LOGISTICS, FREIGHT, SHIPPING, CUSTOMS, BROKERAGE) and the product mix before calling a company a forwarder. Don't add volumes across products or companies. Carriers appear under spelling variants; merge them before computing shares. +Answer in plain language: lead with the takeaway, name the period, round numbers, and describe caveats in everyday words rather than field names.`; type ResponseDisplayColumn = { key: string; @@ -923,6 +944,24 @@ function formatToolError( } } + if (isTradeIntelTool(toolName)) { + // The API's 400 messages are written for callers (e.g. "hs4 must be a + // 4-digit HS code"), so they are safe and useful to show. Other failures + // stay generic. + if (err.name === 'ValidationError' && err.status === 400 && err.message) { + return `Trade intelligence could not answer this request: ${err.message}`; + } + if (err.name === 'ValidationError') { + return 'Trade intelligence could not answer this request because an input is out of range. Check the values against the tool schema.'; + } + if (err.name === 'RateLimitError' || err.status === 429) { + return 'Trade intelligence is receiving too many requests right now. Wait a minute, then try again.'; + } + if (err.name === 'UpstreamError' || (err.status ?? 0) >= 500) { + return 'Trade intelligence is temporarily unavailable. Try again shortly.'; + } + } + if (err.name === 'NotFoundError' || err.status === 404) { switch (toolName) { case 'get_container': @@ -1690,6 +1729,199 @@ export function createTerminal49McpServer( wrapTool('whoami', async () => executeWhoami(client)), ); + // ==================== TRADE INTELLIGENCE ==================== + // US import market data (bill-of-lading records). Read-only and gated per + // account; a missing entitlement returns a plain "not enabled" result. + + const tradeIntelAnnotations = { + readOnlyHint: true, + destructiveHint: false, + openWorldHint: false, + }; + const notEnabledFields = { + error: z.string().optional(), + message: z.string().optional(), + alternative: z.string().optional(), + }; + const rows = z.array(z.record(z.string(), z.unknown())).optional(); + const period = z + .object({ from: z.string().optional(), to: z.string().optional() }) + .passthrough() + .optional(); + + server.registerTool( + 'search_importers', + { + title: 'Search US Importers', + description: + 'Find US importers by company name (typos and partial names are fine), by what they import in plain words, or both, optionally narrowed by state, US port, or origin country. ' + + 'Each result covers the 12-month search window in period (it can end a month or two before the last full month; use get_importer_profile for the latest months): containers, how many as consignee versus notify party, TEUs, estimated value, and top ports, origin countries, carriers, and products. ' + + 'Results are ordered by match quality, not size, and one company appears once per US state and often under several names (divisions, distribution centers), so read every row before answering. ' + + 'A high share_as_notify_party suggests a forwarder or customs broker, but large cargo owners can also be listed mostly as notify party, so weigh the name and product mix too. Long lists are cut to the top five, with more_not_shown counting the rest. Low volume for a well-known company is a floor: some importers keep their names off the records or ship under a forwarder. ' + + 'Pass a returned company_name unchanged to get_importer_profile.', + annotations: tradeIntelAnnotations, + inputSchema: z.preprocess(stripLegacyIntent, searchImportersInputSchema), + outputSchema: z + .object({ ...notEnabledFields, period, importers: rows }) + .passthrough(), + }, + wrapTool('search_importers', async (args) => + executeSearchImporters(args, client), + ), + ); + + server.registerTool( + 'get_importer_profile', + { + title: 'Get Importer Profile', + description: + "One importer's US ocean imports over full calendar months ending last month: totals, a monthly series (up to 60 months), US ports, origin countries, carriers, destination states, and products with estimated value. " + + 'company_name must be the exact name from search_importers; omit company_state to combine all of its locations. ' + + "This is the right tool for one company's trend: use months: 24 and compare the latest months with the same months a year earlier (the get_trade_trends company filter matches every name containing the text). " + + 'If the company imports under several names, profile each and say which you included. Values are estimates, not declared customs values. Carrier names have spelling variants; merge them before computing shares.', + annotations: tradeIntelAnnotations, + inputSchema: z.preprocess( + stripLegacyIntent, + getImporterProfileInputSchema, + ), + outputSchema: z + .object({ + ...notEnabledFields, + company_name: z.string().optional(), + found: z.boolean().optional(), + period, + totals: z.record(z.string(), z.unknown()).optional(), + monthly: rows, + }) + .passthrough(), + }, + wrapTool('get_importer_profile', async (args) => + executeGetImporterProfile(args, client), + ), + ); + + server.registerTool( + 'search_commodities', + { + title: 'Search Commodities', + description: + 'Turn a product description ("office chairs") or an HS code prefix ("94") into four-digit HS product codes, with the goods commonly declared under each code, the number of importers, and 12-month estimated import value. ' + + 'HS descriptions are terse and codes are broader than everyday product names (0306 covers all frozen crustaceans, not just shrimp), so check common_goods before using a code (common_goods_not_shown counts goods left out), and say which code you used. ' + + 'Pass hs4 to rank_importers or as a filter to get_trade_trends and get_trade_breakdown.', + annotations: tradeIntelAnnotations, + inputSchema: z.preprocess( + stripLegacyIntent, + searchCommoditiesInputSchema, + ), + outputSchema: z + .object({ ...notEnabledFields, products: rows }) + .passthrough(), + }, + wrapTool('search_commodities', async (args) => + executeSearchCommodities(args, client), + ), + ); + + server.registerTool( + 'rank_importers', + { + title: 'Rank US Importers', + description: + 'Rank US importers by physical containers over full calendar months ending last month, for a product (hs4), a US port, an origin country, or any combination; includes estimated value when hs4 is given. ' + + 'Use it for "who imports X" and "top importers through Y". The ranking includes forwarders and customs brokers and does not say which rows are; check the top names with search_importers when that matters, using share_as_notify_party together with the company name and product mix (large cargo owners can also be mostly notify party). ' + + 'Big importers can be split across names, and some keep their names off the records, so absence from the list does not mean low volume.', + annotations: tradeIntelAnnotations, + inputSchema: z.preprocess(stripLegacyIntent, rankImportersInputSchema), + outputSchema: z + .object({ ...notEnabledFields, period, importers: rows }) + .passthrough(), + }, + wrapTool('rank_importers', async (args) => + executeRankImporters(args, client), + ), + ); + + server.registerTool( + 'get_trade_trends', + { + title: 'Get Trade Trends', + description: + 'Time series of US ocean imports (containers, TEUs, or estimated value) by month, quarter, or year, optionally split by up to two dimensions (origin country, US port, coast, carrier, product, importer, and more) and filtered by any of them. ' + + 'Default window: the 24 months ending with the current month, which is still incomplete (its points are marked partial), so a drop in the last period is usually that. Set until to the last full month and compare like periods. History goes back to January 2022; pass since for a longer view. ' + + "The company filter is a substring match (IKEA also matches IKEA SUPPLY AG); for one company use get_importer_profile. Use this without a company filter for market totals, and don't add values across products or companies. " + + 'Countries and ports use the records\' spellings (filter "china", not "China"); merge carrier spelling variants before computing shares.', + annotations: tradeIntelAnnotations, + inputSchema: z.preprocess(stripLegacyIntent, getTradeTrendsInputSchema), + outputSchema: z + .object({ + ...notEnabledFields, + measure: z.string().optional(), + interval: z.string().optional(), + period, + series: rows, + truncated: z.boolean().optional(), + }) + .passthrough(), + }, + wrapTool('get_trade_trends', async (args) => + executeGetTradeTrends(args, client), + ), + ); + + server.registerTool( + 'get_trade_breakdown', + { + title: 'Get Trade Breakdown', + description: + 'Nested totals of US ocean imports over one to three dimensions, such as region > country > US port or HS chapter > HS code, with a grand total (level 0) and subtotals at every level, keeping the largest children under each parent. Use it for mix and share questions. ' + + 'Default window: the 12 months ending with the current, incomplete month, so it is not 12 full months; for an annual total set since and until to 12 full months. ' + + "The company filter is a substring match. Don't add values across products or companies. Merge carrier spelling variants before computing shares. Values are estimates, not declared customs values.", + annotations: tradeIntelAnnotations, + inputSchema: z.preprocess( + stripLegacyIntent, + getTradeBreakdownInputSchema, + ), + outputSchema: z + .object({ + ...notEnabledFields, + measure: z.string().optional(), + period, + rows, + truncated: z.boolean().optional(), + }) + .passthrough(), + }, + wrapTool('get_trade_breakdown', async (args) => + executeGetTradeBreakdown(args, client), + ), + ); + + server.registerTool( + 'get_trade_data_coverage', + { + title: 'Get Trade Data Coverage', + description: + 'What the trade intelligence data covers right now: where history starts (January 2022), the latest month and whether it is still incomplete, the last full month, the 12-month window search_importers uses, and when the data was last built. ' + + 'Call it before quoting a period or when the user asks how current or how far back the data goes. It also shows whether trade intelligence is enabled for the account.', + annotations: tradeIntelAnnotations, + inputSchema: z.preprocess( + stripLegacyIntent, + getTradeDataCoverageInputSchema, + ), + outputSchema: z + .object({ + ...notEnabledFields, + history_starts: z.string().optional(), + latest_month: z.string().optional(), + last_full_month: z.string().optional(), + }) + .passthrough(), + }, + wrapTool('get_trade_data_coverage', async () => + executeGetTradeDataCoverage(client), + ), + ); + // ==================== PROMPTS ==================== // Prompt 1: Track Shipment @@ -1893,7 +2125,7 @@ export async function runStdioServer() { if (process.env.T49_MCP_STDIO_BANNER === '1') { console.error('Terminal49 MCP Server v1.0.0 running on stdio'); - console.error('Available: 10 tools | 3 prompts | 4 resources'); + console.error('Available: 20 tools | 3 prompts | 4 resources'); console.error('SDK: @modelcontextprotocol/server v2 (McpServer API)'); } diff --git a/packages/mcp/src/tools/trade-intel.test.ts b/packages/mcp/src/tools/trade-intel.test.ts new file mode 100644 index 000000000..d7d0ba6df --- /dev/null +++ b/packages/mcp/src/tools/trade-intel.test.ts @@ -0,0 +1,530 @@ +import type { Terminal49Client } from '@terminal49/sdk'; +import { describe, expect, it, vi } from 'vite-plus/test'; +import { + capRollupByLevel, + capSeriesByPeriod, + executeGetImporterProfile, + executeGetTradeBreakdown, + executeGetTradeDataCoverage, + executeGetTradeTrends, + executeRankImporters, + executeSearchCommodities, + executeSearchImporters, + getTradeTrendsInputSchema, + getTradeBreakdownInputSchema, + previousMonth, + searchImportersInputSchema, +} from './trade-intel.js'; + +function fakeClient(overrides: Record) { + const tradeIntel = { + meta: vi.fn(), + searchCompanies: vi.fn(), + companyProfile: vi.fn(), + searchCommodities: vi.fn(), + topImporters: vi.fn(), + trends: vi.fn(), + breakdown: vi.fn(), + ...overrides, + }; + // SAFETY: the executors only touch client.tradeIntel, which is fully stubbed. + return { client: { tradeIntel } as unknown as Terminal49Client, tradeIntel }; +} + +const named = (prefix: string, count: number) => + Array.from({ length: count }, (_, i) => ({ + name: `${prefix} ${i + 1}`, + containers: 100 - i, + teus: 190.06, + })); + +describe('trade intelligence input schemas', () => { + it('rejects months outside 01-12 and accepts real ones', () => { + expect(() => + getTradeTrendsInputSchema.parse({ since: '2026-13' }), + ).toThrow(); + expect(() => + getTradeTrendsInputSchema.parse({ until: '2026-00' }), + ).toThrow(); + expect( + getTradeTrendsInputSchema.parse({ since: '2022-01', until: '2026-09' }), + ).toMatchObject({ since: '2022-01', until: '2026-09' }); + }); + + it('rejects unknown dimensions, more than two group_by, and stray keys', () => { + expect(() => + getTradeTrendsInputSchema.parse({ group_by: ['shipper'] }), + ).toThrow(); + expect(() => + getTradeTrendsInputSchema.parse({ + group_by: ['pod', 'carrier', 'hs4'], + }), + ).toThrow(); + expect(() => getTradeBreakdownInputSchema.parse({ dims: [] })).toThrow(); + expect(() => + getTradeTrendsInputSchema.parse({ filters: { shipper: 'x' } }), + ).toThrow(); + expect(() => + getTradeTrendsInputSchema.parse({ filters: { pod_coast: 'NORTH' } }), + ).toThrow(); + expect(() => searchImportersInputSchema.parse({ limit: 26 })).toThrow(); + }); + + it('accepts names and filters up to the API limit of 200 characters', () => { + const at = 'A'.repeat(200); + const over = 'A'.repeat(201); + expect(searchImportersInputSchema.parse({ name: at }).name).toBe(at); + expect(() => searchImportersInputSchema.parse({ name: over })).toThrow(); + expect( + getTradeTrendsInputSchema.parse({ filters: { company: at } }).filters + ?.company, + ).toBe(at); + expect(() => + getTradeTrendsInputSchema.parse({ filters: { company: over } }), + ).toThrow(); + }); + + it('applies defaults that keep answers bounded', () => { + expect(getTradeTrendsInputSchema.parse({})).toEqual({ + measure: 'containers', + interval: 'month', + top: 10, + }); + expect(searchImportersInputSchema.parse({})).toEqual({ limit: 10 }); + }); +}); + +describe('previousMonth', () => { + it('steps back across a year boundary', () => { + expect(previousMonth('2026-01')).toBe('2025-12'); + expect(previousMonth('2026-10')).toBe('2026-09'); + expect(previousMonth('not a month')).toBeUndefined(); + }); + + it('accepts the first-of-month dates the service sends for index windows', () => { + expect(previousMonth('2026-10-01')).toBe('2026-09'); + expect(previousMonth('2026-01-01')).toBe('2025-12'); + expect(previousMonth('2026-13-01')).toBeUndefined(); + expect(previousMonth('2026-10-01T00:00:00Z')).toBeUndefined(); + }); +}); + +describe('search_importers', () => { + it('sends the filters with an uppercased state and compacts each row', async () => { + const { client, tradeIntel } = fakeClient({ + searchCompanies: vi.fn().mockResolvedValue({ + index: { + since_month: '2025-10-01', + until_month_exclusive: '2026-10-01', + }, + results: [ + { + company_name: 'EXAMPLE OUTDOOR SUPPLY', + company_state: null, + containers: 1240, + containers_as_consignee: 1180, + containers_as_notify_party: 60, + teus: 2310.55, + estimated_value: 48200000.4, + reefer_share: 0.123, + first_month: '2025-10-01', + last_month: '2026-09-01', + top_ports: named('PORT', 8), + top_origins: named('ORIGIN', 2), + top_carriers: named('CARRIER', 6), + top_commodities: [ + { + hs4: '9401', + description: 'Seats', + estimated_value: 31000000.6, + containers: 800, + }, + ], + score: 0.97, + }, + ], + }), + }); + + const result = await executeSearchImporters( + { imports: 'office chairs', state: 'ga' }, + client, + ); + + expect(tradeIntel.searchCompanies).toHaveBeenCalledWith({ + imports: 'office chairs', + state: 'GA', + limit: 10, + }); + expect((result as any).period).toMatchObject({ + from: '2025-10', + to: '2026-09', + }); + const row = (result as any).importers[0]; + expect(row).toMatchObject({ + first_month: '2025-10', + last_month: '2026-09', + state: null, + share_as_notify_party: 0.05, + teus: 2310.6, + estimated_value_usd: 48200000, + reefer_share: 0.12, + top_products: [{ hs4: '9401', estimated_value_usd: 31000001 }], + }); + expect(row.top_ports).toHaveLength(5); + expect(row.top_carriers).toHaveLength(5); + expect(row.top_origins).toHaveLength(2); + expect(row.more_not_shown).toEqual({ top_ports: 3, top_carriers: 1 }); + expect(row).not.toHaveProperty('score'); + }); +}); + +describe('get_importer_profile', () => { + it('defaults to 12 months, caps long lists, and reports what was left out', async () => { + const { client, tradeIntel } = fakeClient({ + companyProfile: vi.fn().mockResolvedValue({ + company_name: 'EXAMPLE OUTDOOR SUPPLY', + company_state: null, + since: '2025-10', + until: '2026-09', + found: true, + totals: { + containers: 200, + containers_as_consignee: 50, + containers_as_notify_party: 150, + teus: 380.04, + states: ['GA', 'CA'], + }, + monthly: Array.from({ length: 12 }, (_, i) => ({ + month: `2026-${String(i + 1).padStart(2, '0')}`, + containers: 10, + teus: 19.04, + })), + ports_of_discharge: named('PORT', 14), + origin_countries: named('ORIGIN', 3), + carriers: named('CARRIER', 10), + destination_states: named('STATE', 11), + commodities_hs4: [], + notes: ['volume is physical containers, each counted once'], + }), + }); + + const result: any = await executeGetImporterProfile( + { company_name: 'EXAMPLE OUTDOOR SUPPLY' }, + client, + ); + + expect(tradeIntel.companyProfile).toHaveBeenCalledWith({ + company_name: 'EXAMPLE OUTDOOR SUPPLY', + months: 12, + }); + expect(result.totals.share_as_notify_party).toBe(0.75); + expect(result.monthly).toHaveLength(12); + expect(result.ports_of_discharge).toHaveLength(10); + expect(result.carriers).toHaveLength(10); + expect(result.more_not_shown).toEqual({ + ports_of_discharge: 4, + destination_states: 1, + }); + expect(result.notes).toEqual([ + 'volume is physical containers, each counted once', + ]); + }); + + it('explains a miss instead of returning empty totals', async () => { + const { client } = fakeClient({ + companyProfile: vi.fn().mockResolvedValue({ + company_name: 'EXAMPL OUTDOOR', + company_state: null, + since: '2025-10', + found: false, + }), + }); + + const result: any = await executeGetImporterProfile( + { company_name: 'EXAMPL OUTDOOR', months: 24 }, + client, + ); + + expect(result.found).toBe(false); + expect(result.period.from).toBe('2025-10'); + expect(result.message).toMatch(/exact company_name from search_importers/); + expect(result).not.toHaveProperty('totals'); + }); +}); + +describe('search_commodities', () => { + it('caps the goods list, counts what was cut, and drops match scores', async () => { + const { client, tradeIntel } = fakeClient({ + searchCommodities: vi.fn().mockResolvedValue({ + results: [ + { + hs4: '9401', + description: 'Seats', + estimated_value: 9800000000.2, + companies: 4200, + common_goods: Array.from({ length: 20 }, (_, i) => `good ${i}`), + score: 0.9, + }, + ], + }), + }); + + const result: any = await executeSearchCommodities( + { query: 'office chairs' }, + client, + ); + + expect(tradeIntel.searchCommodities).toHaveBeenCalledWith({ + query: 'office chairs', + limit: 8, + }); + expect(result.products[0]).toEqual({ + hs4: '9401', + description: 'Seats', + common_goods: Array.from({ length: 15 }, (_, i) => `good ${i}`), + common_goods_not_shown: 5, + importers: 4200, + estimated_value_usd_12_months: 9800000000, + }); + }); +}); + +describe('rank_importers', () => { + it('numbers the ranking and leaves out value when the API sends null', async () => { + const { client, tradeIntel } = fakeClient({ + topImporters: vi.fn().mockResolvedValue({ + since: '2025-10', + until: '2026-09', + ranked_by: 'containers', + filters: { pod: 'savannah' }, + notes: [], + importers: [ + { + company_name: 'A', + states: ['GA'], + containers: 9, + teus: 17.01, + estimated_value: null, + }, + { + company_name: 'B', + states: null, + containers: 4, + teus: 8, + estimated_value: null, + }, + ], + }), + }); + + const result: any = await executeRankImporters( + { port_of_discharge: 'savannah' }, + client, + ); + + expect(tradeIntel.topImporters).toHaveBeenCalledWith({ + port_of_discharge: 'savannah', + months: 12, + limit: 20, + }); + expect(result.importers).toStrictEqual([ + { rank: 1, company_name: 'A', states: ['GA'], containers: 9, teus: 17 }, + { rank: 2, company_name: 'B', states: null, containers: 4, teus: 8 }, + ]); + expect(result.filters).toEqual({ pod: 'savannah' }); + }); + + it('reports a rounded value when an hs4 ranking carries one', async () => { + const { client } = fakeClient({ + topImporters: vi.fn().mockResolvedValue({ + since: '2025-10', + until: '2026-09', + ranked_by: 'containers', + filters: { hs4: '9401' }, + notes: [], + importers: [ + { + company_name: 'A', + states: ['GA', 'CA'], + containers: 800, + teus: 1500, + estimated_value: 31000000.4, + }, + ], + }), + }); + + const result: any = await executeRankImporters({ hs4: '9401' }, client); + + expect(result.importers[0].estimated_value_usd).toBe(31000000); + }); +}); + +describe('get_trade_trends', () => { + it('uppercases code filters, drops internal fields, and caps the series', async () => { + const series = Array.from({ length: 620 }, (_, i) => ({ + period: `p${i}`, + origin_country: 'VIETNAM', + value: 10.6, + })); + const { client, tradeIntel } = fakeClient({ + trends: vi.fn().mockResolvedValue({ + measure: 'containers', + interval: 'month', + since: '2024-10', + until: '2026-10', + group_by: ['origin_country'], + filters: { hs4: '9401' }, + fact: 'internal_table_name', + notes: ['the latest month is partial'], + series, + }), + }); + + const result: any = await executeGetTradeTrends( + { + group_by: ['origin_country'], + filters: { hs4: '9401', dest_state: 'tx', scac: 'maeu' }, + }, + client, + ); + + expect(tradeIntel.trends).toHaveBeenCalledWith({ + measure: 'containers', + interval: 'month', + top: 10, + group_by: ['origin_country'], + filters: { + hs4: '9401', + dest_state: 'TX', + scac: 'MAEU', + company_state: undefined, + }, + }); + expect(result).not.toHaveProperty('fact'); + expect(result.series).toHaveLength(500); + expect(result.series[0].period).toBe('p120'); + expect(result.series.at(-1).period).toBe('p619'); + expect(result.series[0].value).toBe(11); + expect(result.truncated).toBe(true); + expect(result.earlier_periods_not_shown).toBe(120); + expect(result.period).toEqual({ from: '2024-10', to: '2026-10' }); + expect(result.periods_shown).toEqual({ first: 'p120', last: 'p619' }); + }); +}); + +describe('get_trade_breakdown', () => { + it('keeps one decimal for TEUs and passes the hierarchy through', async () => { + const { client, tradeIntel } = fakeClient({ + breakdown: vi.fn().mockResolvedValue({ + measure: 'teus', + dims: ['pod_coast', 'pod'], + filters: {}, + since: '2025-10', + until: '2026-09', + fact: 'internal_table_name', + notes: [], + rows: [ + { level: 0, value: 1000.26 }, + { level: 1, pod_coast: 'WEST', value: 600.04 }, + ], + }), + }); + + const result: any = await executeGetTradeBreakdown( + { + dims: ['pod_coast', 'pod'], + measure: 'teus', + since: '2025-10', + until: '2026-09', + }, + client, + ); + + expect(tradeIntel.breakdown).toHaveBeenCalledWith( + expect.objectContaining({ dims: ['pod_coast', 'pod'], top: 10 }), + ); + expect(result.rows).toEqual([ + { level: 0, value: 1000.3 }, + { level: 1, pod_coast: 'WEST', value: 600 }, + ]); + expect(result).not.toHaveProperty('fact'); + expect(result).not.toHaveProperty('truncated'); + }); +}); + +describe('get_trade_data_coverage', () => { + it('states where history starts and which month is incomplete, without internals', async () => { + const { client } = fakeClient({ + meta: vi.fn().mockResolvedValue({ + since_month: '2025-10-01', + until_month_exclusive: '2026-10-01', + months: 12, + min_containers: 5, + companies: 250000, + hs_codes: 1200, + facts_since_month: '2022-01-01', + facts_until_exclusive: '2026-10-09', + partial_month: '2026-10-01', + mode: 'incremental', + facts_hash: 'abc', + refreshed_since: '2026-07-01', + fact_rows: { lane_month: 1 }, + volume_measure: + 'physical containers: distinct (container_number, imported_on)', + built_at: '2026-10-08T06:12:44Z', + }), + }); + + const result = await executeGetTradeDataCoverage(client); + + expect(result).toEqual({ + source: + 'US ocean import bill-of-lading records (US Customs vessel manifests)', + history_starts: '2022-01', + latest_month: '2026-10', + latest_month_is_partial: true, + last_full_month: '2026-09', + search_window: { from: '2025-10', to: '2026-09' }, + importers_indexed: 250000, + product_codes_indexed: 1200, + volume_unit: 'physical containers, each counted once', + built_at: '2026-10-08T06:12:44Z', + }); + }); +}); + +describe('capping', () => { + it('keeps whole periods, newest first, and never splits a period', () => { + const series = ['2026-01', '2026-02', '2026-03'].flatMap((period) => + ['A', 'B', 'C'].map((group) => ({ period, group, value: 1 })), + ); + const { points, omittedPeriods } = capSeriesByPeriod(series, 7); + expect(points.map((p) => p.period)).toEqual([ + '2026-02', + '2026-02', + '2026-02', + '2026-03', + '2026-03', + '2026-03', + ]); + expect(omittedPeriods).toBe(1); + expect(capSeriesByPeriod(series, 9).omittedPeriods).toBe(0); + }); + + it("keeps whole rollup levels instead of cutting a parent's children", () => { + const rows = [ + { level: 0, value: 10 }, + { level: 1, a: 'X', value: 6 }, + { level: 2, a: 'X', b: 'x1', value: 4 }, + { level: 2, a: 'X', b: 'x2', value: 2 }, + { level: 1, a: 'Y', value: 4 }, + { level: 2, a: 'Y', b: 'y1', value: 4 }, + ]; + const capped = capRollupByLevel(rows, 4); + expect(capped.rows.map((row) => row.level)).toEqual([0, 1, 1]); + expect(capped.deepestLevel).toBe(1); + expect(capRollupByLevel(rows, 6).deepestLevel).toBeUndefined(); + }); +}); diff --git a/packages/mcp/src/tools/trade-intel.ts b/packages/mcp/src/tools/trade-intel.ts new file mode 100644 index 000000000..c188758cd --- /dev/null +++ b/packages/mcp/src/tools/trade-intel.ts @@ -0,0 +1,769 @@ +/** + * Trade intelligence tools. + * + * Market data on US ocean imports, built from US Customs bill-of-lading + * records (January 2022 onward, refreshed daily). Unlike the other tools these + * do not read the account's own shipments; they are gated per account and + * answer with a plain "not enabled" result when the account lacks the feature. + * + * Responses are compacted for agent context: internal bookkeeping fields are + * dropped, long lists are capped (with a count of what was left out), and + * numbers are rounded to what an answer needs. + * + * Record-level lookups (one container's or one bill of lading's parties) stay + * in the SDK only and are deliberately not exposed here. + */ + +import { z } from 'zod'; +import { FeatureNotEnabledError, Terminal49Client } from '@terminal49/sdk'; +import type { FeatureNotEnabledResult } from './get-container-route.js'; + +export const TRADE_INTEL_TOOL_NAMES = [ + 'search_importers', + 'get_importer_profile', + 'search_commodities', + 'rank_importers', + 'get_trade_trends', + 'get_trade_breakdown', + 'get_trade_data_coverage', +] as const; +export type TradeIntelToolName = (typeof TRADE_INTEL_TOOL_NAMES)[number]; + +export function isTradeIntelTool(name: string): name is TradeIntelToolName { + return (TRADE_INTEL_TOOL_NAMES as readonly string[]).includes(name); +} + +// ==================== Input schemas ==================== + +const MONTH = /^\d{4}-(0[1-9]|1[0-2])$/; +const STATE = /^[A-Za-z]{2}$/; + +const usState = (what: string) => + z + .string() + .trim() + .regex(STATE) + .describe(`Two-letter US state code of ${what}, such as "CA".`); + +const substring = (description: string) => + z.string().trim().min(1).max(200).describe(description); + +const hs4 = z + .string() + .trim() + .regex(/^\d{4}$/) + .describe( + 'Four-digit HS product code, such as "9401" (seats). Get it from search_commodities.', + ); + +const month = (description: string) => + z.string().trim().regex(MONTH).describe(description); + +export const DIMENSIONS = [ + 'company', + 'company_state', + 'hs4', + 'hs2', + 'origin_country', + 'origin_region', + 'pol', + 'pol_country', + 'pod', + 'pod_coast', + 'dest_state', + 'carrier', + 'scac', + 'container_type', + 'reefer', +] as const; + +const DIMENSION_GUIDE = + 'company = importer; company_state = importer state; hs4 / hs2 = product code (4 or 2 digits); origin_country / origin_region = where goods come from; pol / pol_country = foreign port of loading and its country; pod = US port of discharge; pod_coast = EAST, WEST, or GULF; dest_state = final US state; carrier / scac = ocean carrier name or code; container_type; reefer = refrigerated or not. ' + + 'pol, pol_country, and container_type cannot be combined with company or product (hs4, hs2) in one request, and cannot be used with measure estimated_value.'; + +const dimension = z.enum(DIMENSIONS); + +const measure = z + .enum(['containers', 'teus', 'estimated_value']) + .default('containers') + .describe( + 'containers = physical containers, each counted once (default); teus = twenty-foot equivalent units; estimated_value = modelled US dollar estimate, not the declared customs value. ' + + 'estimated_value is not available by lane: requests that also group, break down, or filter by pol, pol_country, or container_type are rejected, so use containers or teus for those.', + ); + +export const tradeFiltersSchema = z + .strictObject({ + company: substring( + 'Importer name. Substring match: "IKEA" also matches "IKEA SUPPLY AG". For one company\'s own trend use get_importer_profile instead.', + ).optional(), + company_state: usState('the importer').optional(), + hs4: hs4.optional(), + hs2: z + .string() + .trim() + .regex(/^\d{2}$/) + .describe('Two-digit HS chapter, such as "94" (furniture).') + .optional(), + origin_country: substring( + 'Origin country, substring match on the records\' spelling: "china" matches "PEOPLES REP OF CHINA".', + ).optional(), + origin_region: substring('Origin region, substring match.').optional(), + pol: substring('Foreign port of loading, substring match.').optional(), + pol_country: substring( + 'Country of the foreign port of loading, substring match.', + ).optional(), + pod: substring( + 'US port of discharge, substring match, such as "savannah" or "long beach".', + ).optional(), + pod_coast: z + .enum(['EAST', 'WEST', 'GULF']) + .describe('US coast of the port of discharge.') + .optional(), + dest_state: usState('the final destination').optional(), + carrier: substring( + 'Ocean carrier name, substring match. Carriers appear under spelling variants; prefer scac for an exact match.', + ).optional(), + scac: z + .string() + .trim() + .regex(/^[A-Za-z]{4}$/) + .describe('Four-letter carrier SCAC code, such as "MAEU".') + .optional(), + container_type: substring( + 'Container type description, substring match.', + ).optional(), + reefer: z + .boolean() + .describe('true for refrigerated containers only, false for dry only.') + .optional(), + }) + .describe( + 'Narrow the data. Name-like fields are case-insensitive substring matches; codes, states, and pod_coast match exactly.', + ); + +export const searchImportersInputSchema = z.strictObject({ + name: substring( + 'Company name; partial names and typos are fine. Results are ranked by match quality, not by size.', + ).optional(), + imports: substring( + 'What the company imports, in plain words, such as "frozen shrimp" or "office chairs".', + ).optional(), + state: usState('the importer').optional(), + port_of_discharge: substring( + 'US port of discharge, substring match, such as "long beach".', + ).optional(), + origin_country: substring( + 'Origin country, substring match, such as "vietnam".', + ).optional(), + min_containers: z + .number() + .int() + .positive() + .describe( + 'Only importers with at least this many containers in the 12-month search window (see period in the results).', + ) + .optional(), + limit: z + .number() + .int() + .min(1) + .max(25) + .default(10) + .describe('Most importers to return, from 1 to 25.'), +}); +export type SearchImportersArgs = z.input; + +export const getImporterProfileInputSchema = z.strictObject({ + company_name: z + .string() + .trim() + .min(1) + .max(200) + .describe( + 'Exact company_name returned by search_importers. A near match returns found: false.', + ), + company_state: usState( + "one location to restrict to; omit to combine all of the company's states", + ).optional(), + months: z + .number() + .int() + .min(1) + .max(60) + .default(12) + .describe( + 'Full calendar months ending last month, from 1 to 60. Use 24 or more to compare against the same months a year earlier.', + ), +}); +export type GetImporterProfileArgs = z.input< + typeof getImporterProfileInputSchema +>; + +export const searchCommoditiesInputSchema = z.strictObject({ + query: z + .string() + .trim() + .min(1) + .max(200) + .describe( + 'Product in plain words, such as "office chairs", or an HS code prefix, such as "9401" or "94".', + ), + limit: z + .number() + .int() + .min(1) + .max(20) + .default(8) + .describe('Most product codes to return, from 1 to 20.'), +}); +export type SearchCommoditiesArgs = z.input< + typeof searchCommoditiesInputSchema +>; + +export const rankImportersInputSchema = z.strictObject({ + hs4: hs4.optional(), + port_of_discharge: substring( + 'US port of discharge, substring match, such as "savannah".', + ).optional(), + origin_country: substring( + 'Origin country, substring match, such as "vietnam".', + ).optional(), + months: z + .number() + .int() + .min(1) + .max(60) + .default(12) + .describe('Full calendar months ending last month, from 1 to 60.'), + limit: z + .number() + .int() + .min(1) + .max(50) + .default(20) + .describe('Most importers to return, from 1 to 50.'), +}); +export type RankImportersArgs = z.input; + +export const getTradeTrendsInputSchema = z.strictObject({ + measure, + group_by: z + .array(dimension) + .max(2) + .describe( + `Split the series by up to two dimensions, keeping the largest groups. ${DIMENSION_GUIDE}`, + ) + .optional(), + filters: tradeFiltersSchema.optional(), + interval: z + .enum(['month', 'quarter', 'year']) + .default('month') + .describe( + 'Period size. Month for a year or less, quarter for two to three years.', + ), + since: month( + 'First month, YYYY-MM, inclusive. Default: 23 months before until, so the default series covers 24 months. Data goes back to 2022-01. Set since and until explicitly when the number of periods matters.', + ).optional(), + until: month( + 'Last month, YYYY-MM, inclusive. Default: the current month, which is still incomplete. Set it to the last full month for any comparison.', + ).optional(), + top: z + .number() + .int() + .min(1) + .max(25) + .default(10) + .describe('Keep this many largest groups, from 1 to 25.'), +}); +type TradeFilters = z.output; + +/** Codes match exactly upstream, so send them in the records' upper case. */ +function normalizeFilters(filters: TradeFilters | undefined) { + if (!filters) return undefined; + return { + ...filters, + company_state: filters.company_state?.toUpperCase(), + dest_state: filters.dest_state?.toUpperCase(), + scac: filters.scac?.toUpperCase(), + }; +} + +export type GetTradeTrendsArgs = z.input; + +export const getTradeBreakdownInputSchema = z.strictObject({ + dims: z + .array(dimension) + .min(1) + .max(3) + .describe( + `Nesting, outermost first, such as ["origin_region", "origin_country", "pod"] or ["hs2", "hs4"]. ${DIMENSION_GUIDE}`, + ), + measure, + filters: tradeFiltersSchema.optional(), + since: month( + 'First month, YYYY-MM, inclusive. Default: 11 months before until, so the default window is the 12 months ending with the current, incomplete month, not 12 full months. For an annual total set since and until to 12 full months.', + ).optional(), + until: month( + 'Last month, YYYY-MM, inclusive. Default: the current month, which is still incomplete. Set it to the last full month for clean totals.', + ).optional(), + top: z + .number() + .int() + .min(1) + .max(20) + .default(10) + .describe( + 'Keep this many largest children under each parent, from 1 to 20.', + ), +}); +export type GetTradeBreakdownArgs = z.input< + typeof getTradeBreakdownInputSchema +>; + +export const getTradeDataCoverageInputSchema = z.strictObject({}); + +// ==================== Results ==================== + +const NOT_ENABLED_MESSAGE = + "Trade intelligence isn't enabled for this Terminal49 account, so there is no import market data to show. " + + 'To turn it on, contact support@terminal49.com.'; +const NOT_ENABLED_ALTERNATIVE = + "The shipment and container tools still work for this account's own tracked shipments."; + +export function tradeIntelNotEnabled(): FeatureNotEnabledResult { + return { + error: 'FeatureNotEnabled', + message: NOT_ENABLED_MESSAGE, + alternative: NOT_ENABLED_ALTERNATIVE, + }; +} + +async function guard( + call: () => Promise, +): Promise { + try { + return await call(); + } catch (error) { + if (error instanceof FeatureNotEnabledError) return tradeIntelNotEnabled(); + throw error; + } +} + +const isNotEnabled = (value: unknown): value is FeatureNotEnabledResult => + Boolean( + value && + typeof value === 'object' && + (value as { error?: unknown }).error === 'FeatureNotEnabled', + ); + +// ==================== Compaction helpers ==================== + +const round = (value: unknown, digits = 0): number | undefined => { + if (typeof value !== 'number' || !Number.isFinite(value)) return undefined; + const factor = 10 ** digits; + return Math.round(value * factor) / factor; +}; + +/** + * The service sends index dates (meta, search windows, first/last month) as + * the first day of the month, YYYY-MM-DD, and analytics periods as YYYY-MM. + * Results show both as YYYY-MM. + */ +const MONTH_OR_DATE = + /^(\d{4}-(?:0[1-9]|1[0-2]))(?:-(?:0[1-9]|[12]\d|3[01]))?$/; + +export function toMonth(value: unknown): string | undefined { + if (typeof value !== 'string') return undefined; + return MONTH_OR_DATE.exec(value)?.[1]; +} + +/** The month before a YYYY-MM or YYYY-MM-DD month, used to turn exclusive ends inclusive. */ +export function previousMonth(value: unknown): string | undefined { + const month = toMonth(value); + if (!month) return undefined; + const [year, monthNumber] = month.split('-').map(Number); + const date = new Date(Date.UTC(year, monthNumber - 2, 1)); + return `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, '0')}`; +} + +/** Keep the first `limit` items; report how many were left out. */ +function capped(items: unknown, limit: number) { + const list = Array.isArray(items) ? (items as T[]) : []; + return { + items: list.slice(0, limit), + omitted: Math.max(0, list.length - limit), + }; +} + +type Named = { name?: string; containers?: number; teus?: number }; +type Commodity = { + hs4?: string; + description?: string; + containers?: number; + estimated_value?: number; +}; + +const named = (row: Named) => ({ + name: row.name, + containers: row.containers, + ...(row.teus === undefined ? {} : { teus: round(row.teus, 1) }), +}); + +const commodity = (row: Commodity) => ({ + hs4: row.hs4, + description: row.description, + containers: row.containers, + estimated_value_usd: round(row.estimated_value), +}); + +const share = (part: unknown, whole: unknown) => + typeof part === 'number' && typeof whole === 'number' && whole > 0 + ? round(part / whole, 2) + : undefined; + +// ==================== Executors ==================== + +const SEARCH_TOP_LIST = 5; +const PROFILE_LIST = 10; +const MAX_SERIES_ROWS = 500; +const MAX_BREAKDOWN_ROWS = 400; +const MAX_COMMON_GOODS = 15; + +export async function executeSearchImporters( + args: SearchImportersArgs, + client: Terminal49Client, +) { + const request = searchImportersInputSchema.parse(args); + const body = await guard(() => + client.tradeIntel.searchCompanies({ + ...request, + state: request.state?.toUpperCase(), + }), + ); + if (isNotEnabled(body)) return body; + + const window = body.index; + return { + period: { + from: toMonth(window?.since_month), + to: previousMonth(window?.until_month_exclusive), + note: 'Volumes cover the 12-month search window from..to, which can end a month or two before the last full month. Use get_importer_profile for the latest full months.', + }, + importers: (body.results ?? []).map((row) => { + const omitted: Record = {}; + const list = (key: string, items: unknown, map: (r: T) => R) => { + const { items: kept, omitted: left } = capped( + items, + SEARCH_TOP_LIST, + ); + if (left > 0) omitted[key] = left; + return kept.map(map); + }; + const compact = { + company_name: row.company_name, + state: row.company_state ?? null, + containers: row.containers, + containers_as_consignee: row.containers_as_consignee, + containers_as_notify_party: row.containers_as_notify_party, + share_as_notify_party: share( + row.containers_as_notify_party, + row.containers, + ), + teus: round(row.teus, 1), + estimated_value_usd: round(row.estimated_value), + reefer_share: round(row.reefer_share, 2), + first_month: toMonth(row.first_month), + last_month: toMonth(row.last_month), + top_ports: list('top_ports', row.top_ports, named), + top_origins: list('top_origins', row.top_origins, named), + top_carriers: list('top_carriers', row.top_carriers, named), + top_products: list('top_products', row.top_commodities, commodity), + }; + return Object.keys(omitted).length + ? { ...compact, more_not_shown: omitted } + : compact; + }), + }; +} + +export async function executeGetImporterProfile( + args: GetImporterProfileArgs, + client: Terminal49Client, +) { + const request = getImporterProfileInputSchema.parse(args); + const body = await guard(() => + client.tradeIntel.companyProfile({ + ...request, + company_state: request.company_state?.toUpperCase(), + }), + ); + if (isNotEnabled(body)) return body; + if (!body.found) { + return { + company_name: body.company_name, + found: false, + period: { from: body.since, to: body.until }, + message: + 'No imports under this exact name in the period. Use the exact company_name from search_importers; the company may also import under other names.', + }; + } + + const omitted: Record = {}; + const list = (key: string, items: unknown, map: (row: T) => R) => { + const { items: kept, omitted: left } = capped(items, PROFILE_LIST); + if (left > 0) omitted[key] = left; + return kept.map(map); + }; + + const totals = body.totals; + const result = { + company_name: body.company_name, + state: body.company_state ?? null, + found: true, + period: { from: body.since, to: body.until }, + totals: totals + ? { + containers: totals.containers, + containers_as_consignee: totals.containers_as_consignee, + containers_as_notify_party: totals.containers_as_notify_party, + share_as_notify_party: share( + totals.containers_as_notify_party, + totals.containers, + ), + teus: round(totals.teus, 1), + states: totals.states, + } + : undefined, + monthly: (body.monthly ?? []).map((row) => ({ + month: row.month, + containers: row.containers, + teus: round(row.teus, 1), + })), + ports_of_discharge: list( + 'ports_of_discharge', + body.ports_of_discharge, + named, + ), + origin_countries: list('origin_countries', body.origin_countries, named), + carriers: list('carriers', body.carriers, named), + destination_states: list( + 'destination_states', + body.destination_states, + named, + ), + products: list('products', body.commodities_hs4, commodity), + notes: body.notes ?? [], + }; + return Object.keys(omitted).length + ? { ...result, more_not_shown: omitted } + : result; +} + +export async function executeSearchCommodities( + args: SearchCommoditiesArgs, + client: Terminal49Client, +) { + const request = searchCommoditiesInputSchema.parse(args); + const body = await guard(() => client.tradeIntel.searchCommodities(request)); + if (isNotEnabled(body)) return body; + return { + products: (body.results ?? []).map((row) => { + const goods = capped(row.common_goods, MAX_COMMON_GOODS); + const compact = { + hs4: row.hs4, + description: row.description, + common_goods: goods.items, + importers: row.companies, + estimated_value_usd_12_months: round(row.estimated_value), + }; + return goods.omitted > 0 + ? { ...compact, common_goods_not_shown: goods.omitted } + : compact; + }), + }; +} + +export async function executeRankImporters( + args: RankImportersArgs, + client: Terminal49Client, +) { + const request = rankImportersInputSchema.parse(args); + const body = await guard(() => client.tradeIntel.topImporters(request)); + if (isNotEnabled(body)) return body; + return { + period: { from: body.since, to: body.until }, + ranked_by: body.ranked_by, + filters: body.filters, + importers: (body.importers ?? []).map((row, index) => ({ + rank: index + 1, + company_name: row.company_name, + states: row.states, + containers: row.containers, + teus: round(row.teus, 1), + ...(row.estimated_value == null + ? {} + : { estimated_value_usd: round(row.estimated_value) }), + })), + notes: body.notes ?? [], + }; +} + +/** Drop rows past `limit`, flagging the cut so the agent can narrow the query. */ +type SeriesPoint = { period?: string; value?: number }; +type RollupRow = { level?: number; value?: number }; + +/** + * Keep whole periods, newest first, so a capped series never ends mid-period + * or hides the latest data. Points arrive ordered by period, then group. + */ +export function capSeriesByPeriod(series: unknown, limit: number) { + const points = Array.isArray(series) ? (series as SeriesPoint[]) : []; + if (points.length <= limit) { + return { points, omittedPeriods: 0 }; + } + const periods: string[] = []; + const byPeriod = new Map(); + for (const point of points) { + const key = String(point.period); + if (!byPeriod.has(key)) { + byPeriod.set(key, []); + periods.push(key); + } + byPeriod.get(key)!.push(point); + } + const kept: string[] = []; + let count = 0; + for (let i = periods.length - 1; i >= 0; i--) { + const size = byPeriod.get(periods[i])!.length; + if (count + size > limit && kept.length > 0) break; + kept.unshift(periods[i]); + count += size; + } + return { + points: kept.flatMap((period) => byPeriod.get(period)!), + omittedPeriods: periods.length - kept.length, + }; +} + +/** + * Keep whole levels of a rollup (grand total, then each nesting level) so a + * capped breakdown never shows a parent with only some of its children. + */ +export function capRollupByLevel(rows: unknown, limit: number) { + const list = Array.isArray(rows) ? (rows as RollupRow[]) : []; + if (list.length <= limit) return { rows: list, deepestLevel: undefined }; + const levels = [...new Set(list.map((row) => row.level ?? 0))].sort( + (a, b) => a - b, + ); + let deepest = levels[0]; + for (const level of levels) { + const count = list.filter((row) => (row.level ?? 0) <= level).length; + if (count > limit) break; + deepest = level; + } + return { + rows: list.filter((row) => (row.level ?? 0) <= deepest), + deepestLevel: deepest, + }; +} + +const roundValue = (row: T, digits: number) => ({ + ...row, + value: round(row.value, digits), +}); + +export async function executeGetTradeTrends( + args: GetTradeTrendsArgs, + client: Terminal49Client, +) { + const request = getTradeTrendsInputSchema.parse(args); + const body = await guard(() => + client.tradeIntel.trends({ + ...request, + filters: normalizeFilters(request.filters), + }), + ); + if (isNotEnabled(body)) return body; + const digits = body.measure === 'teus' ? 1 : 0; + const { points, omittedPeriods } = capSeriesByPeriod( + body.series, + MAX_SERIES_ROWS, + ); + const result = { + measure: body.measure, + interval: body.interval, + period: { from: body.since, to: body.until }, + group_by: body.group_by ?? [], + filters: body.filters ?? {}, + series: points.map((row) => roundValue(row, digits)), + notes: body.notes ?? [], + }; + if (omittedPeriods === 0) return result; + return { + ...result, + truncated: true, + periods_shown: { + first: points[0]?.period, + last: points.at(-1)?.period, + }, + earlier_periods_not_shown: omittedPeriods, + truncation_note: + 'Only the most recent whole periods fit. Ask for fewer groups (top), a longer interval, or a later since to see the rest.', + }; +} + +export async function executeGetTradeBreakdown( + args: GetTradeBreakdownArgs, + client: Terminal49Client, +) { + const request = getTradeBreakdownInputSchema.parse(args); + const body = await guard(() => + client.tradeIntel.breakdown({ + ...request, + filters: normalizeFilters(request.filters), + }), + ); + if (isNotEnabled(body)) return body; + const digits = body.measure === 'teus' ? 1 : 0; + const { rows, deepestLevel } = capRollupByLevel( + body.rows, + MAX_BREAKDOWN_ROWS, + ); + const result = { + measure: body.measure, + dims: body.dims, + period: { from: body.since, to: body.until }, + filters: body.filters ?? {}, + rows: rows.map((row) => roundValue(row, digits)), + notes: body.notes ?? [], + }; + if (deepestLevel === undefined) return result; + return { + ...result, + truncated: true, + deepest_level_shown: deepestLevel, + truncation_note: + 'Deeper levels did not fit and were left out whole. Ask for fewer dimensions or a smaller top to see them.', + }; +} + +export async function executeGetTradeDataCoverage(client: Terminal49Client) { + const body = await guard(() => client.tradeIntel.meta()); + if (isNotEnabled(body)) return body; + return { + source: + 'US ocean import bill-of-lading records (US Customs vessel manifests)', + history_starts: toMonth(body.facts_since_month), + latest_month: toMonth(body.partial_month), + latest_month_is_partial: true, + last_full_month: previousMonth(body.partial_month), + search_window: { + from: toMonth(body.since_month), + to: previousMonth(body.until_month_exclusive), + }, + importers_indexed: body.companies, + product_codes_indexed: body.hs_codes, + volume_unit: 'physical containers, each counted once', + built_at: body.built_at, + }; +} diff --git a/sdks/typescript-sdk/README.md b/sdks/typescript-sdk/README.md index 3690a6298..f09d9e34a 100644 --- a/sdks/typescript-sdk/README.md +++ b/sdks/typescript-sdk/README.md @@ -62,6 +62,21 @@ see the SDK quickstart in the docs site: `docs/api-docs/getting-started/sdk-quic Some methods exist only on a resource namespace, for example `containers.update(id, attrs)`, `shippingLines.get(id)`, the per-entity custom field methods (`containers`, `shipments`, `trackingRequests`), the party role methods (`containers`, `shipments`), and the `documents`, `emailSubmissions`, and `documentSchemas` methods. See `docs/sdk/methods.mdx` for the full list. +### Trade intelligence + +`client.tradeIntel` covers US import bill-of-lading records (US Customs manifests), January 2022 onward. +Methods return the API's plain JSON body and throw `FeatureNotEnabledError` when the account lacks the feature. + +- `tradeIntel.meta()` +- `tradeIntel.searchCompanies({ name?, imports?, state?, port_of_discharge?, origin_country?, min_containers?, limit? })` +- `tradeIntel.companyProfile({ company_name, company_state?, months? })` +- `tradeIntel.searchCommodities({ query, limit? })` +- `tradeIntel.topImporters({ hs4?, port_of_discharge?, origin_country?, months?, limit? })` +- `tradeIntel.trends({ measure?, group_by?, filters?, interval?, since?, until?, top? })` +- `tradeIntel.breakdown({ dims, measure?, filters?, since?, until?, top? })` +- `tradeIntel.lookupContainer(containerNumber)` +- `tradeIntel.lookupBillOfLading(bolNumber, { months? })` + ### Examples After building, run: diff --git a/sdks/typescript-sdk/package.json b/sdks/typescript-sdk/package.json index 2f699d8e4..7417531a8 100644 --- a/sdks/typescript-sdk/package.json +++ b/sdks/typescript-sdk/package.json @@ -27,7 +27,7 @@ "build": "tsc", "type-check": "tsc --noEmit", "test": "vp test run", - "generate:types": "openapi-typescript ../../docs/openapi.json -o src/generated/terminal49.ts && node scripts/generate-filter-types.mjs", + "generate:types": "openapi-typescript ../../docs/openapi.json -o src/generated/terminal49.ts --default-non-nullable=false && node scripts/generate-filter-types.mjs", "docs": "npm run docs:clean && typedoc --options typedoc.json && node scripts/postprocess-generated-docs.mjs", "docs:clean": "node scripts/clean-generated-docs.mjs", "docs:mintlify": "npm run docs", diff --git a/sdks/typescript-sdk/src/client.transport.test.ts b/sdks/typescript-sdk/src/client.transport.test.ts index aed1744af..1a4adef06 100644 --- a/sdks/typescript-sdk/src/client.transport.test.ts +++ b/sdks/typescript-sdk/src/client.transport.test.ts @@ -136,6 +136,40 @@ describe('Terminal49Client transport resilience', () => { } }); + it('counts network and 5xx retries against one maxRetries budget', async () => { + vi.useFakeTimers(); + try { + const outcomes = ['throw', 'throw', 503, 503, 200] as const; + let attempt = 0; + const fetchImpl = vi.fn(async () => { + const outcome = outcomes[attempt++]; + if (outcome === 'throw') throw new TypeError('fetch failed'); + if (outcome === 503) { + return jsonResponse({ error: 'Data source error' }, 503); + } + return jsonResponse({ results: [] }); + }); + + const client = new Terminal49Client({ + apiToken: 'token-123', + apiBaseUrl: baseUrl, + fetchImpl: fetchImpl as unknown as typeof fetch, + maxRetries: 2, + }); + + const resultPromise = client.tradeIntel.searchCommodities({ + query: 'office chairs', + }); + const assertion = + expect(resultPromise).rejects.toBeInstanceOf(UpstreamError); + await vi.advanceTimersByTimeAsync(10_000); + await assertion; + expect(fetchImpl).toHaveBeenCalledTimes(3); + } finally { + vi.useRealTimers(); + } + }); + it('waits for the Retry-After header before retrying a 429', async () => { vi.useFakeTimers(); try { diff --git a/sdks/typescript-sdk/src/client.ts b/sdks/typescript-sdk/src/client.ts index 4bd6b04e5..296e7ecf8 100644 --- a/sdks/typescript-sdk/src/client.ts +++ b/sdks/typescript-sdk/src/client.ts @@ -23,6 +23,7 @@ import { ShipmentManager, ShippingLineManager, TrackingRequestManager, + TradeIntelManager, } from './client/managers/index.js'; import type { CreateTrackingRequestFromInferOptions, @@ -225,6 +226,12 @@ export class Terminal49Client { public documents: DocumentManager; public emailSubmissions: EmailSubmissionManager; public documentSchemas: DocumentSchemaManager; + /** + * Trade intelligence: US import bill-of-lading records (US Customs + * manifests). Plain JSON responses; requires the trade intelligence feature + * on the account (otherwise `FeatureNotEnabledError`). + */ + public tradeIntel: TradeIntelManager; public webhooks = { list: (options?: ListOptions) => this.listWebhooks(options), @@ -379,6 +386,7 @@ export class Terminal49Client { this.transport, defaultFormat, ); + this.tradeIntel = new TradeIntelManager(this.transport, defaultFormat); } /** diff --git a/sdks/typescript-sdk/src/client/errors.ts b/sdks/typescript-sdk/src/client/errors.ts index 5ebdfeded..f78652533 100644 --- a/sdks/typescript-sdk/src/client/errors.ts +++ b/sdks/typescript-sdk/src/client/errors.ts @@ -137,6 +137,18 @@ export function extractErrorMessage(body: any): string { return body.detail; } + // Schema validation failures from the trade intelligence endpoints: + // `{ detail: [{ loc: ["body", "limit"], msg: "...", type: "..." }] }`. + if (Array.isArray(body?.detail) && body.detail.length > 0) { + return body.detail + .map((item: any) => { + const msg = item?.msg || item?.type || 'Invalid value'; + const loc = Array.isArray(item?.loc) ? item.loc.join('.') : undefined; + return loc ? `${msg} (${loc})` : msg; + }) + .join('; '); + } + return 'Unknown error'; } diff --git a/sdks/typescript-sdk/src/client/interceptors.ts b/sdks/typescript-sdk/src/client/interceptors.ts index 067dd994f..16bfbb153 100644 --- a/sdks/typescript-sdk/src/client/interceptors.ts +++ b/sdks/typescript-sdk/src/client/interceptors.ts @@ -40,6 +40,19 @@ export class AuthInterceptor { } } +/** A request captured before it was sent, so it can be replayed on retry. */ +interface ReplayableRequest { + request: Request; + /** Schema path (e.g. `/trade_intel/trends`); read-only query `POST`s are retried like `GET`s. */ + path?: string; + /** Retries spent so far, shared by `onError` and `onResponse` so together they stay within `maxRetries`. */ + retries: number; +} + +/** The middleware context the retry interceptor reads; `schemaPath` is absent on manual requests. */ +type RetryRequestParams = Pick & + Partial>; + /** * Retries transient failures with backoff. Two kinds of failure are handled: * @@ -48,23 +61,26 @@ export class AuthInterceptor { * `onError` — these never reach `onResponse` because `fetch` rejected. * * Retries are gated by {@link shouldRetryRequest}: idempotent methods are always - * eligible, but non-idempotent writes are only retried when the caller supplied - * an `Idempotency-Key` header. 429 backoff honors the server's `Retry-After`. + * eligible, as are read-only query `POST`s (the `/trade_intel/` routes, whose + * body is a query and creates nothing). Other non-idempotent writes are only + * retried when the caller supplied an `Idempotency-Key` header. 429 backoff + * honors the server's `Retry-After`. */ export class RetryInterceptor { - private replayableRequests = new Map(); + private replayableRequests = new Map(); constructor( private maxRetries: number, private fetchImpl: typeof fetch = fetch, ) {} - onRequest({ request, id }: Pick) { + onRequest({ request, id, schemaPath }: RetryRequestParams) { try { - this.replayableRequests.set( - this.requestKey(request, id), - request.clone(), - ); + this.replayableRequests.set(this.requestKey(request, id), { + request: request.clone(), + path: schemaPath, + retries: 0, + }); } catch { this.replayableRequests.delete(this.requestKey(request, id)); } @@ -79,24 +95,24 @@ export class RetryInterceptor { response: Response; }): Promise { const requestKey = this.requestKey(request, id); - const replayableRequest = this.replayableRequests.get(requestKey); + const replayable = this.replayableRequests.get(requestKey); let currentResponse = response; - let attempt = 0; try { while ( - replayableRequest && + replayable && isRetryableStatus(currentResponse.status) && - this.isRetryable(replayableRequest) && - attempt < this.maxRetries + this.isRetryable(replayable) && + replayable.retries < this.maxRetries ) { const retryAfterMs = parseRetryAfterMs( currentResponse.headers.get('Retry-After'), ); - await this.sleep(computeBackoffDelay(attempt, retryAfterMs)); + await this.sleep(computeBackoffDelay(replayable.retries, retryAfterMs)); + replayable.retries++; try { - currentResponse = await this.fetchImpl(replayableRequest.clone()); + currentResponse = await this.fetchImpl(replayable.request.clone()); } catch (error) { // openapi-fetch does NOT route a throw from `onResponse` back through // `onError`, so a network failure during a response-triggered retry @@ -105,7 +121,6 @@ export class RetryInterceptor { // initial-fetch path. throw toNetworkError(error); } - attempt++; } return currentResponse; @@ -128,25 +143,24 @@ export class RetryInterceptor { error: unknown; }): Promise { const requestKey = this.requestKey(request, id); - const replayableRequest = this.replayableRequests.get(requestKey); + const replayable = this.replayableRequests.get(requestKey); if ( - replayableRequest && + replayable && isRetryableNetworkError(error) && - this.isRetryable(replayableRequest) + this.isRetryable(replayable) ) { - let attempt = 0; - while (attempt < this.maxRetries) { - await this.sleep(computeBackoffDelay(attempt)); + while (replayable.retries < this.maxRetries) { + await this.sleep(computeBackoffDelay(replayable.retries)); + replayable.retries++; try { // A recovered Response is handed back to openapi-fetch, which then // runs `onResponse` for this same request id. Keep the replay entry // so that path can still retry a subsequent 429/5xx — `onResponse` // deletes it once the response chain finishes. - return await this.fetchImpl(replayableRequest.clone()); + return await this.fetchImpl(replayable.request.clone()); } catch (retryError) { - attempt++; - if (attempt >= this.maxRetries) { + if (replayable.retries >= this.maxRetries) { this.replayableRequests.delete(requestKey); return toNetworkError(retryError); } @@ -158,10 +172,11 @@ export class RetryInterceptor { return toNetworkError(error); } - private isRetryable(request: Request): boolean { + private isRetryable({ request, path }: ReplayableRequest): boolean { return shouldRetryRequest({ method: request.method, hasIdempotencyKey: request.headers.has(IDEMPOTENCY_KEY_HEADER), + path, }); } diff --git a/sdks/typescript-sdk/src/client/managers/index.ts b/sdks/typescript-sdk/src/client/managers/index.ts index 6e35d9c92..1831cd184 100644 --- a/sdks/typescript-sdk/src/client/managers/index.ts +++ b/sdks/typescript-sdk/src/client/managers/index.ts @@ -4,3 +4,4 @@ export * from './shipments.js'; export * from './shipping-lines.js'; export * from './tracking-requests.js'; export * from './documents.js'; +export * from './trade-intel.js'; diff --git a/sdks/typescript-sdk/src/client/managers/trade-intel.test.ts b/sdks/typescript-sdk/src/client/managers/trade-intel.test.ts new file mode 100644 index 000000000..79e902224 --- /dev/null +++ b/sdks/typescript-sdk/src/client/managers/trade-intel.test.ts @@ -0,0 +1,502 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { describe, expect, it, vi } from 'vite-plus/test'; +import { + FeatureNotEnabledError, + RateLimitError, + Terminal49Client, + UpstreamError, + ValidationError, +} from '../../client.js'; +import { createMockFetch, jsonResponse } from '../../test/mock-fetch.js'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const fixturesDir = path.resolve(__dirname, '../../fixtures'); +const baseUrl = 'https://api.test/v2'; + +function fixture(name: string) { + return JSON.parse( + fs.readFileSync(path.resolve(fixturesDir, `${name}.json`), 'utf8'), + ); +} + +function makeClient( + handlers: Parameters[0], + maxRetries = 0, +) { + const { fetchImpl, calls } = createMockFetch(handlers); + const client = new Terminal49Client({ + apiToken: 'token-123', + apiBaseUrl: baseUrl, + fetchImpl, + maxRetries, + }); + return { client, calls }; +} + +function sentBody(call: { init?: RequestInit }) { + return JSON.parse(String(call.init?.body)); +} + +describe('TradeIntelManager', () => { + it('meta GETs /trade_intel/meta and returns the body unchanged', async () => { + const meta = fixture('trade-intel.meta'); + const { client, calls } = makeClient({ + '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/trade_intel/meta': () => jsonResponse(meta), + }); + + const result = await client.tradeIntel.meta(); + + expect(calls[0].init?.method).toBe('GET'); + expect(calls[0].url.toString()).toBe(`${baseUrl}/trade_intel/meta`); + expect(result).toEqual(meta); + expect(result.facts_since_month).toBe('2022-01-01'); + }); + + it('searchCompanies POSTs the request body as JSON', async () => { + const body = fixture('trade-intel.companies.search'); + const { client, calls } = makeClient({ + '/trade_intel/companies/search': () => jsonResponse(body), + }); + + const result = await client.tradeIntel.searchCompanies({ + imports: 'frozen shrimp', + state: 'FL', + limit: 5, + }); + + expect(calls[0].init?.method).toBe('POST'); + expect(new Headers(calls[0].init?.headers).get('Content-Type')).toBe( + 'application/json', + ); + expect(new Headers(calls[0].init?.headers).get('Authorization')).toBe( + 'Token token-123', + ); + expect(sentBody(calls[0])).toEqual({ + imports: 'frozen shrimp', + state: 'FL', + limit: 5, + }); + expect(result).toEqual(body); + expect(result.results[0].company_name).toBe('EXAMPLE OUTDOOR SUPPLY'); + }); + + it('searchCompanies sends an empty object when called without arguments', async () => { + const { client, calls } = makeClient({ + '/trade_intel/companies/search': () => + jsonResponse(fixture('trade-intel.companies.search')), + }); + + await client.tradeIntel.searchCompanies(); + + expect(sentBody(calls[0])).toEqual({}); + }); + + it('companyProfile POSTs the exact company name and passes the body through', async () => { + const body = fixture('trade-intel.companies.profile'); + const { client, calls } = makeClient({ + '/trade_intel/companies/profile': () => jsonResponse(body), + }); + + const result = await client.tradeIntel.companyProfile({ + company_name: 'EXAMPLE OUTDOOR SUPPLY', + months: 24, + }); + + expect(calls[0].init?.method).toBe('POST'); + expect(sentBody(calls[0])).toEqual({ + company_name: 'EXAMPLE OUTDOOR SUPPLY', + months: 24, + }); + expect(result).toEqual(body); + expect(result.totals?.containers).toBe(1240); + }); + + it('companyProfile rejects a blank company name before any request', async () => { + const { client, calls } = makeClient({}); + + await expect( + client.tradeIntel.companyProfile({ company_name: ' ' }), + ).rejects.toBeInstanceOf(ValidationError); + expect(calls).toHaveLength(0); + }); + + it('searchCommodities POSTs the query and returns matches', async () => { + const body = fixture('trade-intel.commodities.search'); + const { client, calls } = makeClient({ + '/trade_intel/commodities/search': () => jsonResponse(body), + }); + + const result = await client.tradeIntel.searchCommodities({ + query: 'office chairs', + limit: 2, + }); + + expect(calls[0].init?.method).toBe('POST'); + expect(sentBody(calls[0])).toEqual({ query: 'office chairs', limit: 2 }); + expect(result).toEqual(body); + expect(result.results[0].hs4).toBe('9401'); + }); + + it('searchCommodities rejects a blank query before any request', async () => { + const { client, calls } = makeClient({}); + + await expect( + client.tradeIntel.searchCommodities({ query: '' }), + ).rejects.toBeInstanceOf(ValidationError); + expect(calls).toHaveLength(0); + }); + + it('topImporters POSTs the filters and returns the ranking', async () => { + const body = fixture('trade-intel.importers.top'); + const { client, calls } = makeClient({ + '/trade_intel/importers/top': () => jsonResponse(body), + }); + + const result = await client.tradeIntel.topImporters({ + hs4: '9401', + months: 3, + limit: 1, + }); + + expect(calls[0].init?.method).toBe('POST'); + expect(sentBody(calls[0])).toEqual({ hs4: '9401', months: 3, limit: 1 }); + expect(result).toEqual(body); + expect(result.importers[0].containers).toBe(800); + }); + + it('topImporters passes through the nulls a ranking without hs4 carries', async () => { + const body = { + since: '2025-10', + until: '2026-09', + ranked_by: 'containers', + filters: { pod: 'savannah' }, + notes: [], + importers: [ + { + company_name: 'EXAMPLE OUTDOOR SUPPLY', + states: null, + containers: 800, + teus: 1500.0, + estimated_value: null, + }, + ], + }; + const { client } = makeClient({ + '/trade_intel/importers/top': () => jsonResponse(body), + }); + + const result = await client.tradeIntel.topImporters({ + port_of_discharge: 'savannah', + }); + + expect(result).toEqual(body); + expect(result.filters.pod).toBe('savannah'); + expect(result.importers[0].states).toBeNull(); + expect(result.importers[0].estimated_value).toBeNull(); + }); + + it('trends POSTs group_by, filters, and the period', async () => { + const body = fixture('trade-intel.trends'); + const { client, calls } = makeClient({ + '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/trade_intel/trends': () => jsonResponse(body), + }); + + const request = { + filters: { hs4: '9401' }, + group_by: ['origin_country' as const], + interval: 'quarter' as const, + since: '2026-01', + until: '2026-06', + top: 2, + }; + const result = await client.tradeIntel.trends(request); + + expect(calls[0].init?.method).toBe('POST'); + expect(sentBody(calls[0])).toEqual(request); + expect(result).toEqual(body); + expect(result.series[0].origin_country).toBe('VIETNAM'); + }); + + it('breakdown POSTs the dimension hierarchy and returns rows with levels', async () => { + const body = fixture('trade-intel.breakdown'); + const { client, calls } = makeClient({ + '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/trade_intel/breakdown': () => jsonResponse(body), + }); + + const result = await client.tradeIntel.breakdown({ + dims: ['pod_coast', 'pod'], + filters: { hs4: '9401' }, + top: 2, + }); + + expect(calls[0].init?.method).toBe('POST'); + expect(sentBody(calls[0])).toEqual({ + dims: ['pod_coast', 'pod'], + filters: { hs4: '9401' }, + top: 2, + }); + expect(result).toEqual(body); + expect(result.rows[0].level).toBe(0); + }); + + it('breakdown rejects an empty dims list before any request', async () => { + const { client, calls } = makeClient({}); + + await expect( + client.tradeIntel.breakdown({ dims: [] }), + ).rejects.toBeInstanceOf(ValidationError); + expect(calls).toHaveLength(0); + }); + + it('lookupContainer POSTs the container number and passes the record through', async () => { + const body = fixture('trade-intel.containers.lookup'); + const { client, calls } = makeClient({ + '/trade_intel/containers/lookup': () => jsonResponse(body), + }); + + const result = await client.tradeIntel.lookupContainer('MSCU1234567'); + + expect(calls[0].init?.method).toBe('POST'); + expect(sentBody(calls[0])).toEqual({ container_number: 'MSCU1234567' }); + expect(result).toEqual(body); + expect(result.found).toBe(true); + expect(result.bills_of_lading?.[0].scac).toBe('MSCU'); + }); + + it('lookupContainer resolves (not rejects) a found: false body', async () => { + const { client } = makeClient({ + '/trade_intel/containers/lookup': () => + jsonResponse({ + container_number: 'BAD', + found: false, + error: 'expected ISO 6346 format, e.g. MSCU1234567', + }), + }); + + const result = await client.tradeIntel.lookupContainer('BAD'); + + expect(result.found).toBe(false); + expect(result.error).toMatch(/ISO 6346/); + }); + + it('lookupContainer rejects a blank number before any request', async () => { + const { client, calls } = makeClient({}); + + await expect(client.tradeIntel.lookupContainer('')).rejects.toBeInstanceOf( + ValidationError, + ); + expect(calls).toHaveLength(0); + }); + + it('lookupBillOfLading POSTs the number and only sends months when given', async () => { + const body = fixture('trade-intel.bills-of-lading.lookup'); + const { client, calls } = makeClient({ + '/trade_intel/bills_of_lading/lookup': () => jsonResponse(body), + }); + + const result = await client.tradeIntel.lookupBillOfLading('MEDUW9559867'); + await client.tradeIntel.lookupBillOfLading('MEDUW9559867', { months: 18 }); + + expect(calls[0].init?.method).toBe('POST'); + expect(sentBody(calls[0])).toEqual({ bol_number: 'MEDUW9559867' }); + expect(sentBody(calls[1])).toEqual({ + bol_number: 'MEDUW9559867', + months: 18, + }); + expect(result).toEqual(body); + expect(result.containers?.[0].container_number).toBe('MSCU1234567'); + }); + + it('lookupBillOfLading rejects a blank number before any request', async () => { + const { client, calls } = makeClient({}); + + await expect( + client.tradeIntel.lookupBillOfLading(' '), + ).rejects.toBeInstanceOf(ValidationError); + expect(calls).toHaveLength(0); + }); + + describe('errors', () => { + it('maps a 400 { error } body to ValidationError with the server message', async () => { + const { client } = makeClient({ + '/trade_intel/importers/top': () => + jsonResponse( + { + error: + "hs4 must be a 4-digit HS code, e.g. '0306'; use commodities/search to find one", + }, + 400, + ), + }); + + const error = await client.tradeIntel + .topImporters({ hs4: '03' }) + .catch((e: unknown) => e); + + expect(error).toBeInstanceOf(ValidationError); + expect((error as ValidationError).status).toBe(400); + expect((error as ValidationError).message).toMatch( + /hs4 must be a 4-digit HS code/, + ); + }); + + it('maps a 422 { detail: [...] } body to ValidationError naming the field', async () => { + const { client } = makeClient({ + '/trade_intel/commodities/search': () => + jsonResponse( + { + detail: [ + { + loc: ['body', 'limit'], + msg: 'Input should be less than or equal to 50', + type: 'less_than_equal', + }, + ], + }, + 422, + ), + }); + + const error = await client.tradeIntel + .searchCommodities({ query: 'laptops', limit: 500 }) + .catch((e: unknown) => e); + + expect(error).toBeInstanceOf(ValidationError); + expect((error as ValidationError).status).toBe(422); + expect((error as ValidationError).message).toBe( + 'Input should be less than or equal to 50 (body.limit)', + ); + }); + + it('maps the 422 cost-cap { error } body to ValidationError with the server message', async () => { + const { client } = makeClient({ + '/trade_intel/bills_of_lading/lookup': () => + jsonResponse( + { + error: + 'Query too broad for the cost cap; narrow the time window or filters.', + }, + 422, + ), + }); + + const error = await client.tradeIntel + .lookupBillOfLading('MEDUW9559867', { months: 18 }) + .catch((e: unknown) => e); + + expect(error).toBeInstanceOf(ValidationError); + expect((error as ValidationError).status).toBe(422); + expect((error as ValidationError).message).toBe( + 'Query too broad for the cost cap; narrow the time window or filters.', + ); + }); + + it('maps the 403 not-enabled body to FeatureNotEnabledError', async () => { + const { client } = makeClient({ + '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/trade_intel/meta': () => + jsonResponse( + { error: 'Trade intelligence is not enabled for this account' }, + 403, + ), + }); + + const error = await client.tradeIntel.meta().catch((e: unknown) => e); + + expect(error).toBeInstanceOf(FeatureNotEnabledError); + expect((error as FeatureNotEnabledError).status).toBe(403); + expect((error as FeatureNotEnabledError).message).toBe( + 'Trade intelligence is not enabled for this account', + ); + }); + + it('retries a 429 on a query POST and then succeeds', async () => { + vi.useFakeTimers(); + try { + let attempt = 0; + const body = fixture('trade-intel.trends'); + const { client, calls } = makeClient( + { + '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/trade_intel/trends': () => { + attempt += 1; + if (attempt === 1) { + return jsonResponse( + { error: 'Rate limit exceeded; retry in a minute' }, + 429, + { 'Retry-After': '1' }, + ); + } + return jsonResponse(body); + }, + }, + 2, + ); + + const resultPromise = client.tradeIntel.trends({ + filters: { hs4: '9401' }, + }); + await vi.advanceTimersByTimeAsync(1000); + const result = await resultPromise; + + expect(result).toEqual(body); + expect(calls).toHaveLength(2); + expect(sentBody(calls[1])).toEqual({ filters: { hs4: '9401' } }); + } finally { + vi.useRealTimers(); + } + }); + + it('surfaces RateLimitError once retries on a 429 are exhausted', async () => { + const { client, calls } = makeClient({ + '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/trade_intel/meta': () => + jsonResponse( + { error: 'Rate limit exceeded; retry in a minute' }, + 429, + ), + }); + + const error = await client.tradeIntel.meta().catch((e: unknown) => e); + + expect(error).toBeInstanceOf(RateLimitError); + expect((error as RateLimitError).message).toBe( + 'Rate limit exceeded; retry in a minute', + ); + expect(calls).toHaveLength(1); + }); + + it('retries a 502 on a query POST and maps an exhausted retry to UpstreamError', async () => { + vi.useFakeTimers(); + try { + const { client, calls } = makeClient( + { + '/trade_intel/companies/profile': () => + jsonResponse( + { + error: + 'Trade intelligence is temporarily unavailable; try again shortly', + }, + 502, + ), + }, + 1, + ); + + const resultPromise = client.tradeIntel + .companyProfile({ company_name: 'EXAMPLE OUTDOOR SUPPLY' }) + .catch((e: unknown) => e); + await vi.advanceTimersByTimeAsync(500); + const error = await resultPromise; + + expect(error).toBeInstanceOf(UpstreamError); + expect((error as UpstreamError).status).toBe(502); + expect((error as UpstreamError).message).toMatch( + /temporarily unavailable/, + ); + expect(calls).toHaveLength(2); + } finally { + vi.useRealTimers(); + } + }); + }); +}); diff --git a/sdks/typescript-sdk/src/client/managers/trade-intel.ts b/sdks/typescript-sdk/src/client/managers/trade-intel.ts new file mode 100644 index 000000000..55d6b9dfa --- /dev/null +++ b/sdks/typescript-sdk/src/client/managers/trade-intel.ts @@ -0,0 +1,219 @@ +import type { components } from '../../generated/terminal49.js'; +import { ValidationError } from '../errors.js'; +import { BaseManager } from './base.js'; + +type Schemas = components['schemas']; + +/** Index window, freshness, and counts returned by `GET /trade_intel/meta`. */ +export type TradeIntelMeta = Schemas['TradeIntelMeta']; +/** Body of `POST /trade_intel/companies/search`. */ +export type TradeIntelCompanySearchRequest = + Schemas['TradeIntelCompanySearchRequest']; +/** Response of `POST /trade_intel/companies/search`. */ +export type TradeIntelCompanySearchResponse = + Schemas['TradeIntelCompanySearchResponse']; +/** One importer returned by `searchCompanies`. */ +export type TradeIntelCompanySearchResult = + Schemas['TradeIntelCompanySearchResult']; +/** Body of `POST /trade_intel/companies/profile`. */ +export type TradeIntelCompanyProfileRequest = + Schemas['TradeIntelCompanyProfileRequest']; +/** Response of `POST /trade_intel/companies/profile`. */ +export type TradeIntelCompanyProfile = Schemas['TradeIntelCompanyProfile']; +/** Body of `POST /trade_intel/commodities/search`. */ +export type TradeIntelCommoditySearchRequest = + Schemas['TradeIntelCommoditySearchRequest']; +/** Response of `POST /trade_intel/commodities/search`. */ +export type TradeIntelCommoditySearchResponse = + Schemas['TradeIntelCommoditySearchResponse']; +/** Body of `POST /trade_intel/importers/top`. */ +export type TradeIntelTopImportersRequest = + Schemas['TradeIntelTopImportersRequest']; +/** Response of `POST /trade_intel/importers/top`. */ +export type TradeIntelTopImporters = Schemas['TradeIntelTopImporters']; +/** Body of `POST /trade_intel/trends`. */ +export type TradeIntelTrendsRequest = Schemas['TradeIntelTrendsRequest']; +/** Response of `POST /trade_intel/trends`. */ +export type TradeIntelTrends = Schemas['TradeIntelTrends']; +/** Body of `POST /trade_intel/breakdown`. */ +export type TradeIntelBreakdownRequest = Schemas['TradeIntelBreakdownRequest']; +/** Response of `POST /trade_intel/breakdown`. */ +export type TradeIntelBreakdown = Schemas['TradeIntelBreakdown']; +/** Filters accepted by `trends` and `breakdown`. */ +export type TradeIntelFilters = Schemas['TradeIntelFilters']; +/** A dimension accepted by `group_by` (trends) and `dims` (breakdown). */ +export type TradeIntelDimension = Schemas['TradeIntelDimension']; +/** A measure accepted by `trends` and `breakdown`. */ +export type TradeIntelMeasure = Schemas['TradeIntelMeasure']; +/** Response of `POST /trade_intel/containers/lookup`. */ +export type TradeIntelContainerLookup = Schemas['TradeIntelContainerLookup']; +/** Response of `POST /trade_intel/bills_of_lading/lookup`. */ +export type TradeIntelBillOfLadingLookup = + Schemas['TradeIntelBillOfLadingLookup']; + +/** Options for {@link TradeIntelManager.lookupBillOfLading}. */ +export interface TradeIntelBillOfLadingLookupOptions { + /** How many months back to search (1 to 18). Defaults to 12. */ + months?: number; +} + +/** + * Trade intelligence: US import bill-of-lading records (US Customs manifests), + * January 2022 onward, refreshed daily. + * + * These endpoints accept and return plain JSON rather than JSON:API, so every + * method resolves to the response body as the API sent it. They are gated per + * account: when trade intelligence is not enabled, calls reject with + * `FeatureNotEnabledError` (HTTP 403). Invalid input rejects with + * `ValidationError` (400 or 422), and 429 / 502 / 504 responses are retried + * with backoff like every other read before `RateLimitError` or + * `UpstreamError` is thrown. + * + * Volume figures are physical containers (each box counted once), estimated + * values are modelled USD estimates rather than declared customs values, and + * the current month is partial. Company names are split by state and large + * importers use several names, so absent volume does not mean low volume. + */ +export class TradeIntelManager extends BaseManager { + /** + * Index window, history start, partial month, and build time. Also the + * cheapest way to check whether the account has trade intelligence enabled. + */ + async meta(): Promise { + return this.transport.execute(() => + this.transport.client.GET('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/trade_intel/meta'), + ); + } + + /** + * Find US importers by name (fuzzy), by what they import (semantic), or + * both. Results are ranked by match quality, not size. + */ + async searchCompanies( + request: TradeIntelCompanySearchRequest = {}, + ): Promise { + return this.transport.execute(() => + this.transport.client.POST('/trade_intel/companies/search', { + body: request, + }), + ); + } + + /** + * Import profile for one company over full calendar months. `company_name` + * must be the exact name returned by {@link searchCompanies}. + */ + async companyProfile( + request: TradeIntelCompanyProfileRequest, + ): Promise { + if (!request.company_name?.trim()) { + throw new ValidationError('company_name is required (/company_name)'); + } + return this.transport.execute(() => + this.transport.client.POST('/trade_intel/companies/profile', { + body: request, + }), + ); + } + + /** Resolve a product description or HS code prefix to 4-digit HS headings. */ + async searchCommodities( + request: TradeIntelCommoditySearchRequest, + ): Promise { + if (!request.query?.trim()) { + throw new ValidationError('query is required (/query)'); + } + return this.transport.execute(() => + this.transport.client.POST('/trade_intel/commodities/search', { + body: request, + }), + ); + } + + /** + * Rank US importers by physical containers, optionally for one HS4 heading, + * port of discharge, or origin country. + */ + async topImporters( + request: TradeIntelTopImportersRequest = {}, + ): Promise { + return this.transport.execute(() => + this.transport.client.POST('/trade_intel/importers/top', { + body: request, + }), + ); + } + + /** + * Time series of containers, TEUs, or estimated value, optionally split by + * up to two dimensions. Defaults to the 24 months ending with the current, + * partial month. + */ + async trends( + request: TradeIntelTrendsRequest = {}, + ): Promise { + return this.transport.execute(() => + this.transport.client.POST('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/trade_intel/trends', { body: request }), + ); + } + + /** + * Nested totals over a dimension hierarchy, with a grand total and + * subtotals at every level. Defaults to the 12 months ending with the + * current, partial month. + */ + async breakdown( + request: TradeIntelBreakdownRequest, + ): Promise { + if (!request.dims?.length) { + throw new ValidationError( + 'dims must list at least one dimension (/dims)', + ); + } + return this.transport.execute(() => + this.transport.client.POST('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/trade_intel/breakdown', { body: request }), + ); + } + + /** + * The most recent US import of a container: its bills of lading, parties, + * and commodity lines. Resolves with `found: false` (HTTP 200) when the + * number is malformed or no import is on record. + */ + async lookupContainer( + containerNumber: string, + ): Promise { + if (!containerNumber?.trim()) { + throw new ValidationError( + 'container_number is required (/container_number)', + ); + } + return this.transport.execute(() => + this.transport.client.POST('/trade_intel/containers/lookup', { + body: { container_number: containerNumber }, + }), + ); + } + + /** + * The import record for a master or house bill of lading: containers, + * parties, and commodity lines. Searches the last `months` months + * (default 12). + */ + async lookupBillOfLading( + bolNumber: string, + options: TradeIntelBillOfLadingLookupOptions = {}, + ): Promise { + if (!bolNumber?.trim()) { + throw new ValidationError('bol_number is required (/bol_number)'); + } + return this.transport.execute(() => + this.transport.client.POST('/trade_intel/bills_of_lading/lookup', { + body: + options.months === undefined + ? { bol_number: bolNumber } + : { bol_number: bolNumber, months: options.months }, + }), + ); + } +} diff --git a/sdks/typescript-sdk/src/client/retry-policy.test.ts b/sdks/typescript-sdk/src/client/retry-policy.test.ts index b4dbc7b2a..d11574056 100644 --- a/sdks/typescript-sdk/src/client/retry-policy.test.ts +++ b/sdks/typescript-sdk/src/client/retry-policy.test.ts @@ -2,6 +2,7 @@ import { describe, expect, it } from 'vite-plus/test'; import { computeBackoffDelay, isIdempotentMethod, + isReadOnlyQueryPath, isRetryableNetworkError, isRetryableStatus, parseRetryAfterMs, @@ -78,6 +79,37 @@ describe('retry-policy', () => { shouldRetryRequest({ method: 'POST', hasIdempotencyKey: true }), ).toBe(true); }); + + it('allows retry for POSTs to read-only query routes', () => { + expect( + shouldRetryRequest({ method: 'POST', path: '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/trade_intel/trends' }), + ).toBe(true); + expect( + shouldRetryRequest({ + method: 'post', + path: '/trade_intel/bills_of_lading/lookup', + }), + ).toBe(true); + }); + + it('still blocks retry for writes on other routes and for non-POST writes', () => { + expect( + shouldRetryRequest({ method: 'POST', path: '/tracking_requests' }), + ).toBe(false); + expect( + shouldRetryRequest({ method: 'PATCH', path: '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/trade_intel/trends' }), + ).toBe(false); + }); + }); + + describe('isReadOnlyQueryPath', () => { + it('recognizes trade intelligence routes only', () => { + expect(isReadOnlyQueryPath('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/trade_intel/meta')).toBe(true); + expect(isReadOnlyQueryPath('/trade_intel/companies/search')).toBe(true); + expect(isReadOnlyQueryPath('/shipments')).toBe(false); + expect(isReadOnlyQueryPath('/trade_intelligence')).toBe(false); + expect(isReadOnlyQueryPath(undefined)).toBe(false); + }); }); describe('parseRetryAfterMs', () => { diff --git a/sdks/typescript-sdk/src/client/retry-policy.ts b/sdks/typescript-sdk/src/client/retry-policy.ts index 72b8f093d..0573c3c12 100644 --- a/sdks/typescript-sdk/src/client/retry-policy.ts +++ b/sdks/typescript-sdk/src/client/retry-policy.ts @@ -26,6 +26,21 @@ export function isIdempotentMethod(method: string): boolean { return IDEMPOTENT_METHODS.has(method.toUpperCase()); } +/** + * Route prefixes whose `POST` operations are pure queries: the body carries + * search or analytics parameters and the server changes nothing, so replaying + * one is as safe as replaying a `GET`. + */ +const READ_ONLY_QUERY_PATH_PREFIXES = ['/trade_intel/']; + +/** Whether a `POST` to this schema path is a read-only query (safe to retry). */ +export function isReadOnlyQueryPath(path: string | undefined): boolean { + if (!path) return false; + return READ_ONLY_QUERY_PATH_PREFIXES.some((prefix) => + path.startsWith(prefix), + ); +} + /** Whether the response status is one the SDK retries (429 + 5xx). */ export function isRetryableStatus(status: number): boolean { return status === 429 || status >= 500; @@ -61,15 +76,21 @@ export interface RetryRequestContext { method: string; /** Set when the caller supplied an `Idempotency-Key`, making a write safe to replay. */ hasIdempotencyKey?: boolean; + /** Schema path of the request (e.g. `/trade_intel/trends`), used to recognize read-only query `POST`s. */ + path?: string; } /** * Whether a request may be retried at all. Idempotent methods are always - * eligible; non-idempotent writes are only eligible when the caller opted in - * with an `Idempotency-Key` header. + * eligible, as are `POST`s to read-only query routes (see + * {@link isReadOnlyQueryPath}); other non-idempotent writes are only eligible + * when the caller opted in with an `Idempotency-Key` header. */ export function shouldRetryRequest(ctx: RetryRequestContext): boolean { if (isIdempotentMethod(ctx.method)) return true; + if (ctx.method.toUpperCase() === 'POST' && isReadOnlyQueryPath(ctx.path)) { + return true; + } return ctx.hasIdempotencyKey === true; } diff --git a/sdks/typescript-sdk/src/client/transport.ts b/sdks/typescript-sdk/src/client/transport.ts index 7653bc5e5..def729819 100644 --- a/sdks/typescript-sdk/src/client/transport.ts +++ b/sdks/typescript-sdk/src/client/transport.ts @@ -143,10 +143,25 @@ export class Transport { private manualMiddlewareContext( request: Request, - ): Pick { + ): Pick { return { request, id: `manual:${randomUUID()}`, + schemaPath: this.schemaPathOf(request), }; } + + /** + * The request path relative to the API base, so manual requests get the + * same retry treatment as typed ones (openapi-fetch supplies `schemaPath` + * for the typed client; the manual path has no schema, so the concrete + * path stands in for it). + */ + private schemaPathOf(request: Request): string { + const basePath = new URL(this.baseUrl).pathname.replace(/\/+$/, ''); + const { pathname } = new URL(request.url); + return pathname.startsWith(basePath) + ? pathname.slice(basePath.length) + : pathname; + } } diff --git a/sdks/typescript-sdk/src/fixtures/trade-intel.bills-of-lading.lookup.json b/sdks/typescript-sdk/src/fixtures/trade-intel.bills-of-lading.lookup.json new file mode 100644 index 000000000..4a5865c01 --- /dev/null +++ b/sdks/typescript-sdk/src/fixtures/trade-intel.bills-of-lading.lookup.json @@ -0,0 +1,47 @@ +{ + "bol_number": "MEDUW9559867", + "found": true, + "searched_since": "2025-10-01", + "bills_matched": 1, + "bills_truncated": false, + "containers": [ + { + "container_number": "MSCU1234567", + "imported_on": "2026-08-14", + "scac": "MSCU", + "vessel_name": "EXAMPLE VESSEL", + "voyage_number": "026N", + "port_of_lading_name": "NINGBO", + "port_of_discharge_name": "LOS ANGELES", + "destination_city": "ONTARIO", + "destination_state": "CA", + "container_type_short_description": "40 HC", + "container_teu": 2.0 + } + ], + "containers_truncated": false, + "commodities": [ + { + "imported_on": "2026-08-14", + "master_bill_of_lading_number": "MEDUW9559867", + "house_bill_of_lading_number": null, + "consignee": "EXAMPLE OUTDOOR SUPPLY", + "consignee_city": "ONTARIO", + "consignee_state": "CA", + "notify_party": "EXAMPLE OUTDOOR SUPPLY", + "shipper": "EXAMPLE FURNITURE CO LTD", + "shipper_country": "PEOPLES REP OF CHINA", + "commodity_short_description": "OFFICE CHAIRS", + "commodity_hs_code_6": "940130", + "commodity_hs_code_6_description": "Swivel seats with variable height adjustment", + "commodity_quantity": 420.0, + "commodity_quantity_uom": "CTN", + "commodity_estimated_value": 38000.0, + "bol_metric_tons": 8.2, + "bol_teus": 2.0, + "nvocc_scac": null, + "nvocc_scac_description": null + } + ], + "commodities_truncated": false +} diff --git a/sdks/typescript-sdk/src/fixtures/trade-intel.breakdown.json b/sdks/typescript-sdk/src/fixtures/trade-intel.breakdown.json new file mode 100644 index 000000000..e4624402a --- /dev/null +++ b/sdks/typescript-sdk/src/fixtures/trade-intel.breakdown.json @@ -0,0 +1,44 @@ +{ + "measure": "containers", + "dims": [ + "pod_coast", + "pod" + ], + "filters": { + "hs4": "9401" + }, + "since": "2026-01", + "until": "2026-06", + "fact": "hs_lane_month", + "notes": [ + "volume is physical containers, each counted once" + ], + "rows": [ + { + "level": 0, + "value": 60000 + }, + { + "level": 1, + "pod_coast": "WEST", + "value": 32000 + }, + { + "level": 2, + "pod_coast": "WEST", + "pod": "LOS ANGELES", + "value": 18000 + }, + { + "level": 2, + "pod_coast": "WEST", + "pod": "LONG BEACH", + "value": 14000 + }, + { + "level": 1, + "pod_coast": "EAST", + "value": 28000 + } + ] +} diff --git a/sdks/typescript-sdk/src/fixtures/trade-intel.commodities.search.json b/sdks/typescript-sdk/src/fixtures/trade-intel.commodities.search.json new file mode 100644 index 000000000..183817987 --- /dev/null +++ b/sdks/typescript-sdk/src/fixtures/trade-intel.commodities.search.json @@ -0,0 +1,16 @@ +{ + "results": [ + { + "hs4": "9401", + "description": "Seats (other than barber, dental, etc), and part", + "estimated_value": 9800000000.0, + "companies": 4200, + "common_goods": [ + "office chairs", + "sofas", + "car seats" + ], + "score": 0.91 + } + ] +} diff --git a/sdks/typescript-sdk/src/fixtures/trade-intel.companies.profile.json b/sdks/typescript-sdk/src/fixtures/trade-intel.companies.profile.json new file mode 100644 index 000000000..e44609334 --- /dev/null +++ b/sdks/typescript-sdk/src/fixtures/trade-intel.companies.profile.json @@ -0,0 +1,69 @@ +{ + "company_name": "EXAMPLE OUTDOOR SUPPLY", + "company_state": null, + "since": "2025-10", + "until": "2026-09", + "found": true, + "totals": { + "containers": 1240, + "containers_as_consignee": 1180, + "containers_as_notify_party": 60, + "teus": 2310.5, + "states": [ + "GA", + "CA" + ] + }, + "monthly": [ + { + "month": "2025-10", + "containers": 95, + "teus": 180.0 + }, + { + "month": "2025-11", + "containers": 110, + "teus": 205.5 + } + ], + "ports_of_discharge": [ + { + "name": "SAVANNAH", + "containers": 900, + "teus": 1700.0 + } + ], + "origin_countries": [ + { + "name": "VIETNAM", + "containers": 700, + "teus": 1300.0 + } + ], + "carriers": [ + { + "name": "MAERSK LINE", + "containers": 500, + "teus": 950.0 + } + ], + "destination_states": [ + { + "name": "GA", + "containers": 900, + "teus": 1700.0 + } + ], + "commodities_hs4": [ + { + "hs4": "9401", + "description": "Seats (other than barber, dental, etc), and part", + "containers": 800, + "estimated_value": 31000000.0 + } + ], + "notes": [ + "volume is physical containers, each counted once even when it appears on several bills", + "the period covers full calendar months ending last month" + ] +} diff --git a/sdks/typescript-sdk/src/fixtures/trade-intel.companies.search.json b/sdks/typescript-sdk/src/fixtures/trade-intel.companies.search.json new file mode 100644 index 000000000..d2ee09bfa --- /dev/null +++ b/sdks/typescript-sdk/src/fixtures/trade-intel.companies.search.json @@ -0,0 +1,65 @@ +{ + "index": { + "since_month": "2025-10-01", + "until_month_exclusive": "2026-10-01", + "months": 12, + "min_containers": 5, + "companies": 250000, + "hs_codes": 1200, + "facts_since_month": "2022-01-01", + "facts_until_exclusive": "2026-10-09", + "partial_month": "2026-10-01", + "mode": "incremental", + "facts_hash": "3f9c1a7e", + "refreshed_since": "2026-07-01", + "fact_rows": { + "lane_month": 1200000, + "company_month": 9800000, + "commodity_month": 6400000, + "hs_lane_month": 15000000 + }, + "volume_measure": "physical containers: distinct (container_number, imported_on)", + "built_at": "2026-10-08T06:12:44Z" + }, + "results": [ + { + "company_name": "EXAMPLE OUTDOOR SUPPLY", + "company_state": "GA", + "containers": 1240, + "containers_as_consignee": 1180, + "containers_as_notify_party": 60, + "teus": 2310.5, + "estimated_value": 48200000.0, + "reefer_share": 0.0, + "first_month": "2025-10-01", + "last_month": "2026-09-01", + "top_ports": [ + { + "name": "SAVANNAH", + "containers": 900 + } + ], + "top_origins": [ + { + "name": "VIETNAM", + "containers": 700 + } + ], + "top_carriers": [ + { + "name": "MAERSK LINE", + "containers": 500 + } + ], + "top_commodities": [ + { + "hs4": "9401", + "description": "Seats (other than barber, dental, etc), and part", + "estimated_value": 31000000.0, + "containers": 800 + } + ], + "score": 0.97 + } + ] +} diff --git a/sdks/typescript-sdk/src/fixtures/trade-intel.containers.lookup.json b/sdks/typescript-sdk/src/fixtures/trade-intel.containers.lookup.json new file mode 100644 index 000000000..bc6c6da0c --- /dev/null +++ b/sdks/typescript-sdk/src/fixtures/trade-intel.containers.lookup.json @@ -0,0 +1,56 @@ +{ + "container_number": "MSCU1234567", + "found": true, + "latest_import": { + "container_number": "MSCU1234567", + "imported_on": "2026-08-14", + "scac": "MSCU", + "vessel_name": "EXAMPLE VESSEL", + "port_of_discharge_name": "LOS ANGELES" + }, + "bills_of_lading": [ + { + "imported_on": "2026-08-14", + "master_bill_of_lading_number": "MEDUW9559867", + "house_bill_of_lading_number": null, + "scac": "MSCU", + "scac_name": "MEDITERRANEAN SHIPPING COMPANY", + "vessel_name": "EXAMPLE VESSEL", + "voyage_number": "026N", + "port_of_lading_name": "NINGBO", + "port_of_lading_country": "PEOPLES REP OF CHINA", + "port_of_discharge_name": "LOS ANGELES", + "destination_city": "ONTARIO", + "destination_state": "CA", + "ultimate_origin_country": "PEOPLES REP OF CHINA", + "container_type_short_description": "40 HC", + "container_teu": 2.0, + "container_reefer_flag": false + } + ], + "commodities": [ + { + "imported_on": "2026-08-14", + "master_bill_of_lading_number": "MEDUW9559867", + "house_bill_of_lading_number": null, + "consignee": "EXAMPLE OUTDOOR SUPPLY", + "consignee_city": "ONTARIO", + "consignee_state": "CA", + "notify_party": "EXAMPLE OUTDOOR SUPPLY", + "shipper": "EXAMPLE FURNITURE CO LTD", + "shipper_country": "PEOPLES REP OF CHINA", + "commodity_short_description": "OFFICE CHAIRS", + "commodity_hs_code_6": "940130", + "commodity_hs_code_6_description": "Swivel seats with variable height adjustment", + "commodity_quantity": 420.0, + "commodity_quantity_uom": "CTN", + "commodity_estimated_value": 38000.0, + "bol_metric_tons": 8.2, + "bol_teus": 2.0, + "nvocc_scac": null, + "nvocc_scac_description": null + } + ], + "commodities_truncated": false, + "note": "only the most recent US import of this container is on record; earlier imports are not included" +} diff --git a/sdks/typescript-sdk/src/fixtures/trade-intel.importers.top.json b/sdks/typescript-sdk/src/fixtures/trade-intel.importers.top.json new file mode 100644 index 000000000..1cd784d13 --- /dev/null +++ b/sdks/typescript-sdk/src/fixtures/trade-intel.importers.top.json @@ -0,0 +1,23 @@ +{ + "since": "2025-10", + "until": "2026-09", + "ranked_by": "containers", + "filters": { + "hs4": "9401" + }, + "notes": [ + "volume is physical containers, each counted once" + ], + "importers": [ + { + "company_name": "EXAMPLE OUTDOOR SUPPLY", + "states": [ + "GA", + "CA" + ], + "containers": 800, + "teus": 1500.0, + "estimated_value": 31000000.0 + } + ] +} diff --git a/sdks/typescript-sdk/src/fixtures/trade-intel.meta.json b/sdks/typescript-sdk/src/fixtures/trade-intel.meta.json new file mode 100644 index 000000000..436295a97 --- /dev/null +++ b/sdks/typescript-sdk/src/fixtures/trade-intel.meta.json @@ -0,0 +1,22 @@ +{ + "since_month": "2025-10-01", + "until_month_exclusive": "2026-10-01", + "months": 12, + "min_containers": 5, + "companies": 250000, + "hs_codes": 1200, + "facts_since_month": "2022-01-01", + "facts_until_exclusive": "2026-10-09", + "partial_month": "2026-10-01", + "mode": "incremental", + "facts_hash": "3f9c1a7e", + "refreshed_since": "2026-07-01", + "fact_rows": { + "lane_month": 1200000, + "company_month": 9800000, + "commodity_month": 6400000, + "hs_lane_month": 15000000 + }, + "volume_measure": "physical containers: distinct (container_number, imported_on)", + "built_at": "2026-10-08T06:12:44Z" +} diff --git a/sdks/typescript-sdk/src/fixtures/trade-intel.trends.json b/sdks/typescript-sdk/src/fixtures/trade-intel.trends.json new file mode 100644 index 000000000..83b134087 --- /dev/null +++ b/sdks/typescript-sdk/src/fixtures/trade-intel.trends.json @@ -0,0 +1,38 @@ +{ + "measure": "containers", + "interval": "quarter", + "since": "2026-01", + "until": "2026-06", + "group_by": [ + "origin_country" + ], + "filters": { + "hs4": "9401" + }, + "fact": "hs_lane_month", + "notes": [ + "volume is physical containers, each counted once" + ], + "series": [ + { + "period": "2026-01", + "origin_country": "VIETNAM", + "value": 12000 + }, + { + "period": "2026-01", + "origin_country": "PEOPLES REP OF CHINA", + "value": 11000 + }, + { + "period": "2026-04", + "origin_country": "VIETNAM", + "value": 12500 + }, + { + "period": "2026-04", + "origin_country": "PEOPLES REP OF CHINA", + "value": 10800 + } + ] +} diff --git a/sdks/typescript-sdk/src/generated/terminal49.ts b/sdks/typescript-sdk/src/generated/terminal49.ts index ea1b37c0d..f8b9d2967 100644 --- a/sdks/typescript-sdk/src/generated/terminal49.ts +++ b/sdks/typescript-sdk/src/generated/terminal49.ts @@ -1454,6 +1454,212 @@ export interface paths { patch?: never; trace?: never; }; + "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/trade_intel/meta": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get trade intelligence coverage + * @description Returns the window the search index covers, how far back history goes, which month is still partial, and when the data was last built. Call it to learn the exact `since_month` and `facts_since_month` before quoting a period, and to confirm the account has trade intelligence enabled (a `403` means it does not). + * + * The data is US import bill-of-lading records (US Customs vessel manifests), January 2022 onward, refreshed daily. + */ + get: operations["get-trade-intel-meta"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/trade_intel/companies/search": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Search importers + * @description Find US importers by name, by what they import, or both, from US import bill-of-lading records (US Customs vessel manifests). `name` is a fuzzy match (partial or misspelled names are fine); `imports` is a semantic match on product descriptions. With neither, the largest importers matching the other filters are returned. Each result carries 12-full-month containers (split by consignee and notify party), TEUs, estimated value, and top ports, origins, carriers, and HS4 headings. + * + * **Results are ranked by match quality, not size.** A fuzzy search for a well-known retailer can return a small, similarly named company above the retailer itself; check `containers` before choosing a row. Companies are split by state and large importers use several names, so look through the whole list before concluding a company is small. Importers can also have their names withheld from manifests, so absent volume does not mean low volume. + * + * Take `company_name` from a result and pass it unchanged to `companies/profile` for monthly history. + */ + post: operations["post-trade-intel-companies-search"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/trade_intel/companies/profile": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get an importer profile + * @description Import profile for one company from US import bill-of-lading records (US Customs vessel manifests): totals (containers as consignee and as notify party, TEUs), a monthly series, ports of discharge, origin countries, carriers, destination states, and HS4 headings with estimated value. + * + * `company_name` must be the exact normalized name returned by `companies/search`. The period is `months` full calendar months ending last month, so the current, partial month is excluded; use `months: 24` or more to compare a year against the same months a year earlier. + * + * Volume is physical containers, each counted once. Estimated values are modelled USD estimates, not declared customs values. A company's figures are a floor: related entities and alternative names are separate companies, and importers can have their names withheld from manifests. Carrier names are as spelled on manifests; merge variants before computing shares. + */ + post: operations["post-trade-intel-companies-profile"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/trade_intel/commodities/search": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Search commodities + * @description Resolve a product description, or an HS code prefix, to 4-digit HS headings. Each result carries the heading description, goods commonly declared under it on bills of lading, 12-month estimated import value, and the number of importing companies. + * + * HS heading descriptions are truncated and headings are broader than everyday product names (HS 0306 covers all frozen crustaceans, not only shrimp), so check `common_goods` before relying on a code. Feed `hs4` into `importers/top` or into the `hs4` filter of `trends` and `breakdown`. + */ + post: operations["post-trade-intel-commodities-search"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/trade_intel/importers/top": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Rank importers + * @description Rank US importers by physical containers over `months` full calendar months, optionally restricted to one HS4 heading, a port of discharge, or an origin country. Estimated value is included when `hs4` is given. + * + * The ranking is built from US import bill-of-lading records (US Customs vessel manifests), so it lists consignees and notify parties: forwarders, NVOCCs, and customs brokers appear alongside cargo owners, and the response does not say which is which or give each company's total volume. Run `companies/search` on shortlisted names to get the consignee/notify split and totals. Large importers can be split across several names and states, and some have their names withheld from manifests, so absence from the ranking does not mean low volume. + */ + post: operations["post-trade-intel-importers-top"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "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/trade_intel/trends": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get import trends + * @description Monthly, quarterly, or yearly series of containers, TEUs, or estimated value, optionally split by up to two dimensions (keeping the top N groups) and filtered by any dimension. Volume is physical containers, each counted once. + * + * **Defaults.** Without `since` the series covers the 24 months ending with `until`, so it starts 23 months before `until`, but history is available back to January 2022 (`facts_since_month` in `meta`). Without `until` the series ends with the current, partial month, which is flagged `partial`; exclude it from comparisons and compare like periods (the same months a year earlier). + * + * **Filters.** `company` is a substring match, so `IKEA` also matches `IKEA SUPPLY AG`; for one company's own series use `companies/profile`. Countries, ports, and carriers use the manifests' spellings and carriers appear under variants, so filter with substrings and merge variants before computing shares. Market totals come from a series without a `company` filter; do not add volumes across HS codes or companies, since a container can carry several codes and companies can share containers. + * + * The response names the fact table used in `fact` and lists counting caveats in `notes`. + */ + post: operations["post-trade-intel-trends"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "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/trade_intel/breakdown": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get an import breakdown + * @description Nested totals over a dimension hierarchy (for example region > country > port, or HS2 > HS4), with a grand total at level 0 and subtotals at every level, keeping the top N children under each parent. Volume is physical containers, each counted once; estimated value is a modelled USD estimate. + * + * Defaults to the 12 months ending with the current, partial month (`since` is 11 months before `until`); set `since` and `until` to full months for comparisons. The `company` filter is a substring match. Countries, ports, and carriers use the manifests' spellings, so filter with substrings and merge carrier variants before computing shares. Do not add values across HS codes or companies; use a breakdown without a `company` filter for market totals. + */ + post: operations["post-trade-intel-breakdown"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/trade_intel/containers/lookup": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Look up a container's import record + * @description The most recent US import of a container from US import bill-of-lading records (US Customs vessel manifests): the bills of lading it travelled under (carrier, vessel, voyage, ports, destination) and the commodity lines on those bills with consignee, shipper, and notify party. + * + * Only the most recent US import per container is on record; earlier trips are not returned. A malformed number returns `200` with `found: false` and an `error`; a well-formed number with no record returns `found: false`. Commodity lines are capped at 200 (`commodities_truncated`). This lookup reads record-level data and can take several seconds. + */ + post: operations["post-trade-intel-containers-lookup"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/trade_intel/bills_of_lading/lookup": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Look up a bill of lading + * @description The import record for a master or house bill of lading from US import bill-of-lading records (US Customs vessel manifests): the containers that moved under it and the commodity lines with consignee, shipper, and notify party. + * + * The search covers the last `months` months (default 12). Up to 50 matching bill records are used (`bills_truncated`), and containers and commodity lines are each capped at 200 (`containers_truncated`, `commodities_truncated`). When nothing matches, `found` is `false` and `searched_since` tells you how far back the search went. This lookup reads record-level data and can take several seconds. + */ + post: operations["post-trade-intel-bills-of-lading-lookup"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; } export type webhooks = Record; export interface components { @@ -3556,51 +3762,809 @@ export interface components { }; }; }; - }; - responses: { - /** @description Bad Request */ - BadRequest: { - headers: { - [name: string]: unknown; - }; - content: { - /** - * @example { - * "errors": [ - * { - * "status": "400", - * "title": "Bad Request", - * "source": { - * "parameter": "include" - * } - * } - * ] - * } - */ - "application/json": { - errors?: components["schemas"]["error"][]; - }; - }; + /** @description Plain JSON error body returned by trade intelligence endpoints (not JSON:API). */ + TradeIntelError: { + /** + * @description What was wrong with the request, or why trade intelligence could not answer. + * @example hs4 must be a 4-digit HS code, e.g. '0306'; use commodities/search to find one + */ + error: string; + }; + /** @description Schema validation failure (for example a `limit` above its maximum or a malformed month). */ + TradeIntelValidationError: { + /** @description One entry per field that failed schema validation. */ + detail: { + /** @description Path to the offending field, for example `["body", "limit"]`. */ + loc: (string | number)[]; + /** @description Human-readable validation message. */ + msg: string; + /** @description Validation error type, for example `less_than_equal`. */ + type: string; + }[]; }; - /** @description Unauthorized. The API token is missing or invalid, or the account may not perform this action. */ - Unauthorized: { - headers: { - [name: string]: unknown; - }; - content: { - /** - * @example { - * "errors": [ - * { - * "detail": "You are not allowed to perform this action" - * } - * ] - * } - */ - "application/json": { - errors?: components["schemas"]["error"][]; - }; - }; + /** + * @description What to measure. `containers` counts physical containers (each box once). `teus` sums twenty-foot equivalent units. `estimated_value` sums modelled USD estimates, not declared customs values. + * @default containers + * @enum {string} + */ + TradeIntelMeasure: "containers" | "teus" | "estimated_value"; + /** + * @description Bucket size for a time series. Every period is labelled by its first month, `YYYY-MM`: a quarter starting in April 2026 is `2026-04` and the year 2026 is `2026-01`. + * @default month + * @enum {string} + */ + TradeIntelInterval: "month" | "quarter" | "year"; + /** + * @description A dimension to group or break down by. `pod` is the US port of discharge, `pol` the foreign port of lading, `pod_coast` is `EAST`, `WEST`, or `GULF`, `dest_state` is the destination US state, `company_state` the importer's state, `hs2` and `hs4` are HS chapter and heading codes, and `reefer` splits refrigerated from dry containers. Lane dimensions (`pol`, `pol_country`, `container_type`) can't be combined with company or product dimensions (`company`, `company_state`, `hs4`, `hs2`) in one request, whether as dimensions or filters, and `estimated_value` isn't available by lane dimension; such requests return `400` with the reason. + * @enum {string} + */ + TradeIntelDimension: "carrier" | "scac" | "origin_country" | "origin_region" | "pod" | "pod_coast" | "dest_state" | "reefer" | "pol" | "pol_country" | "container_type" | "company" | "company_state" | "hs4" | "hs2"; + /** @description Filters for `trends` and `breakdown`. Name-like fields match case-insensitive substrings; codes (`hs4`, `hs2`, `pod_coast`, states, `scac`) match exactly. Omit a field to leave it unfiltered. Lane dimensions (`pol`, `pol_country`, `container_type`) can't be combined with company or product dimensions (`company`, `company_state`, `hs4`, `hs2`) in one request, whether as dimensions or filters, and `estimated_value` isn't available by lane dimension; such requests return `400` with the reason. */ + TradeIntelFilters: { + /** + * @description Case-insensitive **substring** match on the company name, so `IKEA` also matches `IKEA SUPPLY AG`. For one company's own figures use `companies/profile`, which matches the exact name. + * @example CATERPILLAR + */ + company?: string | null; + /** + * @description Two-letter US state of the importer; exact match. + * @example IL + */ + company_state?: string | null; + /** + * @description 4-digit HS heading; exact match. Use `commodities/search` to find one. + * @example 0306 + */ + hs4?: string | null; + /** + * @description 2-digit HS chapter; exact match. + * @example 03 + */ + hs2?: string | null; + /** + * @description Substring of the ocean carrier name as it appears on manifests. Carriers appear under spelling variants; prefer `scac` for an exact match. + * @example MAERSK + */ + carrier?: string | null; + /** + * @description Carrier SCAC; exact match. + * @example MAEU + */ + scac?: string | null; + /** + * @description Substring of the origin country as spelled on manifests, for example `china` matches `PEOPLES REP OF CHINA`. + * @example vietnam + */ + origin_country?: string | null; + /** @description Substring of the origin region. */ + origin_region?: string | null; + /** @description Substring of the foreign port of lading. */ + pol?: string | null; + /** @description Substring of the port-of-lading country. */ + pol_country?: string | null; + /** + * @description Substring of the US port of discharge. + * @example savannah + */ + pod?: string | null; + /** + * @description US coast of the port of discharge; exact match. + * @enum {string|null} + */ + pod_coast?: "EAST" | "WEST" | "GULF" | null; + /** + * @description Two-letter destination US state; exact match. + * @example TX + */ + dest_state?: string | null; + /** @description Substring of the container type description. */ + container_type?: string | null; + /** @description Only refrigerated (`true`) or only dry (`false`) containers. */ + reefer?: boolean | null; + }; + /** @description Row counts of the monthly fact tables behind the analytics endpoints. */ + TradeIntelFactRowCounts: { + /** @description Rows in the lane-by-month fact table. */ + lane_month: number; + /** @description Rows in the company-by-month fact table. */ + company_month: number; + /** @description Rows in the commodity-by-month fact table. */ + commodity_month: number; + /** @description Rows in the HS-code-by-lane-by-month fact table. */ + hs_lane_month: number; + }; + /** @description Index window, freshness, and counts. Also returned as `index` by `companies/search`. */ + TradeIntelMeta: { + /** + * @description First day (`YYYY-MM-DD`) of the first month of the 12-full-month window that search results cover. + * @example 2025-10-01 + */ + since_month: string; + /** + * @description First day (`YYYY-MM-DD`) of the month after the last full month in the search window (exclusive). + * @example 2026-10-01 + */ + until_month_exclusive: string; + /** + * @description Number of full months in the search window. + * @example 12 + */ + months: number; + /** + * @description Minimum containers in the window for a company to be in the search index. + * @example 5 + */ + min_containers: number; + /** + * @description Companies in the search index. + * @example 250000 + */ + companies: number; + /** + * @description HS4 codes in the search index. + * @example 1200 + */ + hs_codes: number; + /** + * @description First month of history available to `companies/profile`, `importers/top`, `trends`, and `breakdown`. History starts in January 2022. Formatted as the first day of the month (`YYYY-MM-DD`). + * @example 2022-01-01 + */ + facts_since_month: string; + /** + * @description Day after the date the index was built (`YYYY-MM-DD`, exclusive): the end of the loaded history. + * @example 2026-10-09 + */ + facts_until_exclusive: string; + /** + * @description First day (`YYYY-MM-DD`) of the current calendar month, which is still being loaded and is incomplete. + * @example 2026-10-01 + */ + partial_month: string; + /** + * @description How the index was built: `full` or `incremental`. + * @example incremental + */ + mode: string; + /** @description Fingerprint of the current fact build. It changes whenever the data is refreshed. */ + facts_hash: string; + /** + * @description Start of the period covered by the most recent daily refresh (`YYYY-MM-DD`). + * @example 2026-07-01 + */ + refreshed_since: string; + fact_rows: components["schemas"]["TradeIntelFactRowCounts"]; + /** + * @description Unit of every `containers` figure: physical containers, each counted once. + * @example physical containers: distinct (container_number, imported_on) + */ + volume_measure: string; + /** + * Format: date-time + * @description When the index was built. + * @example 2026-10-08T06:12:44Z + */ + built_at: string; + }; + TradeIntelNamedContainers: { + /** @description Port, country, or carrier name as spelled on manifests. */ + name: string; + /** @description Physical containers. */ + containers: number; + }; + TradeIntelNamedVolume: { + /** @description Port, country, carrier, or state name as spelled on manifests. */ + name: string; + /** @description Physical containers. */ + containers: number; + /** @description Twenty-foot equivalent units. */ + teus: number; + }; + TradeIntelCommodityVolume: { + /** + * @description 4-digit HS heading. + * @example 9401 + */ + hs4: string; + /** @description HS heading description. Descriptions are truncated; check `common_goods` from `commodities/search` before relying on one. */ + description: string; + /** @description Physical containers carrying this heading. */ + containers: number; + /** @description Modelled USD estimate, not declared customs value. */ + estimated_value: number; + }; + /** @description Give `name`, `imports`, or both. With neither, lists the largest importers matching the filters. */ + TradeIntelCompanySearchRequest: { + /** + * @description Company name; partial or misspelled is fine (fuzzy match). Results are ranked by match quality, not size, so a close but small match can outrank a large importer. + * @example home depot + */ + name?: string | null; + /** + * @description What the company imports, in plain words (semantic match). + * @example frozen shrimp + */ + imports?: string | null; + /** + * @description US state code of the importer. + * @example FL + */ + state?: string | null; + /** + * @description Substring of a US port name. + * @example Long Beach + */ + port_of_discharge?: string | null; + /** + * @description Substring of an origin country. + * @example Vietnam + */ + origin_country?: string | null; + /** @description Minimum containers in the index window. */ + min_containers?: number | null; + /** + * @description Maximum results to return. + * @default 10 + */ + limit?: number; + }; + TradeIntelCompanySearchResult: { + /** + * @description Normalized company name. Pass it unchanged to `companies/profile`. + * @example CATERPILLAR + */ + company_name: string; + /** + * @description US state this row covers, or `null` when the row spans all states. + * @example IL + */ + company_state: string | null; + /** @description Physical containers in the index window. */ + containers: number; + /** @description Containers where the company is the consignee. */ + containers_as_consignee: number; + /** @description Containers where the company is the notify party. A share above about 70% usually indicates a logistics provider rather than the cargo owner. */ + containers_as_notify_party: number; + /** @description Twenty-foot equivalent units. */ + teus: number; + /** @description Modelled USD estimate, not declared customs value. */ + estimated_value: number; + /** @description Share of containers that were refrigerated, 0 to 1. */ + reefer_share: number; + /** + * @description First day (`YYYY-MM-DD`) of the first month with volume in the window. + * @example 2025-10-01 + */ + first_month: string; + /** + * @description First day (`YYYY-MM-DD`) of the last month with volume in the window. + * @example 2026-09-01 + */ + last_month: string; + /** @description Top US ports of discharge. */ + top_ports: components["schemas"]["TradeIntelNamedContainers"][]; + /** @description Top origin countries. */ + top_origins: components["schemas"]["TradeIntelNamedContainers"][]; + /** @description Top ocean carriers. */ + top_carriers: components["schemas"]["TradeIntelNamedContainers"][]; + /** @description Top HS4 headings. */ + top_commodities: components["schemas"]["TradeIntelCommodityVolume"][]; + /** @description Match quality; higher is better. Not a measure of size. */ + score: number; + }; + TradeIntelCompanySearchResponse: { + index: components["schemas"]["TradeIntelMeta"]; + /** @description Matches ordered by `score`. */ + results: components["schemas"]["TradeIntelCompanySearchResult"][]; + }; + TradeIntelCompanyProfileRequest: { + /** + * @description Exact `company_name` from `companies/search`. + * @example CATERPILLAR + */ + company_name: string; + /** + * @description Restrict to one state; omit for all states. + * @example IL + */ + company_state?: string | null; + /** + * @description Full calendar months ending last month. Use 24 or more for a year-over-year view. + * @default 12 + */ + months?: number; + }; + TradeIntelCompanyProfileTotals: { + /** @description Physical containers in the period. */ + containers: number; + /** @description Containers where the company is the consignee. */ + containers_as_consignee: number; + /** @description Containers where the company is the notify party. */ + containers_as_notify_party: number; + /** @description Twenty-foot equivalent units. */ + teus: number; + /** @description US states the company's rows are split across, or `null` when none of its rows carries a state. */ + states: string[] | null; + }; + TradeIntelMonthlyVolume: { + /** + * @description Calendar month. + * @example 2026-03 + */ + month: string; + /** @description Physical containers. */ + containers: number; + /** @description Twenty-foot equivalent units. */ + teus: number; + }; + /** @description Import profile for one company. When `found` is `true` the period end (`until`), totals, monthly series, breakdowns, and notes are returned; when it is `false` only `company_name`, `company_state`, `since`, and `found` are. */ + TradeIntelCompanyProfile: { + /** + * @description The requested company name. + * @example CATERPILLAR + */ + company_name: string; + /** @description The requested state, or `null` for all states. */ + company_state: string | null; + /** + * @description First month of the period (inclusive). + * @example 2025-10 + */ + since: string; + /** + * @description Last month of the period (inclusive). Present only when `found` is `true`. + * @example 2026-09 + */ + until?: string; + /** @description `false` when the exact name has no volume in the period. The name must match `companies/search` exactly; a company can also be split across several names. */ + found: boolean; + totals?: components["schemas"]["TradeIntelCompanyProfileTotals"]; + /** @description Volume per month, oldest first. */ + monthly?: components["schemas"]["TradeIntelMonthlyVolume"][]; + /** @description US ports of discharge. */ + ports_of_discharge?: components["schemas"]["TradeIntelNamedVolume"][]; + /** @description Origin countries. */ + origin_countries?: components["schemas"]["TradeIntelNamedVolume"][]; + /** @description Ocean carriers as spelled on manifests. Merge spelling variants before computing shares. */ + carriers?: components["schemas"]["TradeIntelNamedVolume"][]; + /** @description Destination US states. */ + destination_states?: components["schemas"]["TradeIntelNamedVolume"][]; + /** @description HS4 headings with estimated value. */ + commodities_hs4?: components["schemas"]["TradeIntelCommodityVolume"][]; + /** @description Counting caveats that apply to this response, for example that volume is physical containers or that the window includes a partial month. Surface these to end users. */ + notes?: string[]; + }; + TradeIntelCommoditySearchRequest: { + /** + * @description Product description in plain words, or an HS code prefix. + * @example office chairs + */ + query: string; + /** + * @description Maximum results to return. + * @default 10 + */ + limit?: number; + }; + TradeIntelCommoditySearchResult: { + /** + * @description 4-digit HS heading. Pass it to `importers/top` or as an `hs4` filter. + * @example 9401 + */ + hs4: string; + /** @description HS heading description (truncated). */ + description: string; + /** @description 12-month modelled USD import value, not declared customs value. */ + estimated_value: number; + /** @description Companies importing this heading in the index window. */ + companies: number; + /** @description Goods commonly declared under this heading on bills of lading. Use these to confirm the heading covers what you mean; HS 0306, for example, covers all frozen crustaceans, not only shrimp. */ + common_goods: string[]; + /** @description Match quality; higher is better. */ + score: number; + }; + TradeIntelCommoditySearchResponse: { + /** @description Matches ordered by `score`. */ + results: components["schemas"]["TradeIntelCommoditySearchResult"][]; + }; + TradeIntelTopImportersRequest: { + /** + * @description 4-digit HS heading: rank importers of containers carrying it. Any other value returns `400`. Use `commodities/search` to find one. + * @example 0306 + */ + hs4?: string | null; + /** + * @description Substring of a US port name. + * @example savannah + */ + port_of_discharge?: string | null; + /** + * @description Substring of an origin country. + * @example vietnam + */ + origin_country?: string | null; + /** + * @description Full calendar months ending last month. + * @default 12 + */ + months?: number; + /** + * @description Maximum importers to return. + * @default 20 + */ + limit?: number; + }; + TradeIntelTopImporter: { + /** @description Normalized company name; pass it to `companies/search` or `companies/profile`. */ + company_name: string; + /** @description US states the company's volume is split across, or `null` when none of its rows carries a state. */ + states: string[] | null; + /** @description Physical containers matching the filters. */ + containers: number; + /** @description Twenty-foot equivalent units. */ + teus: number; + /** @description Modelled USD estimate when `hs4` was given; `null` otherwise. */ + estimated_value: number | null; + }; + TradeIntelTopImporters: { + /** + * @description First month of the period (inclusive). + * @example 2025-10 + */ + since: string; + /** + * @description Last month of the period (inclusive). + * @example 2026-09 + */ + until: string; + /** + * @description The measure the ranking uses. + * @example containers + */ + ranked_by: string; + /** @description The filters that were applied, keyed by the names the service uses: a `port_of_discharge` request comes back as `pod`. Only filters that were given appear. */ + filters: { + /** @description The four-digit HS heading. */ + hs4?: string; + /** @description The `port_of_discharge` substring. */ + pod?: string; + /** @description The `origin_country` substring. */ + origin_country?: string; + }; + /** @description Counting caveats that apply to this response, for example that volume is physical containers or that the window includes a partial month. Surface these to end users. */ + notes: string[]; + /** @description Importers in descending order. The list does not distinguish forwarders from cargo owners and does not give each company's total volume; use `companies/search` for those. */ + importers: components["schemas"]["TradeIntelTopImporter"][]; + }; + TradeIntelTrendsRequest: { + measure?: components["schemas"]["TradeIntelMeasure"]; + /** @description Split the series by up to two dimensions, keeping the top `top` groups. */ + group_by?: components["schemas"]["TradeIntelDimension"][]; + filters?: components["schemas"]["TradeIntelFilters"]; + interval?: components["schemas"]["TradeIntelInterval"]; + /** + * @description First period, `YYYY-MM` inclusive. Defaults to 23 months before `until`, so the default series covers 24 months; history is available back to January 2022 (`facts_since_month` in `meta`). + * @example 2024-01 + */ + since?: string | null; + /** + * @description Last period, `YYYY-MM` inclusive. Defaults to the current, partial month. + * @example 2026-09 + */ + until?: string | null; + /** + * @description Keep the top N groups by total over the range. + * @default 10 + */ + top?: number; + }; + /** @description One point in the series. When `group_by` is set, each point also carries one property per dimension (for example `origin_country`). */ + TradeIntelTrendPoint: { + /** + * @description First month of the period, `YYYY-MM`, whatever the `interval`: quarters are `2026-01`, `2026-04`, and so on, and years are `2026-01`. + * @example 2026-01 + */ + period: string; + /** @description The measure for this period and group. */ + value: number; + /** @description `true` when the period includes the current, incomplete month. Exclude such periods from comparisons. */ + partial?: boolean; + } & { + [key: string]: unknown; + }; + TradeIntelTrends: { + measure: components["schemas"]["TradeIntelMeasure"]; + interval: components["schemas"]["TradeIntelInterval"]; + /** + * @description First period (inclusive). + * @example 2024-10 + */ + since: string; + /** + * @description Last period (inclusive). + * @example 2026-10 + */ + until: string; + /** @description The dimensions the series is split by. */ + group_by: components["schemas"]["TradeIntelDimension"][]; + filters: components["schemas"]["TradeIntelFilters"]; + /** @description Name of the fact table the series was computed from. */ + fact: string; + /** @description Counting caveats that apply to this response, for example that volume is physical containers or that the window includes a partial month. Surface these to end users. */ + notes: string[]; + /** @description Points ordered by period, then by group. */ + series: components["schemas"]["TradeIntelTrendPoint"][]; + }; + TradeIntelBreakdownRequest: { + /** @description Hierarchy, outermost first, for example `["origin_region", "origin_country", "pod"]` or `["hs2", "hs4"]`. */ + dims: components["schemas"]["TradeIntelDimension"][]; + measure?: components["schemas"]["TradeIntelMeasure"]; + filters?: components["schemas"]["TradeIntelFilters"]; + /** + * @description First month, `YYYY-MM` inclusive. Defaults to 11 months before `until`, so the default range covers 12 months. + * @example 2025-10 + */ + since?: string | null; + /** + * @description Last month, `YYYY-MM` inclusive. Defaults to the current, partial month. + * @example 2026-09 + */ + until?: string | null; + /** + * @description Top N children under each parent. + * @default 10 + */ + top?: number; + }; + /** @description One row of the rollup. Besides `level` and `value`, each row carries one property per dimension down to its level (for example `pod_coast` and `pod`). */ + TradeIntelBreakdownRow: { + /** @description Depth in the hierarchy: `0` is the grand total, `1` a subtotal for the first dimension, and so on. A row at level N carries a property for each of the first N dimensions. */ + level: number; + /** @description The measure for this row. */ + value: number; + } & { + [key: string]: unknown; + }; + TradeIntelBreakdown: { + measure: components["schemas"]["TradeIntelMeasure"]; + /** @description The hierarchy, outermost first. */ + dims: components["schemas"]["TradeIntelDimension"][]; + filters: components["schemas"]["TradeIntelFilters"]; + /** + * @description First month (inclusive). + * @example 2025-10 + */ + since: string; + /** + * @description Last month (inclusive). + * @example 2026-10 + */ + until: string; + /** @description Name of the fact table the rollup was computed from. */ + fact: string; + /** @description Counting caveats that apply to this response, for example that volume is physical containers or that the window includes a partial month. Surface these to end users. */ + notes: string[]; + /** @description Grand total first, then subtotals per level, keeping the top N children under each parent. */ + rows: components["schemas"]["TradeIntelBreakdownRow"][]; + }; + TradeIntelContainerLookupRequest: { + /** + * @description ISO 6346 container number. Spaces and hyphens are removed and letters uppercased before matching. + * @example MSCU1234567 + */ + container_number: string; + }; + /** @description One commodity line from a bill of lading, with the parties on that bill. */ + TradeIntelCommodityLine: { + /** + * Format: date + * @description Import date. + */ + imported_on?: string | null; + /** @description Carrier (master) bill of lading number. */ + master_bill_of_lading_number?: string | null; + /** @description House bill of lading number, when the cargo moved under an NVOCC. */ + house_bill_of_lading_number?: string | null; + /** @description Consignee name as declared on the manifest. */ + consignee?: string | null; + consignee_city?: string | null; + /** @description Two-letter US state. */ + consignee_state?: string | null; + /** @description Notify party as declared on the manifest. */ + notify_party?: string | null; + /** @description Shipper name as declared on the manifest. */ + shipper?: string | null; + shipper_country?: string | null; + /** @description Goods description from the manifest line. */ + commodity_short_description?: string | null; + /** @description 6-digit HS code assigned to the line. */ + commodity_hs_code_6?: string | null; + commodity_hs_code_6_description?: string | null; + /** @description Declared quantity. */ + commodity_quantity?: number | null; + /** @description Unit of the declared quantity. */ + commodity_quantity_uom?: string | null; + /** @description Modelled USD estimate for the line, not declared customs value. */ + commodity_estimated_value?: number | null; + /** @description Weight of the bill of lading in metric tons. */ + bol_metric_tons?: number | null; + /** @description TEUs on the bill of lading. */ + bol_teus?: number | null; + /** @description SCAC of the NVOCC, when one filed the bill. */ + nvocc_scac?: string | null; + /** @description NVOCC name. */ + nvocc_scac_description?: string | null; + }; + /** @description A bill of lading the container travelled under on its most recent US import. */ + TradeIntelContainerBillOfLading: { + /** + * Format: date + * @description Import date. + */ + imported_on?: string | null; + /** @description Carrier (master) bill of lading number. */ + master_bill_of_lading_number?: string | null; + /** @description House bill of lading number, when the cargo moved under an NVOCC. */ + house_bill_of_lading_number?: string | null; + /** @description Ocean carrier SCAC. */ + scac?: string | null; + /** @description Ocean carrier name. */ + scac_name?: string | null; + vessel_name?: string | null; + voyage_number?: string | null; + /** @description Foreign port where the container was loaded. */ + port_of_lading_name?: string | null; + port_of_lading_country?: string | null; + /** @description US port where the container was discharged. */ + port_of_discharge_name?: string | null; + destination_city?: string | null; + /** @description Two-letter US state. */ + destination_state?: string | null; + ultimate_origin_country?: string | null; + /** @description Container type, for example a 40-foot high cube. */ + container_type_short_description?: string | null; + /** @description TEUs of the container. */ + container_teu?: number | null; + /** @description Whether the container is refrigerated. */ + container_reefer_flag?: boolean | null; + }; + TradeIntelContainerLookup: { + /** + * @description The normalized container number that was looked up. + * @example MSCU1234567 + */ + container_number: string; + /** @description `false` when no US import of this container is on record, or the number is malformed. */ + found: boolean; + /** + * @description Only when `found` is `false` because the number is malformed. + * @example expected ISO 6346 format, e.g. MSCU1234567 + */ + error?: string; + /** @description Summary of the container's most recent US import (import date, carrier, vessel, ports, and destination), present when `found` is `true`. */ + latest_import?: { + [key: string]: unknown; + }; + /** @description Bills of lading the container travelled under on that import. */ + bills_of_lading?: components["schemas"]["TradeIntelContainerBillOfLading"][]; + /** @description Commodity lines on those bills, grouped by bill with the highest estimated value first within each bill. At most 200 lines are returned; the cap keeps the first 200 in that order, not the 200 highest-value lines overall. */ + commodities?: components["schemas"]["TradeIntelCommodityLine"][]; + /** @description `true` when more than 200 commodity lines exist and only the first 200 are returned. */ + commodities_truncated?: boolean; + /** + * @description Coverage caveat for this response. + * @example only the most recent US import of this container is on record; earlier imports are not included + */ + note?: string; + }; + TradeIntelBillOfLadingLookupRequest: { + /** + * @description Master (SCAC-prefixed) or house bill of lading number. Spaces and hyphens are removed and letters uppercased before matching. + * @example MEDUW9559867 + */ + bol_number: string; + /** + * @description How many months back to search. + * @default 12 + */ + months?: number; + }; + /** @description A container that moved under the bill of lading. */ + TradeIntelBillOfLadingContainer: { + /** @description ISO 6346 container number. */ + container_number?: string | null; + /** + * Format: date + * @description Import date. + */ + imported_on?: string | null; + /** @description Ocean carrier SCAC. */ + scac?: string | null; + vessel_name?: string | null; + voyage_number?: string | null; + /** @description Foreign port where the container was loaded. */ + port_of_lading_name?: string | null; + /** @description US port where the container was discharged. */ + port_of_discharge_name?: string | null; + destination_city?: string | null; + /** @description Two-letter US state. */ + destination_state?: string | null; + /** @description Container type. */ + container_type_short_description?: string | null; + /** @description TEUs of the container. */ + container_teu?: number | null; + }; + TradeIntelBillOfLadingLookup: { + /** + * @description The normalized bill of lading number that was looked up. + * @example MEDUW9559867 + */ + bol_number: string; + /** @description `false` when no import under this number is on record in the search window. */ + found: boolean; + /** + * Format: date + * @description Start of the search window. + * @example 2025-10-01 + */ + searched_since: string; + /** @description Distinct bill of lading records matched (at most 50). */ + bills_matched?: number; + /** @description `true` when more than 50 records matched and only the most recent 50 are used. */ + bills_truncated?: boolean; + /** @description Containers on the matched bills (at most 200). */ + containers?: components["schemas"]["TradeIntelBillOfLadingContainer"][]; + /** @description `true` when more than 200 containers exist and only the first 200 are returned. */ + containers_truncated?: boolean; + /** @description Commodity lines on the matched bills, grouped by bill with the highest estimated value first within each bill. At most 200 lines are returned; the cap keeps the first 200 in that order, not the 200 highest-value lines overall. */ + commodities?: components["schemas"]["TradeIntelCommodityLine"][]; + /** @description `true` when more than 200 commodity lines exist and only the first 200 are returned. */ + commodities_truncated?: boolean; + }; + }; + responses: { + /** @description Bad Request */ + BadRequest: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "errors": [ + * { + * "status": "400", + * "title": "Bad Request", + * "source": { + * "parameter": "include" + * } + * } + * ] + * } + */ + "application/json": { + errors?: components["schemas"]["error"][]; + }; + }; + }; + /** @description Unauthorized. The API token is missing or invalid, or the account may not perform this action. */ + Unauthorized: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "errors": [ + * { + * "detail": "You are not allowed to perform this action" + * } + * ] + * } + */ + "application/json": { + errors?: components["schemas"]["error"][]; + }; + }; }; /** @description Not Found */ NotFound: { @@ -3649,6 +4613,85 @@ export interface components { }; }; }; + /** @description Bad Request - the request was understood but a value is invalid, for example an `hs4` that is not a 4-digit HS code. */ + TradeIntelBadRequest: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "error": "hs4 must be a 4-digit HS code, e.g. '0306'; use commodities/search to find one" + * } + */ + "application/json": components["schemas"]["TradeIntelError"]; + }; + }; + /** @description Unauthorized - the API key is missing or invalid. */ + TradeIntelUnauthorized: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "error": "Terminal49 API key could not be verified" + * } + */ + "application/json": components["schemas"]["TradeIntelError"]; + }; + }; + /** @description Forbidden - trade intelligence is not enabled for this account. Contact sales@terminal49.com. */ + TradeIntelNotEnabled: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "error": "Trade intelligence is not enabled for this account" + * } + */ + "application/json": components["schemas"]["TradeIntelError"]; + }; + }; + /** @description Unprocessable Entity - either the body failed schema validation (a value out of range, a malformed month, or an unknown enum value), reported in `detail`, or the request would read more data than the query cost cap allows, reported in `error`. Narrow the time window or filters for the second. */ + TradeIntelValidationFailed: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["TradeIntelValidationError"] | components["schemas"]["TradeIntelError"]; + }; + }; + /** @description Too Many Requests - about 120 requests per minute are allowed per account. */ + TradeIntelRateLimited: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "error": "Rate limit exceeded; retry in a minute" + * } + */ + "application/json": components["schemas"]["TradeIntelError"]; + }; + }; + /** @description Bad Gateway or Gateway Timeout - trade intelligence is temporarily unavailable; retry shortly. */ + TradeIntelUnavailable: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "error": "Trade intelligence is temporarily unavailable; try again shortly" + * } + */ + "application/json": components["schemas"]["TradeIntelError"]; + }; + }; }; parameters: never; requestBodies: never; @@ -9185,4 +10228,676 @@ export interface operations { }; }; }; + "get-trade-intel-meta": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "since_month": "2025-10-01", + * "until_month_exclusive": "2026-10-01", + * "months": 12, + * "min_containers": 5, + * "companies": 250000, + * "hs_codes": 1200, + * "facts_since_month": "2022-01-01", + * "facts_until_exclusive": "2026-10-09", + * "partial_month": "2026-10-01", + * "mode": "incremental", + * "facts_hash": "3f9c1a7e", + * "refreshed_since": "2026-07-01", + * "fact_rows": { + * "lane_month": 1200000, + * "company_month": 9800000, + * "commodity_month": 6400000, + * "hs_lane_month": 15000000 + * }, + * "volume_measure": "physical containers: distinct (container_number, imported_on)", + * "built_at": "2026-10-08T06:12:44Z" + * } + */ + "application/json": components["schemas"]["TradeIntelMeta"]; + }; + }; + 400: components["responses"]["TradeIntelBadRequest"]; + 401: components["responses"]["TradeIntelUnauthorized"]; + 403: components["responses"]["TradeIntelNotEnabled"]; + 429: components["responses"]["TradeIntelRateLimited"]; + 502: components["responses"]["TradeIntelUnavailable"]; + 504: components["responses"]["TradeIntelUnavailable"]; + }; + }; + "post-trade-intel-companies-search": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TradeIntelCompanySearchRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "index": { + * "since_month": "2025-10-01", + * "until_month_exclusive": "2026-10-01", + * "months": 12, + * "min_containers": 5, + * "companies": 250000, + * "hs_codes": 1200, + * "facts_since_month": "2022-01-01", + * "facts_until_exclusive": "2026-10-09", + * "partial_month": "2026-10-01", + * "mode": "incremental", + * "facts_hash": "3f9c1a7e", + * "refreshed_since": "2026-07-01", + * "fact_rows": { + * "lane_month": 1200000, + * "company_month": 9800000, + * "commodity_month": 6400000, + * "hs_lane_month": 15000000 + * }, + * "volume_measure": "physical containers: distinct (container_number, imported_on)", + * "built_at": "2026-10-08T06:12:44Z" + * }, + * "results": [ + * { + * "company_name": "EXAMPLE OUTDOOR SUPPLY", + * "company_state": "GA", + * "containers": 1240, + * "containers_as_consignee": 1180, + * "containers_as_notify_party": 60, + * "teus": 2310.5, + * "estimated_value": 48200000, + * "reefer_share": 0, + * "first_month": "2025-10-01", + * "last_month": "2026-09-01", + * "top_ports": [ + * { + * "name": "SAVANNAH", + * "containers": 900 + * } + * ], + * "top_origins": [ + * { + * "name": "VIETNAM", + * "containers": 700 + * } + * ], + * "top_carriers": [ + * { + * "name": "MAERSK LINE", + * "containers": 500 + * } + * ], + * "top_commodities": [ + * { + * "hs4": "9401", + * "description": "Seats (other than barber, dental, etc), and part", + * "estimated_value": 31000000, + * "containers": 800 + * } + * ], + * "score": 0.97 + * } + * ] + * } + */ + "application/json": components["schemas"]["TradeIntelCompanySearchResponse"]; + }; + }; + 400: components["responses"]["TradeIntelBadRequest"]; + 401: components["responses"]["TradeIntelUnauthorized"]; + 403: components["responses"]["TradeIntelNotEnabled"]; + 422: components["responses"]["TradeIntelValidationFailed"]; + 429: components["responses"]["TradeIntelRateLimited"]; + 502: components["responses"]["TradeIntelUnavailable"]; + 504: components["responses"]["TradeIntelUnavailable"]; + }; + }; + "post-trade-intel-companies-profile": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TradeIntelCompanyProfileRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "company_name": "EXAMPLE OUTDOOR SUPPLY", + * "company_state": null, + * "since": "2025-10", + * "until": "2026-09", + * "found": true, + * "totals": { + * "containers": 1240, + * "containers_as_consignee": 1180, + * "containers_as_notify_party": 60, + * "teus": 2310.5, + * "states": [ + * "GA", + * "CA" + * ] + * }, + * "monthly": [ + * { + * "month": "2025-10", + * "containers": 95, + * "teus": 180 + * }, + * { + * "month": "2025-11", + * "containers": 110, + * "teus": 205.5 + * } + * ], + * "ports_of_discharge": [ + * { + * "name": "SAVANNAH", + * "containers": 900, + * "teus": 1700 + * } + * ], + * "origin_countries": [ + * { + * "name": "VIETNAM", + * "containers": 700, + * "teus": 1300 + * } + * ], + * "carriers": [ + * { + * "name": "MAERSK LINE", + * "containers": 500, + * "teus": 950 + * } + * ], + * "destination_states": [ + * { + * "name": "GA", + * "containers": 900, + * "teus": 1700 + * } + * ], + * "commodities_hs4": [ + * { + * "hs4": "9401", + * "description": "Seats (other than barber, dental, etc), and part", + * "containers": 800, + * "estimated_value": 31000000 + * } + * ], + * "notes": [ + * "volume is physical containers, each counted once even when it appears on several bills", + * "the period covers full calendar months ending last month" + * ] + * } + */ + "application/json": components["schemas"]["TradeIntelCompanyProfile"]; + }; + }; + 400: components["responses"]["TradeIntelBadRequest"]; + 401: components["responses"]["TradeIntelUnauthorized"]; + 403: components["responses"]["TradeIntelNotEnabled"]; + 422: components["responses"]["TradeIntelValidationFailed"]; + 429: components["responses"]["TradeIntelRateLimited"]; + 502: components["responses"]["TradeIntelUnavailable"]; + 504: components["responses"]["TradeIntelUnavailable"]; + }; + }; + "post-trade-intel-commodities-search": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TradeIntelCommoditySearchRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "results": [ + * { + * "hs4": "9401", + * "description": "Seats (other than barber, dental, etc), and part", + * "estimated_value": 9800000000, + * "companies": 4200, + * "common_goods": [ + * "office chairs", + * "sofas", + * "car seats" + * ], + * "score": 0.91 + * } + * ] + * } + */ + "application/json": components["schemas"]["TradeIntelCommoditySearchResponse"]; + }; + }; + 400: components["responses"]["TradeIntelBadRequest"]; + 401: components["responses"]["TradeIntelUnauthorized"]; + 403: components["responses"]["TradeIntelNotEnabled"]; + 422: components["responses"]["TradeIntelValidationFailed"]; + 429: components["responses"]["TradeIntelRateLimited"]; + 502: components["responses"]["TradeIntelUnavailable"]; + 504: components["responses"]["TradeIntelUnavailable"]; + }; + }; + "post-trade-intel-importers-top": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TradeIntelTopImportersRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "since": "2025-10", + * "until": "2026-09", + * "ranked_by": "containers", + * "filters": { + * "hs4": "9401" + * }, + * "notes": [ + * "volume is physical containers, each counted once" + * ], + * "importers": [ + * { + * "company_name": "EXAMPLE OUTDOOR SUPPLY", + * "states": [ + * "GA", + * "CA" + * ], + * "containers": 800, + * "teus": 1500, + * "estimated_value": 31000000 + * } + * ] + * } + */ + "application/json": components["schemas"]["TradeIntelTopImporters"]; + }; + }; + 400: components["responses"]["TradeIntelBadRequest"]; + 401: components["responses"]["TradeIntelUnauthorized"]; + 403: components["responses"]["TradeIntelNotEnabled"]; + 422: components["responses"]["TradeIntelValidationFailed"]; + 429: components["responses"]["TradeIntelRateLimited"]; + 502: components["responses"]["TradeIntelUnavailable"]; + 504: components["responses"]["TradeIntelUnavailable"]; + }; + }; + "post-trade-intel-trends": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TradeIntelTrendsRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "measure": "containers", + * "interval": "quarter", + * "since": "2026-01", + * "until": "2026-06", + * "group_by": [ + * "origin_country" + * ], + * "filters": { + * "hs4": "9401" + * }, + * "fact": "hs_lane_month", + * "notes": [ + * "volume is physical containers, each counted once" + * ], + * "series": [ + * { + * "period": "2026-01", + * "origin_country": "VIETNAM", + * "value": 12000 + * }, + * { + * "period": "2026-01", + * "origin_country": "PEOPLES REP OF CHINA", + * "value": 11000 + * }, + * { + * "period": "2026-04", + * "origin_country": "VIETNAM", + * "value": 12500 + * }, + * { + * "period": "2026-04", + * "origin_country": "PEOPLES REP OF CHINA", + * "value": 10800 + * } + * ] + * } + */ + "application/json": components["schemas"]["TradeIntelTrends"]; + }; + }; + 400: components["responses"]["TradeIntelBadRequest"]; + 401: components["responses"]["TradeIntelUnauthorized"]; + 403: components["responses"]["TradeIntelNotEnabled"]; + 422: components["responses"]["TradeIntelValidationFailed"]; + 429: components["responses"]["TradeIntelRateLimited"]; + 502: components["responses"]["TradeIntelUnavailable"]; + 504: components["responses"]["TradeIntelUnavailable"]; + }; + }; + "post-trade-intel-breakdown": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TradeIntelBreakdownRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "measure": "containers", + * "dims": [ + * "pod_coast", + * "pod" + * ], + * "filters": { + * "hs4": "9401" + * }, + * "since": "2026-01", + * "until": "2026-06", + * "fact": "hs_lane_month", + * "notes": [ + * "volume is physical containers, each counted once" + * ], + * "rows": [ + * { + * "level": 0, + * "value": 60000 + * }, + * { + * "level": 1, + * "pod_coast": "WEST", + * "value": 32000 + * }, + * { + * "level": 2, + * "pod_coast": "WEST", + * "pod": "LOS ANGELES", + * "value": 18000 + * }, + * { + * "level": 2, + * "pod_coast": "WEST", + * "pod": "LONG BEACH", + * "value": 14000 + * }, + * { + * "level": 1, + * "pod_coast": "EAST", + * "value": 28000 + * } + * ] + * } + */ + "application/json": components["schemas"]["TradeIntelBreakdown"]; + }; + }; + 400: components["responses"]["TradeIntelBadRequest"]; + 401: components["responses"]["TradeIntelUnauthorized"]; + 403: components["responses"]["TradeIntelNotEnabled"]; + 422: components["responses"]["TradeIntelValidationFailed"]; + 429: components["responses"]["TradeIntelRateLimited"]; + 502: components["responses"]["TradeIntelUnavailable"]; + 504: components["responses"]["TradeIntelUnavailable"]; + }; + }; + "post-trade-intel-containers-lookup": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TradeIntelContainerLookupRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "container_number": "MSCU1234567", + * "found": true, + * "latest_import": { + * "container_number": "MSCU1234567", + * "imported_on": "2026-08-14", + * "scac": "MSCU", + * "vessel_name": "EXAMPLE VESSEL", + * "port_of_discharge_name": "LOS ANGELES" + * }, + * "bills_of_lading": [ + * { + * "imported_on": "2026-08-14", + * "master_bill_of_lading_number": "MEDUW9559867", + * "house_bill_of_lading_number": null, + * "scac": "MSCU", + * "scac_name": "MEDITERRANEAN SHIPPING COMPANY", + * "vessel_name": "EXAMPLE VESSEL", + * "voyage_number": "026N", + * "port_of_lading_name": "NINGBO", + * "port_of_lading_country": "PEOPLES REP OF CHINA", + * "port_of_discharge_name": "LOS ANGELES", + * "destination_city": "ONTARIO", + * "destination_state": "CA", + * "ultimate_origin_country": "PEOPLES REP OF CHINA", + * "container_type_short_description": "40 HC", + * "container_teu": 2, + * "container_reefer_flag": false + * } + * ], + * "commodities": [ + * { + * "imported_on": "2026-08-14", + * "master_bill_of_lading_number": "MEDUW9559867", + * "house_bill_of_lading_number": null, + * "consignee": "EXAMPLE OUTDOOR SUPPLY", + * "consignee_city": "ONTARIO", + * "consignee_state": "CA", + * "notify_party": "EXAMPLE OUTDOOR SUPPLY", + * "shipper": "EXAMPLE FURNITURE CO LTD", + * "shipper_country": "PEOPLES REP OF CHINA", + * "commodity_short_description": "OFFICE CHAIRS", + * "commodity_hs_code_6": "940130", + * "commodity_hs_code_6_description": "Swivel seats with variable height adjustment", + * "commodity_quantity": 420, + * "commodity_quantity_uom": "CTN", + * "commodity_estimated_value": 38000, + * "bol_metric_tons": 8.2, + * "bol_teus": 2, + * "nvocc_scac": null, + * "nvocc_scac_description": null + * } + * ], + * "commodities_truncated": false, + * "note": "only the most recent US import of this container is on record; earlier imports are not included" + * } + */ + "application/json": components["schemas"]["TradeIntelContainerLookup"]; + }; + }; + 400: components["responses"]["TradeIntelBadRequest"]; + 401: components["responses"]["TradeIntelUnauthorized"]; + 403: components["responses"]["TradeIntelNotEnabled"]; + 422: components["responses"]["TradeIntelValidationFailed"]; + 429: components["responses"]["TradeIntelRateLimited"]; + 502: components["responses"]["TradeIntelUnavailable"]; + 504: components["responses"]["TradeIntelUnavailable"]; + }; + }; + "post-trade-intel-bills-of-lading-lookup": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TradeIntelBillOfLadingLookupRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + /** + * @example { + * "bol_number": "MEDUW9559867", + * "found": true, + * "searched_since": "2025-10-01", + * "bills_matched": 1, + * "bills_truncated": false, + * "containers": [ + * { + * "container_number": "MSCU1234567", + * "imported_on": "2026-08-14", + * "scac": "MSCU", + * "vessel_name": "EXAMPLE VESSEL", + * "voyage_number": "026N", + * "port_of_lading_name": "NINGBO", + * "port_of_discharge_name": "LOS ANGELES", + * "destination_city": "ONTARIO", + * "destination_state": "CA", + * "container_type_short_description": "40 HC", + * "container_teu": 2 + * } + * ], + * "containers_truncated": false, + * "commodities": [ + * { + * "imported_on": "2026-08-14", + * "master_bill_of_lading_number": "MEDUW9559867", + * "house_bill_of_lading_number": null, + * "consignee": "EXAMPLE OUTDOOR SUPPLY", + * "consignee_city": "ONTARIO", + * "consignee_state": "CA", + * "notify_party": "EXAMPLE OUTDOOR SUPPLY", + * "shipper": "EXAMPLE FURNITURE CO LTD", + * "shipper_country": "PEOPLES REP OF CHINA", + * "commodity_short_description": "OFFICE CHAIRS", + * "commodity_hs_code_6": "940130", + * "commodity_hs_code_6_description": "Swivel seats with variable height adjustment", + * "commodity_quantity": 420, + * "commodity_quantity_uom": "CTN", + * "commodity_estimated_value": 38000, + * "bol_metric_tons": 8.2, + * "bol_teus": 2, + * "nvocc_scac": null, + * "nvocc_scac_description": null + * } + * ], + * "commodities_truncated": false + * } + */ + "application/json": components["schemas"]["TradeIntelBillOfLadingLookup"]; + }; + }; + 400: components["responses"]["TradeIntelBadRequest"]; + 401: components["responses"]["TradeIntelUnauthorized"]; + 403: components["responses"]["TradeIntelNotEnabled"]; + 422: components["responses"]["TradeIntelValidationFailed"]; + 429: components["responses"]["TradeIntelRateLimited"]; + 502: components["responses"]["TradeIntelUnavailable"]; + 504: components["responses"]["TradeIntelUnavailable"]; + }; + }; } diff --git a/sdks/typescript-sdk/src/smoke.test.ts b/sdks/typescript-sdk/src/smoke.test.ts index d7b463f8e..8e77f0249 100644 --- a/sdks/typescript-sdk/src/smoke.test.ts +++ b/sdks/typescript-sdk/src/smoke.test.ts @@ -3,7 +3,7 @@ import path from 'node:path'; import { fileURLToPath } from 'node:url'; import dotenv from 'dotenv'; import { describe, expect, it } from 'vite-plus/test'; -import { Terminal49Client } from './client.js'; +import { FeatureNotEnabledError, Terminal49Client } from './client.js'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const envCandidates = [ @@ -47,6 +47,23 @@ if (!token || !runSmoke) { expect((result as any)?.data).toBeDefined(); }); + // Trade intelligence is gated per account; a FeatureNotEnabledError means + // the token's account lacks it, which is a valid outcome, not a failure. + it('reads trade intelligence coverage and runs one search', async () => { + try { + const meta = await client.tradeIntel.meta(); + expect(meta.facts_since_month).toMatch(/^\d{4}-\d{2}-01$/); + + const search = await client.tradeIntel.searchCommodities({ + query: 'office chairs', + limit: 2, + }); + expect(Array.isArray(search.results)).toBe(true); + } catch (error) { + if (!(error instanceof FeatureNotEnabledError)) throw error; + } + }); + const inferNumber = process.env.T49_INFER_NUMBER; const itIf = inferNumber ? it : it.skip; diff --git a/sdks/typescript-sdk/src/spec-types.test.ts b/sdks/typescript-sdk/src/spec-types.test.ts index 93cf40c35..37ceb9f04 100644 --- a/sdks/typescript-sdk/src/spec-types.test.ts +++ b/sdks/typescript-sdk/src/spec-types.test.ts @@ -70,6 +70,31 @@ describe('generated spec types', () => { expectTypeOf().toEqualTypeOf(); }); + it('types the trade intelligence nulls and omissions the service sends', () => { + type Schemas = components['schemas']; + type TopImporter = Schemas['TradeIntelTopImporter']; + type RankingFilters = Schemas['TradeIntelTopImporters']['filters']; + type ValidationBody = + components['responses']['TradeIntelValidationFailed']['content']['application/json']; + + expectTypeOf().toEqualTypeOf(); + expectTypeOf().toEqualTypeOf< + number | null + >(); + expectTypeOf< + Schemas['TradeIntelCompanyProfileTotals']['states'] + >().toEqualTypeOf(); + expectTypeOf().toEqualTypeOf< + string | undefined + >(); + expectTypeOf().toEqualTypeOf< + 'hs4' | 'pod' | 'origin_country' + >(); + expectTypeOf<{ + error: 'Query too broad for the cost cap; narrow the time window or filters.'; + }>().toExtend(); + }); + it('types execute as the success body, or undefined for a bodyless success', () => { const run = (transport: Transport) => ({ deleted: transport.execute(() =>