Obtener Token de Autenticación (login API)
Creación de Cargas (Shipment API)
Introducción
El sistema Fleet Rocket ofrece un conjunto de APIs (REST APIs) para la creación automática de cargas en la plataforma.
Esta API permite generar cargas de forma automática, eliminando la necesidad de ingresarlas manualmente desde la interfaz web y facilitando la integración con sistemas externos.
Este documento describe el proceso de integración, que será el mismo tanto para el entorno de demo como para el de producción, con la única diferencia de las credenciales (que serán proporcionadas por el equipo de IT) y las URLs correspondientes a cada entorno.
El proceso de integración se divide en dos fases:
Pruebas en entorno de demo:
Se validará la creación de cargas utilizando credenciales temporales y datos de prueba proporcionados por el equipo de IT.Implementación en producción:
Una vez finalizadas las pruebas de forma satisfactoria, se habilitarán las credenciales definitivas para el entorno productivo.
Cada fase se compone de los siguientes pasos:
Obtención del token de autenticación
El token tiene una duración de 24 horas y es obligatorio para realizar cualquier llamada a la API.Creación de cargas
Se enviarán las solicitudes necesarias para registrar nuevas cargas en el sistema, utilizando la información logística correspondiente.
Obtener Token de Autenticación (login API)
Para ejecutar cualquiera de los endpoints, es necesario autenticarse a través de un Bearer token que se obtiene mediante la API de login.
La autenticación se lleva a cabo mediante la verificación de email y contraseña, que serán proporcionadas por el departamento de sistemas. A través de la autenticación el usuario obtendrá un token que será válido durante 24h. Se debe almacenar este token y sólo generar uno nuevo cuando se retorne un error de token expirado.
Request
- Tipo de petición: POST
- Parameter content type: application/json
-
Body attributes
{ "email": "string", //Obligatorio "force": true, //Obligatorio, valor constante por defecto a true "password": " string", //Obligatorio "role": "API_TRACKING" //Obligatorio, deberá tomar el valor “API_TRACKING” }
Response
{
"expire": 0,
"token": "string",
"user": {
"active": true,
"first_name": "string",
"id": 0,
"image_profile_url": "string",
"last_name": "string",
"mobile_number": "string",
"nick_name": "string",
"player_id": "string",
"roles": [
{
"description": "string",
"name": "string"
}
]
}
}Ejemplo
REQUEST
POST: https://demo.fleetrocket.io/v1/login
Payload del Body (JSON):
{
"email": "fleetrocket@fleetrocket.io",
"force": true,
"password": "1601000#FLeeTRoCKeT",
"role": "API_SHIPMENT"
}RESPONSE
{
"exp": 1729727977,
"token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.JmcjhodWJfd2ViIiwiZXhwIjoxNzI5NzI3OTc3LCJpYXQiOjE3MTUyMTI3NzcsImlzcyI6ImZyOGh1Yl93ZWIiLCJqdGkiOiI5NzYxZDc3Yy01NGIyLTRiNTUtOTFhNS1iMjlkFGFhY2YwY2QiLCJuYmYiOjE3MTUyMTI3NzYsInN1YiI6IjEwNCIsInR5cCI6ImFjY2VzcyJ9.m73ADrBaxu_b-1GsZLYhbSu_X3p_7ekHMZVarhmTLygVn7yIRsMGUGMQmFFRrq3Z22dZ35kJZ9P5CnFM_xVn0g",
"user": {
"active": true,
"email": "fleetrocket@fleetrocket.io",
"first_name": "Alex",
"id": 110,
"image_profile_url": null,
"last_name": "test",
"mobile_number": "5200000000",
"nick_name": null,
"player_id": null,
"roles": [
{
"description": "Shipments creation through API",
"name": "API_SHIPMENT" } ] }
} Webservice login DEMO
- API: https://demo.fleetrocket.io/v1/login
- Credenciales: Proporcionadas por el equipo de IT
Webservice login PROD
- API: https://my.fleetrocket.io/v1/login
- Credenciales: Se proporcionarán tras la validación en entorno de pruebas
Creación de Cargas (Shipment API)
Para la creación de cargas (shipments) en el sistema Fleet Rocket, es necesario utilizar un Bearer Token obtenido previamente mediante el método de login.
Cuando envíes los datos para crear un shipment, hay tres formas posibles de llenar la información de shipment_lane (tanto para la recogida [Pickup] como para la entrega [Dropoff]) y de cada parada (stops)
Al llenar shipment_lane o cada stop, hay tres opciones para indicar dónde se encuentra la carga:
Opción 1 – Con facility ID:
Si tienes el identificador del lugar (facility ID), úsalo.
Opción 2 – Con coordenadas:
Si no tienes facility ID, puedes usar la latitud y longitud del lugar.
Opción 3 – Con dirección:
Si no tienes ni facility ID ni coordenadas, proporciona la dirección completa:
Direccion/Address (opcional)
País/Country
Ciudad/City
Estado/State
También funciona si solo tienes País, Ciudad y Estado.
Request
- Tipo de petición: POST
- Tipo de Authorization: Bearer Token
- Parameter content type: application/json
- Body attributes:
{
"after_hours_follow_up": false, //No obligatorio BOOLEAN
"bol_number": "", //No obligatorio STRING
"copies": 1, //Obligatorio, valor por defecto ‘1’, INTEGER
"currency_code": "", //Obligatorio, valor por defecto “mxn”, podría tomar “usd” STRING
"expected_segments": 1, //No obligatorio INTEGER
"hot": false, //No obligatorio BOOLEAN
"broker_company_id": "", //No obligatorio, por defecto se toma del shipper INTEGER
"invoicing_reference": "", //No obligatorio STRING
"max_price": 1500, //No obligatorio, por defecto toma 0 si no viene relleno en el payload NUMERIC
"pickup_number": "", //No obligatorio STRING
"post_to_marketplace": false, //Obligatorio (si ("shipment_type": "spot" o "primary") y “max_price” > ‘0’, entonces true, sino false) BOOLEAN
"purchase_order_number": "", //No obligatorio STRING
"seal_number": "", //No obligatorio STRING
"shipment_details": {
"additional_equip_dry_van": false, //No obligatorio BOOLEAN
"additional_equip_flatbed": false, //No obligatorio BOOLEAN
"additional_equip_reefer": false, //No obligatorio BOOLEAN
"additional_equip_rabon": false, //No obligatorio BOOLEAN
"additional_equip_torton": false, //No obligatorio BOOLEAN
"air_ride": false, //No obligatorio BOOLEAN
"category": "", //Obligatorio, subcategoría en función del trailer_type:
Si trailer_type = motorcycle => “” o no se envía
Si trailer_type = to_be_defined => “” o no se envía
Si trailer_type = van => “van_small” o “van_standard” o “van_high_roof” o “van_extended”
Si trailer_type = small_truck => “15t_dry” o “15t_fresh” o “35t_dry” o “35t_fresh” o “5t_dry” o “5t_fresh”
Si trailer_type = full => “full_dry” o “full_fresh” o “full_frozen” o “full_flatbed_dry” o “full_flatbed_fresh” o “full_flatbed_frozen” o “full_chassis_dry” o “full_chassis_fresh” o “full_chassis_frozen”
Si trailer_type = container_chassis => “container_chassis_dry” o “container_chassis_fresh” o “container_chassis_frozen”
Si trailer_type = torton => “torton_10_14ft_dry” o “torton_10_14ft_fresh” o “torton_10_14ft_frozen” o “torton_16_20ft_dry” o “torton_16_20ft_fresh” o “torton_16_20ft_frozen” o “torton_22_26ft_dry” o “torton_22_26ft_fresh” o “torton_22_26ft_frozen”
Si trailer_type = rabon => “rabon_16_20ft_dry” o “rabon_16_20ft_fresh” o “rabon_16_20ft_frozen” o “rabon_22_26ft_dry” o “rabon_22_26ft_fresh” o “rabon_22_26ft_frozen” o “rabon_26_30ft_dry” o “rabon_26_30ft_fresh” o “rabon_26_30ft_frozen”
Si trailer_type = dry_van => “ft48” o “ft53”
Si trailer_type = flatbed => “legal” o “step_deck” o “legal_double” o “lowboy”
Si trailer_type = reefer => “fresh” o “frozen” o “controlled” STRING
"description": "", //No obligatorio STRING
"door_type": "", //No obligatorio STRING
"e_track": false, //No obligatorio BOOLEAN
"food_grade": false, //No obligatorio BOOLEAN
"hazmat_class": "", //No obligatorio STRING
"heated": false, //No obligatorio BOOLEAN
"height": "", // No obligatorio, si va vacío tomará el valor por defecto para la categoría del tráiler NUMERIC
"length": "", // No obligatorio, si va vacío tomará el valor por defecto para la categoría del tráiler NUMERIC
"lift_gates": "", //No obligatorio BOOLEAN
"load_value": 100000, //No obligatorio NUMERIC
"note": "", //No obligatorio STRING
"other_requirements": "", //No obligatorio STRING
"pallets": 12, //No obligatorio INTEGER
"panels_material": "", //No obligatorio STRING
"plate_trailer": "", //No obligatorio BOOLEAN
"roof_type": "", //No obligatorio STRING
"screw_in_wood_floors": "", //No obligatorio BOOLEAN
"trailer_type": "", //Obligatorio, posibles valores "dry_van", “flatbed”, “refeer”, “rabon”, “torton”, “container_chassis ”, “full”, “small_truck ”, “van”, “to_be_defined” o “motorcycle” STRING
"tandem": false, //No obligatorio BOOLEAN
"vented": "", //No obligatorio BOOLEAN
"weight": "", // No obligatorio, si va vacío tomará el valor por defecto para la categoría del tráiler NUMERIC
"width": "" // No obligatorio, si va vacío tomará el valor por defecto para la categoría del tráiler NUMERIC
},
"shipment_lane": {
"border_id": 12, //Obligatorio si MX-US, US-MX, CA-US o US-CA, según catálogo INTEGER
"border_id_2": 25, //Obligatorio si MX-CA o CA-MX, según catálogo INTEGER
"dropoff_address": "Priv. San Carlos, Santa Cecilia Tepetlapa, 16880 Ciudad de México, CDMX, Mexico", //No obligatorio, dirección completa en el destino STRING
"dropoff_city": "Ciudad de México", // Obligatoria alguna de las combinaciones de ubicación, ciudad en el destino STRING
"dropoff_consignee": "consignee", // No obligatorio, consignee en el destino STRING
"dropoff_country": "MX", // Obligatoria alguna de las combinaciones de ubicación, país en el destino, solo permite los valores “MX” o “US” o “CA” STRING
"dropoff_postal_code": "16880", //Obligatoria alguna de las combinaciones de ubicación, código postal en el destino STRING
"dropoff_state": "Ciudad de México", //Obligatoria alguna de las combinaciones de ubicación, estado en el destino STRING
"dropoff_instructions": "", //No obligatorio STRING
"dropoff_lat": "19.214829", // Obligatoria alguna de las combinaciones de ubicación, latitud en el destino NUMERIC
"dropoff_long": "-99.0994718", //Obligatoria alguna de las combinaciones de ubicación, longitud en el destino NUMERIC
"dropoff_schedule": "", //No obligatorio STRING
"dropoff_time_from_naive": "2024-05-18 01:44:00", //No obligatorio, fecha y hora de entrega en uso horario del destino (inicio de cita, debe ser mayor que la fecha de fin de cita en recolección) TIMESTAMP
"dropoff_time_to_naive": "2024-05-18 01:44:00", //No obligatorio, fecha y hora de entrega en uso horario del destino (fin de cita, debe ser mayor o igual a inicio de cita) TIMESTAMP
"dropoff_facility_id": , Obligatoria alguna de las combinaciones de ubicación INTEGER
"pickup_facility_id": , Obligatoria alguna de las combinaciones de ubicación INTEGER
"pickup_address": "Priv. San Carlos, Santa Cecilia Tepetlapa, 16880 Ciudad de México, CDMX, Mexico", //No obligatorio, dirección completa en el origen STRING
"pickup_city": "Ciudad de México", // Obligatoria alguna de las combinaciones de ubicación, ciudad en el origen STRING
"pickup_consignor": "", //No obligatorio STRING
"pickup_country": "MX", // Obligatoria alguna de las combinaciones de ubicación, país en el origen, solo permite los valores “MX” o “US” o “CA” STRING
"pickup_postal_code": "16880", //Obligatoria alguna de las combinaciones de ubicación, código postal en el origen STRING
"pickup_state": "Ciudad de México", //Obligatoria alguna de las combinaciones de ubicación, estado en el origen STRING
"pickup_instructions": "", //No obligatorio STRING
"pickup_lat": "", Obligatoria alguna de las combinaciones de ubicación NUMERIC
"pickup_long": "", Obligatoria alguna de las combinaciones de ubicación NUMERIC
"pickup_schedule": "", //No obligatorio STRING
"pickup_time_from_naive"2024-05-10 01:44:00", //Obligatorio, fecha y hora de recolección en uso horario del origen (inicio de cita, debe ser mayor a la fecha actual de ejecución del proceso) TIMESTAMP
"pickup_time_to_naive": "2024-05-10 07:44:00", //Oobligatorio, fecha y hora de recolección en uso horario del origen (fin de cita, debe ser mayor o igual a inicio de cita) TIMESTAMP
},
"stops": [
{
"order": 1, //Obligatorio INTEGER [debe cumplir la secuencia empezando en 1 para todos los objetos]
"consignee_consignor": "", // No obligatorio STRING
"instructions": "", //No obligatorio STRING
"time_from_naive": "2024-05-18 01:44:00", //No obligatorio, fecha y hora de parada en uso horario del lugar de parada (validaciones de fecha contra recolección y entrega) TIMESTAMP
"country": "MX", // Obligatoria alguna de las combinaciones de ubicación, solo permite los valores “MX” o “US” o “CA” STRING
"postal_code": "16880", //Obligatoria alguna de las combinaciones de ubicación STRING
"state": "Ciudad de México", //Obligatoria alguna de las combinaciones de ubicación STRING
"city": "Ciudad de México", // Obligatoria alguna de las combinaciones de ubicación STRING
"address": "Priv. San Carlos, Santa Cecilia Tepetlapa, 16880 Ciudad de México, CDMX, Mexico", //Obligatoria alguna de las combinaciones de ubicación STRING
"lat": "19.214829", // Obligatoria alguna de las combinaciones de ubicación NUMERIC
"long": "-99.0994718", // Obligatoria alguna de las combinaciones de ubicación NUMERIC
"facility_id": , Obligatoria alguna de las combinaciones de ubicación INTEGER
}],
"shipment_type": "", //Obligatorio STRING
"shipper_id": 156, //Obligatorio NUMERIC
"visible_to_shipper": true //Obligatorio por defecto true BOOLEAN
"marketplace_commission": //No obligatorio, tomará el valor del tanto por ciento, por ejemplo “15” NUMERIC
}
Ejemplo
- POST: https://demo.fleetrocket.io/v1/shipment
- Authorization: authorization - Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJmcjhodWJfd2ViIiwiZXhwIjoxNzI5NzI3OTc3LCJpYXQiOjE3MTUyMTI3NzcsImlzcyI6ImZyOGh1Yl93ZWIiLCJqdGkiOiI5NzYxZDc3Yy01NGIyLTRiNTUtOTFhNS1iMjlkFGFhY2YwY2QiLCJuYmYiOjE3MTUyMTI3NzYsInN1YiI6IjEwNCIsInR5cCI6ImFjY2VzcyJ9.m73ADrBaxu_b-1GsZLYhbSu_X3p_7ekHMZVarhmTLygVn7yIRsMGUGMQmFFRrq3Z22dZ35kJZ9P5CnFM_xVn0g
- Payload del Body (JSON):
{
"after_hours_follow_up": true,
"bol_number": "11111",
"copies": 1,
"currency_code": "usd",
"expected_segments": 1,
"hot": true,
"broker_company_id": "fleetrocket_mex",
"invoicing_reference": "22222",
"max_price": 1500,
"pickup_number": "3333",
"post_to_marketplace": true,
"purchase_order_number": "44444",
"seal_number": "5555",
"shipment_details": {
"additional_equip_dry_van": true,
"additional_equip_flatbed": true,
"additional_equip_reefer": true,
"additional_equip_rabon": true,
"additional_equip_torton": true,
"air_ride": true,
"category": "ft48",
"description": "seeeehhh",
"door_type": "any",
"e_track": true,
"food_grade": true,
"hazmat_class": "true",
"heated": true,
"height": 12.50,
"length": 47.00,
"lift_gates": true,
"load_value": 100001,
"note": "hola",
"other_requirements": "nooooo",
"pallets": 15,
"panels_material": "metal",
"plate_trailer": true,
"roof_type": "metal",
"screw_in_wood_floors": true,
"trailer_type": "dry_van",
"tandem": true,
"vented": true,
"weight": 99.00,
"width": 16.80
},
"shipment_lane": {
"dropoff_address": "",
"dropoff_city": "hermosillo",
"dropoff_consignee": "test1",
"dropoff_country": "MX",
"dropoff_postal_code": "",
"dropoff_state": "sonora",
"dropoff_instructions": "sfsfsf",
"dropoff_time_from_naive": "2024-11-08 01:44:00",
"dropoff_time_to_naive": "2024-11-08 01:44:00",
"pickup_facility_id": 250,
"pickup_consignor": "gregrege",
"pickup_instructions": "errrerer",
"pickup_time_from_naive": "2024-11-10 01:44:00",
"pickup_time_to_naive": "2024-11-10 07:44:00"
},
"stops": [
{
"order": 1,
"consignee_consignor": "test1",
"instructions": "sfsfsf",
"time_from_naive": "2024-11-09 01:44:00",
"country": "MX",
"state": "sonora",
"city": "hermosillo",
"postal_code": "58441",
"address": "",
"lat": 19.4548125,
"long": -99.1291875,
"facility_id": 250,
},
{
"order": 2,
"consignee_consignor": "test2",
"instructions": "sfsfsfrtrt",
"time_from_naive": "2024-11-09 08:44:00",
"country": "MX",
"state": "sonora",
"city": "hermosillo",
"postal_code": "58441",
"address": "",
"lat": 19.4548125,
"long": -99.1291875,
"facility_id": 251,
}
],
"shipment_type": "spot",
"shipper_id": 244,
"visible_to_shipper": true,
"marketplace_commission": 15,
}
Webservice shipment DEMO
- API: https://demo.fleetrocket.io/v1/shipment
- Token: Se debe incluir el token obtenido en el login.
Webservice shipment PROD
- API: https://my.fleetrocket.io/v1/shipment
- Token: Se debe incluir el token obtenido en el login.