Documentación API Marketful


Descripción


API Marketful permite al usuario crear, obtener, actualizar y borrar información con respecto a órdenes y productos, a través del uso de request en formato JSON.

Información general:
- Todos los campos en blanco son generalmente comprendidos como null o string vacíos en vez de ser omitidos.
- Las credenciales para ambiente de produccion son otorgradas directamente a cada usuario.

Integracion en ambiente de pruebas:
- Si deseas probar la API en ambiente de pruebas, puedes usar las siguientes credenciales:
"Authorization": "2KENtOBfq1s"
"User": "seller_de_prueba"
"seller_id" : 215


API Versión Updated at
V1 Septiembre 2020

Requerimientos


URL para requests en producción: https://fulfillment.marketful.mx/


Se requieren los siguientes Headers.

Nombre Descripción
Access_token “Authorization”: Access_token,
“User”: user_id
user_id

Estos Headers son las credenciales de acceso unicas para cada usuario.



Métodos

Crear orden multicanal


Método que permite crear una orden multicanal a través de un método post.


Request


POST /shopi_orders/multicanal_api


Ejemplo de la API en Ruby on Rails.

## El seller_id para pruebas es 215, en caso de estar en modo de produccion sustituir por el seller_id correspondiente ##
api_token = api_token
api_user_id = api_user_id
seller_id = 215
contact_info = {
"num_orden" => 123334,
"orden_id" => 234233423,
"customer" => "Charlie Hebdo",
"carrier_name" => "Fedex,
"telefono" => "4497893345",
"calle" => "Madero",
"no_exterior" => "34",
"no_interior" => "",
"colonia" => "Centro",
"ciudad" => "Aguascalientes",
"estado" => "MX - AG",
"codigo_postal" => "20290",
"canal" => "Liverpool",
"tipo_envio" => "economico", ## economico, dia_siguiente
"asegurado" => false
}
items = [
{"sku"=>"MULTI01", "cantidad"=>2},
{"sku"=>"TERMO10", "cantidad"=>3}
]
url_base = 'https://fulfillment.marketful.mx/shopi_orders/multicanal_api'
header = {"Content-Type" => "application/json" , "Accept" =>
"application/json", "Authorization"=> api_token, "User" => api_user_id}
parametros = {
"order"=>{
"contact_info" => contact_info,
"items" => items
}
}
response = HTTParty.post("#{url_base}", :query =>
parametros, :headers =>header)

Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método “POST”
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros "order": { "contact_info": contact_info,
"items": items }

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
num_orden Número único de la orden. Se puede repetir si el Canal de venta es distinto. String
orden_id Número único de la orden por Canal String
customer Nombre del destinatario String
carrier_name La empresa de envio para la orden, se aceptan como valores Fedex, DHL, UPS, Estafeta, Paquetexpress. String
telefono Teléfono del destinatario String
calle Calle del domicilio de entrega String
no_exterior Número exterior del domicilio de entrega String
no_interior Número interior del domicilio de entrega String No
colonia Colonia del domicilio de entrega String
ciudad Ciudad del domicilio de entrega String
estado Estado del domicilio de entrega. Debe tener el formato: MX - AG, MX - BC, etc puede obtener el listado completo de códigos de 2 letras en https://en.wikipedia.org/wi ki/Template:Mexico_State- Abbreviation_Codes String
codigo_postal Código postal del destinatario String
canal Canal de venta (Ej. MercadoLibre, Amazon, etc.) String
tipo_envio El tipo de envio que tendra la orden, se aceptan los valores “económico” y “dia siguiente” String
asegurado Si desea que la guía sea con seguro el campo debera ser true o false en caso contrario. Si no se especifica, será false por default Boolean No

Respuestra esperada de la API


code: 200
body: {"message": "Orden creada correctamente!"}


Manejo de respuestas

Respuesta recibida Caso Tipo
status: 200
body: {"message": "Orden creada correctamente!"}
Operacion completada correctamente. JSON
status: 408
body: { message: "Invalid or incomplete params" }
Si falta algún campo obligatorio o los parametros son invalidos. JSON
status: 408
body: { message: "Order param must be a hash and not be empty" }
Cuando el parametro 'order' es incorrecto . JSON
status: 405
body: { message: "Authentication Failed: User not found." }
Cuando el usuario es incorrecto de acuerdo a las credenciales especificadas. JSON
status: 404
body: { message: "Authentication params must be present" }
Si los Headers son invalidos o no estan presentes. JSON
status: 402
body: {"result"=> 402, "campos_invalidos" => campos_invalidos, "errores" => errores, "message"=> "Invalid Fields/Fields Not Found"}
Cuando uno o más campos son invalidos a lo requerido (Diferente tipo de dato, Null, empty, etc.) JSON
status: 406
body: {"result"=> 406, "campos_invalidos_items" => campos_invalidos_items, "errores_items" => errores_items, "message"=> "Items Not Found"}
Si con los datos proporcionados no fue posible encontrar algun Item de la orden. JSON
status: 410
body: {"orden"=>contact_info["orden_id"], "error"=> "Numero de Pedido ya existe"}
Si el numero unico de Orden ya fue usado en otra Orden anterior. JSON
status: 406
body: { "message": {"result": 406, "campos_invalidos_items": ["sku_item_0", "sku_item_1"], "errores_items": ["SKU MULTI012 no lo tenemos registrado", "SKU TERMO10 no lo tenemos registrado"]} }
Cuando algun SKU no lo tenemos registrado: JSON
status: 407
body: {"message": {"result": 407, "mensaje": " - error No se genero la orden pues ningun item fue valido" } }
Cuando tenemos los items pero hay algun un error interno al guardar los items a la orden (Se borraron en el intermedio de la operacion o algun otro caso similar). JSON
status: 205
body: {"message":{"result": 205,"mensaje": " - orden generada parcialmente"} }
Cuando al menos uno de los items se guarda correctamente pero otros no JSON

Consultar información de una orden específica.


Método que permite consultar toda la información respectiva de una orden a partir de canal y número de orden.


Request


GET /shopi_orders/get_orders



Ejemplo de la API en Ruby on Rails


url_api = “https://fulfillment.marketful.mx/shopi_orders/get_orders”

header = {"Content-Type" => "application/json" , "Accept" => "application/json",
"Authorization"=> api_token, "User" => api_user_id}

parametros = {canal: “Shopify”, orden: “#3616” }

response = HTTParty.get("#{url_api}", :query => parametros, :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método “GET”
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros canal: “canal_de_orden”,
orden: “numero_de_orden”

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
Authorization Clave/Token unico. String
User Clave/Token para identificar al usuario. String
canal El canal de la orden que se desea obtener, ej: “Shopify”, “Marketful”, etc. String
orden El numero de la orden que se quiere obtener. Ej: “2554”, “#1254”, etc. String

Respuestra esperada de la API


{
"message":"Orden encontrada",
"orden":{
"shopify_name":"#1082",
"shopify_created_at":"2020-04-16T16:24:19.000-05:00",
"customer":"Nombre Shipping",
"payment_status":"paid",
"fulfillment_status":"fulfilled_by_seller",
"tracking_number":null,
"carrier_name":null,
"telefono":"4493868618",
"calle":"Av Ezfuerzon nacional",
"noexterior":"916",
"nointerior":null,
"colonia":null,
"ciudad":"Aguascalientes",
"estado":"Aguascalientes",
"codigo_postal":"20199",
"canal":"Shopify",
"tipo_envio":null,
"asegurado":null,
"file_name":null,
"costo_ff":"0.0",
"cargada_a_cuenta":true,
"company":null,
"tracking_interno":"787765",
"correo":"carlos@marketful.mx",
"latitude":null,
"longitude":null,
"cambio_address":false,
"fulfillment_id":null,
"recibido_paqueteria":false,
"guia_prepagada":null,
"verificada":false,
"salida_on_time":null,
"line_items":[
{
"sku":"CARGA2502",
"ean":"1111111111111",
"upc":null,
"title":"Cargador 13",
"fecha_de_salida":null,
"cantidad":1 },
{
"sku":"CALENDAR20",
"ean":null,
"upc":null,
"title":"Calendario",
"fecha_de_salida":null,
"cantidad":1
}
]
}
}

Manejo de respuestas

Respuesta recibida Caso Tipo
status: 200
body: { "message": "Orden encontrada", orden: orden }
Si la orden se encontro regresa la informacion de toda la orden consultada. JSON
status: 405
body: { "message": "Seller not found" }
Cuando el usuario es incorrecto de acuerdo a las credenciales especificadas. JSON
status: 405
body: { "message": "Canal y numero de orden deben existir" }
Si el parametro de 'order' o 'canal' son incorrectos JSON
status: 404
body: { "message": "Invalid Token" }
Si no se envian o falta alguno de los headers. JSON
status: 404
body: { "message": "Orden no encontrada" }
Si la Orden a buscar no fue encontrada. JSON

Crear orden de entrada


Para enviar sus stocks a Marketful, los vendedores deben decirle a Marketful lo que van a enviar al almacén antes de enviarlo. Esta Orden de Entrada le permite a Marketful validar las cantidades recibidas contra lo que se suponía que debía recibirse.


Request


POST /entradas/nueva_entrada_api


Ejemplo de la API en Ruby on Rails


entry_order = {"PAQ-EA"=>0, “BOTLE12”=>50}

url_final = "https://fulfillment.marketful.mx/entradas/nueva_entrada_api"
header = {"Authorization" => Access_token, "User"=>user_id}
parametros = {"entry_order"=>entry_order}
response = HTTParty.post("#{url_final}", :query => parametros, :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método “POST”
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros "entry_order" : entry_order

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
entry_order Objeto que defina cada item que se agregara a la orden de entrada, donde cada Key debe ser el SKU del producto y el Value la cantidad de stock a enviar.
Importante: El Item debe existir para crear la entrada, de no ser asi el request regresara el mensaje de error correspondiente.
objeto
tracking_number Numero de guia de la orden de entrada que estas mandando a Marketful String NO
carrier_name Nombre de la paqueteria de Envio en donde estas enviando la orden de entrada a Marketful. String NO

Respuesta esperada de la API


{
"message": "Succes",
"order_token": "ENTFt2N4GPqqb86yv1_bUw",
"description": "Order created successfully"
}


Manejo de Respuestas

Respuesta recibida Caso Tipo
status: 200
body: { message: "Succes", order_token: description: "Order created successfully",
Success JSON
status: 401
body: { message: "The following items were not found or their inventory is less than or equal to zero", items: items_falsos, }
Algunos items no exiten o el inventario tiene un valor menor a 0
JSON
status: 401
body: { message: "SKU value can't be blank", }
Si al menos un SKU esta en blanco JSON
status: 402
body: { message: "entry_order is null", }
El parametro "entry_orden" no está presente JSON
status: 404
body: { message: "entry_order is null or invalid, must be a hash", }
Cuando el parametro entry_orden tiene formato invalido JSON
status: 403
body: { message: "Parameter 'entry_order' must be present", }
La entrada no se encuentra presente en la orden JSON
status: 400
body: { message: "User Not Found", }
Si alguno de los valores de los { Headers ( Authorization/User) es incorrecto JSON
status: 404
body: { message: "Invalid Authorization", }
Si no se envian o falta alguno de los headers. JSON

Obtener Stock por SKU


Recupera los niveles de stock actuales disponibles para la venta.


Request


GET /items/get_stock


Ejemplo de la API en Ruby on Rails


sku = "PAQ-EA"

url_final = "https://fulfillment.marketful.mx/items/get_stock"
header = {"Authorization" => Access_token, "User"=>user_id}
parametros = {“sku”=>sku}
response = HTTParty.get("#{url_final}", :query => parametros, :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método “GET”
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros "sku" :sku

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
sku Código de identificacion del producto ej. “Bottle234543” String

Respuesta esperada de la API


{
"message": "Succes",
"sku": "PAQ-EA",
"available_quantity": 100
}


Manejo de Respuestas

Respuesta recibida Caso Tipo
status: 200
body: { message: "Succes", sku: item.sku, available_quantity,
Success JSON
status: 401
body: { message: "Item #{sku} not found", }
No se encontro el item
JSON
status: 402
body: { message: "SKU param must be present and must be String", }
Cuando el parámetro “sku” no se está mandando o tiene un formato incorrecto JSON
status: 403
body: { message: "User Not Found", }
Si alguno de los valores de los { Headers ( Authorization/User) es incorrecto JSON
status: 404
body: { message: "Invalid Authorization", }
Si no se envian o falta alguno de los headers. JSON

Obtener Stock por EAN


Recupera los niveles de stock actuales disponibles para la venta.


Request


GET /items/get_stock_ean


Ejemplo de la API en Ruby on Rails


Ejemplo 1

url_final = "https://fulfillment.marketful.mx/items/get_stock_ean"
header = {"Authorization" => Access_token, "User"=>user_id}
parametros = {"ean" => "07852236842"}
response = HTTParty.get("#{url_final}", :query => parametros, :headers =>header)

Ejemplo 2

url_final = "https://fulfillment.marketful.mx/items/get_stock_ean?ean=07852236842"
header = {"Authorization" => Access_token, "User"=>user_id}
response = HTTParty.get("#{url_final}", :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método “GET”
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros "ean": Codigo EAN

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
ean Código EAN del producto ej. "07852236842" String

Respuesta esperada de la API


{
"message": "Succes",
"ean": "07852236842",
"available_quantity": 100
}


Manejo de Respuestas

Respuesta recibida Caso Tipo
status: 200
body: { message: "Succes", ean: EAN, available_quantity: number, item_id: Item ID,
Success JSON
status: 401
body: { message: "Item con EAN '07852236842' no encontrado", }
No se encontro el item
JSON
status: 402
body: { message: "ean must be present and must be String", }
Cuando el parámetro "ean" no se está mandando o tiene un formato incorrecto JSON
status: 403
body: { message: "User Not Found", }
Si alguno de los valores de los { Headers ( Authorization/User) es incorrecto JSON
status: 404
body: { message: "Invalid Authorization", }
Si no se envian o falta alguno de los headers. JSON

Crear item


Permite registrar productos en Marketful y así poder tener un control del inventario de estos productos.
Permite registrar desde múltiples productos en un solo request.


Request


POST /items/create_item


Ejemplo de la API en Ruby on Rails


productos = [ {"title":"Botella 45", "list_price":420, "sku":"BOT45-G"} ,
{"title":"Lapiz 45 Gen", "list_price":120, "sku":"LAPZ-G", "ean"=>"078521452111"}
]

url_final ="https://fulfillment.marketful.mx/items/create_item"
header = { "Authorization" => "Access_token", "User"=>"user_id"}
parametros = {“items”=>productos}
response = HTTParty.post("#{url_final}", :query => parametros, :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método “POST”
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros “items”: productos

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
items Vector de objetos, donde cada objeto incluye los parámetros title, list_price, sku, height, width, lenght, wieght, ean objeto
title Título del producto String
list_price Precio del producto float
sku Código de identificación unico para cada producto, (Sin caracteres especiales ni espacios) String
height altura del producto float No
width anchura del producto float No
length longitud del producto float No
weigth peso del producto float No
ean Codigo EAN del producto String No

Respuesta esperada de la API


{
code: 200
message: Succes
items_saved: Un arreglo con la lista detallada de los productos que se acaban de registrar,
incluye el id del item que se registro. Este id es necesario para realizar otros métodos request
en la API.
}

// Respuesta secundaria
{
code :201
message: The following items were not found or their inventory is less than or equal to zero
items_saved: Un arreglo con la lista detallada de los productos que se acaban de registrar,
incluye el id del item que se registro. Este id es necesario para realizar otros métodos request
en la API.
“item_errors” : Objeto que contiene aquellos productos que pudieron ser guardados
“description”: La razon de porque los productos no pudieron ser guardados.
}

Manejo de Respuestas

Respuesta recibida Caso Tipo
status: 200
body: { message: "Succes", description: "All Items are now registered", items_saved: salida,}
Todos los items fueron guadados con éxito
JSON
status: 201
body: { message: "The following Items could not be saved", items_errors: items_no_save, items_saved: salida,
Cuando algunos items ya existian y no se volvieron a registrar. JSON
status: 201
body: { message: "Not all the items could be saved", items_errors: items_no_save, items_saved: salida,
No fue posible guardar todos los items JSON
status: 401
body: { message: "Incomplete data", description: "No item was saved because the following items have either incorrect data or Incomplete data", items_errors: items_con_error, }
Los datos de los items a crear estan incompletos JSON
status: 402
body: { message: "Parameter 'items' must be present with sku and title", }
Cuando el parámetro “Items” no esta presente o no se encuentran los valores de sku y title JSON
status: 403
body: { message: "User Not Found", }
Si alguno de los valores de los { Headers ( Authorization/User) es incorrecto JSON
status: 404
body: { message: "Invalid Authorization", }
Si no se envian o falta alguno de los headers. JSON

Borrar item


Permite borrar un producto a partir del id del producto, este id se obtiene al momento de crear el producto.


Request


POST /items/delete_item


Ejemplo de la API en Ruby on Rails


url_final = "https://fulfillment.marketful.mx/items/delete_item"
header = {"Content-Type" => "application/json" , "Accept" => "application/json",
"Authorization": Access_token, "User": user_id}
parametros = {"item_id"=> 81971}
response = HTTParty.post("#{url_final}", :query => parametros, :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método “POST”
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros “item_id”: item_id

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
item_id id del producto a eliminar int

Respuesta esperada de la API


{
code: 200
message: Succes
description : “Item 81971 deleted”
}


Manejo de Respuestas

Respuesta recibida Caso Tipo
status: 200
body: { message: "Succes", description: "Item #{item_id} deleted",
Item borrado con éxito JSON
status: 401
body: { message: "Item not found",}
No se encontro el item
JSON
status: 402
body: { message: "item ID must be present and be a number", }
Cuando no se encuentra el parámetro “item_id” JSON
status: 402
body: { message: "item id must be an Integer", }
Si el parámetro “item_id” no es un formato de numero valido JSON
status: 403
body: { message: "User Not Found", }
Si alguno de los valores de los { Headers ( Authorization/User) es incorrecto JSON
status: 404
body: { message: "Invalid Authorization", }
Si no se envian o falta alguno de los headers. JSON
status: 400
body: { message: "ERROR", description: "Item #{item_id} can't be deleted"}
Si no se pudo borrar el item (El item ya fue borrado anteriormente o alguna situacion similar.) JSON

Actualizar item


Método que permite actualizar los atributos de un producto a partir del id del producto, este id se obtiene al momento de crear el producto.


Request


POST /items/update_item


Ejemplo de la API en Ruby on Rails


url_final = "https://fulfillment.marketful.mx/items/update_item"
header = {"Content-Type" => "application/json" , "Accept" => "application/json",
"Authorization": Access_token,"User": user_id}
parametros = {"item_id"=> item_id, "title"=>"Pluma Roja"}
response = HTTParty.post("#{url_final}", :query => parametros, :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método “POST”
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros {"item_id"=> item_id, "title"=>"Pluma Roja", "height"=>12, "width"=> 12, "length"=> 12, "weigth"=> 12, "list_price"=>355, "sku"=>"ABCD12"

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
item_id id del producto a eliminar int
title Título del producto String No
height altura del producto float No
width anchula del producto float No
length longitud del producto float No
weigth peso del producto float No
list_price Precio del producto float No
sku Código de identificación unico del producto (sin caracteres especiales ni espacios) String No
ean Código EAN del producto (sin caracteres especiales ni espacios) String No

Respuesta esperada de la API


{
"message":"Success",
"description":"Item updated",
"items_updated":[
{
"item_id":140730,
"title":"Producto de Prueba 22",
"list_price":"120.0",
"sku":"PRO20PRO",
"available_quantity":0,
"height":null,
"width":null,
"length":null,
"weight":null
}
]
}

Manejo de Respuestas

“Si no se manda ningun parametro para actualizar, el metodo retorna el status 200”


Respuesta recibida Caso Tipo
status: 200
body: { message: "Succes", description: "Item Updated " items_update: salida,
El item se actualizó correctamente JSON
status: 201
body: { message: "Nothing to update",}
Cuando no hay nada para actualizar JSON
status: 400
body: { message: "SKU is already taken on item #{item_repetido}", description: "ERROR"}
No fue posible actualizar el item, el SKU ya esta registrado en otro producto.
JSON
status: 400
body: { message: "SKU Can't be blank",}
Si el nuevo SKU nuevo esta en blanco o null JSON
status: 400
body: { message: "Item not found",}
No se encontro el item JSON
status: 400
body: { message: "Item not found",}
No se encontro el item JSON
status: 405
body:{ message: "Item could not be updated", item_error: errores}
Si no se logro actualizar el item JSON
status: 402
body: { message: "item ID must be present and be a number", }
No se encuentra o no se está mandando el parámetro “item_id” con un formato de numero valido JSON
status: 403
body: { message: "User Not Found", }
Si alguno de los valores de los { Headers ( Authorization/User) es incorrecto JSON
status: 404
body: { message: "Invalid Authorization", }
Si no se envian o falta alguno de los headers. JSON

Consultar Eventos de una Orden


Método que permite consultar todos los eventos de envio relacionadas a una ordes a traves del id de la orden..


Request


GET /shipment_events/get_events


Ejemplo de la API en Ruby on Rails


Ejemplo 1
url_final = "https://fulfillment.marketful.mx/shipment_events/get_events"
header = { "Authorization" => Access_token, "User"=> user_id}
parametros = {"order_id"=>5021}
response = HTTParty.get("#{url_final}", :query => parametros, :headers =>header)

Ejemplo 2
url_final = "https://fulfillment.marketful.mx/shipment_events/get_events?order_id=5021"
header = { "Authorization" => Access_token, "User"=> user_id}
response = HTTParty.get("#{url_final}", :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método GET
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros {"order_id" => 5021}

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
order_id id de la orden int

Respuesta esperada de la API


{

"message":"Success",
"orden":{
"numero_orden":"#1202",
"canal":"Shopify",
"shipment_events":[
{
"id":null,
"event_name":"canceled",
"nota_cliente":"Enviado con otra mensajeria",
"event_time":"2020-09-02T14:55:29.262Z",
"seller":"prueba20junio"
},
{
"id":null,
"event_name":"new",
"nota_cliente":"Nuevo",
"event_time":"2020-09-02T14:53:38.780Z",
"seller":"prueba20junio"
},
{
"id":null,
"event_name":"El paquete llego a la ciudad destino",
"nota_cliente":"El paquete llego a tu ciudad",
"event_time":"2020-09-02T14:52:19.796Z",
"seller":"prueba20junio"
},
{
"id":null,
"event_name":"El paquete llego a la ciudad destino",
"nota_cliente":"El paquete llego a tu ciudad",
"event_time":"2020-09-02T14:49:55.082Z",
"seller":"prueba20junio"
},
{
"id":null,
"event_name":"Se cambio la direccion de la orden Fulfilled",
"nota_cliente":null,
"event_time":"2020-09-02T14:39:00.000Z",
"seller":null
},
{
"id":null,
"event_name":"En traslado a la ciudad de destino",
"nota_cliente":"El envío ya salió de Marketful y está en camino",
"event_time":"2020-09-02T14:38:00.000Z",
"seller":"prueba20junio"
},
{
"id":null,
"event_name":"Pick & Pack",
"nota_cliente":"Ya estamos preparando tu pedido”",
"event_time":"2020-09-02T14:31:00.000Z",
"seller":"prueba20junio"
}
]
} }

Manejo de Respuestas


Respuesta recibida Caso Tipo
status: 200
body: { message: "Succes", orden: objeto
Los eventos de la orden consultada son correctos JSON
status: 404
body:{ message: "Orden no encontrad"}
Si el id de la orden no corresponde a ninguna orden existente. JSON
status: 404
body: { message: "order_id must be present", }
No se encuentra o no se está mandando el parámetro "order_id" con un formato valido JSON
status: 404
body: { message: "Seller Not Found", }
Si las credenciales proporcionads no correspone a un usuario JSON
status: 404
body: { message: "User Not Found", }
Si alguno de los valores de los { Headers ( Authorization/User) es incorrecto JSON
status: 404
body: { message: "Invalid Authorization", }
Si no se envian o falta alguno de los headers. JSON

Consultar Webhooks


Método que permite consultar todos los Webhhoks que tengas registrados.


Request


GET /webhooks/consultar


Ejemplo de la API en Ruby on Rails



url_final = "https://fulfillment.marketful.mx/webhooks/consultar"
header = { "Authorization" => Access_token, "User"=> user_id}
response = HTTParty.get("#{url_final}", :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método GET
Headers “Authorization”: Access_token,
“User”: user_id

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio

Respuesta esperada de la API


{
"message":"Success",
"webhooks":[
{
"id":2,
"seller_id":270,
"active":true,
"url":"https://fulfillment.marketful.mx/prueba_wh",
"tipo":"order/created",
"created_at":"2020-09-30T19:37:53.890Z",
"updated_at":"2020-09-30T19:37:53.890Z"
},
{
"id":4,
"seller_id":270,
"active":true,
"url":"https://fulfillment.marketful.mx/prueba_wh",
"tipo":"shipment_event/created",
"created_at":"2020-09-30T19:38:31.414Z",
"updated_at":"2020-09-30T19:38:31.414Z"
},
{
"id":5,
"seller_id":270,
"active":true,
"url":"https://fulfillment.marketful.mx/prueba_wh",
"tipo":"order/updated",
"created_at":"2020-09-30T19:43:37.295Z",
"updated_at":"2020-09-30T19:43:37.295Z"
}
]
}

Manejo de Respuestas


Respuesta recibida Caso Tipo
status: 200
body: { message: "Succes", webhooks: Listado de los Webhooks
Consulta exitosa de los Webhooks registrados JSON
status: 404
body: { message: "User Not Found", }
Si alguno de los valores de los { Headers ( Authorization/User) es incorrecto JSON
status: 404
body: { message: "Invalid Authorization", }
Si no se envian o falta alguno de los headers. JSON

Crear un Webhook


Método que permite crear Webhooks para creacion de ordenes, actualizacion de ordenes y creacion de Eventos de la orden.


Request


POST /webhooks/crear


Ejemplo de la API en Ruby on Rails


Ejemplo 1
url_final = "https://fulfillment.marketful.mx/webhooks/crear"
header = { "Authorization" => Access_token, "User"=> user_id}
parametros = {"url"=>"www.example.com/notificaciones", "tipo"=>"order/created"}
response = HTTParty.post("#{url_final}", :query => parametros, :headers =>header)

Ejemplo 2
url_final = "https://fulfillment.marketful.mx/webhooks/crear?tipo=order/created&url=www.example.com/notificaciones"
header = { "Authorization" => Access_token, "User"=> user_id}
response = HTTParty.post("#{url_final}", :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método POST
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros {"url"=>"www.example.com/notificaciones", "tipo"=>"order/created"}

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
url Link/URL al que el Webhook mandara la informacion correspondiente. String
tipo Nombre o tipo del Webhook a crear ("order/created", "order/updated", "shipment_event/created") String

Respuesta esperada de la API


{
"message":"Success",
"webhook":{
"id":5,
"url":"https://fulfillment.marketful.mx/prueba_wh",
"seller_id":270,
"active":true,
"tipo":"order/updated",
"created_at":"2020-09-30T14:43:37.295-05:00",
"updated_at":"2020-09-30T14:43:37.295-05:00"
}
}

Manejo de Respuestas


Respuesta recibida Caso Tipo
status: 200
body: { message: "Succes", webhook: Webkook
El Webhook se creo exitosamente JSON
status: 404
body:{ message: "Ya existe un Webhook para order/created"}
Cuando ya existe un Webhook con el mismo tipo/nombre y tiene una URL distinta a la que se esta mandando. En caso de mandar mismo "tipo" y "url" y que ya exista un Webhook con esta informacion, retornara el Webhook existente. JSON
status: 404
body:{ message: "Error al crear Webhook", error: "Explicacion del error"}
Cuando el Webhook no pudo ser creado por algun motivo, sera especificaco en el campo ":error" JSON
status: 404
body:{ message: "Webhook orders/CRATED desconocido/invalido"}
Si el tipo/nombre del webhook no esta dentro de la lista de los Webhooks existentes. JSON
status: 404
body: { message: "Parametros incompletos (url y tipo deben estar presentes", }
Cuando los parametros necesarios para el request ("tipo" y "url") no estan presentes o tienen un formato invalido. JSON
status: 404
body: { message: "User Not Found", }
Si alguno de los valores de los { Headers ( Authorization/User) es incorrecto JSON
status: 404
body: { message: "Invalid Authorization", }
Si no se envian o falta alguno de los headers. JSON

Eliminar un Webhook


Método que permite eliminar un Webhook a traves de su id.


Request


POST /webhooks/eliminar


Ejemplo de la API en Ruby on Rails


Ejemplo 1
url_final = "https://fulfillment.marketful.mx/webhooks/eliminar"
header = { "Authorization" => Access_token, "User"=> user_id}
parametros = {"webhook_id"=>"3"}
response = HTTParty.post("#{url_final}", :query => parametros, :headers =>header)

Ejemplo 2
url_final = "https://fulfillment.marketful.mx/webhooks/eliminar?webhook_id=3"
header = { "Authorization" => Access_token, "User"=> user_id}
response = HTTParty.post("#{url_final}", :headers =>header)


Opciones

Elementos, reglas y excepciones

Nombre Tipo
Método POST
Headers “Authorization”: Access_token,
“User”: user_id
Body/parametros {"webhook_id"=>"3"}

Definición de parámetros

Campo Descripción Tipo de Dato Obligatorio
webhook_id Id del Webhook a eliminar Integer

Respuesta esperada de la API


{
"message":"Success",
}

Manejo de Respuestas


Respuesta recibida Caso Tipo
status: 200
body: { message: "Succes" }
El Webhook se elimino correctamente. JSON
status: 404
body:{ message: "Webhook 4 no encontrado"}
Cuando el webhook_id no coincide con ningun Webhook registrado. JSON
status: 404
body: { message: "Parametro webhook_id no esta presente o esta en un formato invalido", }
Cuando el parametro webhook_id no esta presente o tiene un formato invalido. JSON
status: 404
body: { message: "User Not Found", }
Si alguno de los valores de los { Headers ( Authorization/User) es incorrecto JSON
status: 404
body: { message: "Invalid Authorization", }
Si no se envian o falta alguno de los headers. JSON