Requisitos previos
Para poder usar la API externa necesitas una cuenta revo retail
y un token de acceso
- Inicia sesión en la cuenta deseada
- Ir a la administración de la cuenta
- Crea un nuevo token
Uso básico
La URL principal para la API externa es
https://revoretail.works/api/external
Y debemos proporcionar las cabezeras obligatorias para la autentificación
username: {account-username}
Authorization: Bearer {token}
Lista genérica de respuesta
Respuesta
{
"current_page" : 1,
"from" : 1,
"last_page" : 2,
"next_page_url" : "https://revoretail.works/api/external/[resource]?page=2",
"path" : "http://revoretail.works/api/external/[resource]",
"per_page" : 50,
"prev_page_url" : null,
"to" : 50,
"total" : 10,
"data": []
}
###Recursos disponibles
Obtener lista de grupos
Devuelve una lista de grupos
Llamada de ejemplo
GET https://revoretail.works/api/external/catalog/groups
[
{
"id": 1,
"name", "Shoes",
"photo" : "",
"order" : 0,
"active" : 1,
"group_id" : 1,
"tax_id" : 1
},
{
"id": 2,
"name", "Pants",
"photo" : "",
"order" : 0,
"active" : 1,
"group_id" : 1,
"tax_id" : 1
}
]
Obtener lista de categorías
Devuelve una lista de categorías, que se pueden filtrar por grupos
Llamada de ejemplo
GET https://revoretail.works/api/external/catalog/categories?group=
[
{
"id": 1,
"name", "Trousers",
"photo" : "",
"order" : 0,
"active" : 1,
"group_id" : 1,
"tax_id" : 1
},
{
"id": 2,
"name", "Shorts",
"photo" : "",
"order" : 0,
"active" : 1,
"group_id" : 1,
"tax_id" : 1
}
]
Obtener lista de productos
Devuelve una lista de productos, que se pueden filtrar por categorías
Llamada de ejemplo
GET https://revoretail.works/api/external/catalog/products?category=
[
{
"id": 1,
"name", "new nike xl",
"reference" : "",
"info" : "",
"shortInfo" : "",
"brand" : "",
"season" : "",
"photo" : "",
"order" : "0",
"active" : "1",
"featured" : "0",
"isOpen" : "0",
"type" : "0",
"price" : "",
"costPrice" : "",
"barcode" : "",
"category_id" : 1,
"tax_id" : 1,
"main_product_id" : null,
"usesStockManagement" : false,
"usesWeight" : false,
"unit_id" : "1"
}, {
"id": 2,
"name", "new nike m"
"reference" : "",
"info" : "",
"shortInfo" : "",
"brand" : "",
"season" : "",
"photo" : "",
"order" : "0",
"active" : "1",
"featured" : "0",
"isOpen" : "0",
"type" : "0",
"price" : "",
"costPrice" : "",
"barcode" : "",
"category_id" : 1,
"tax_id" : 1,
"main_product_id" : null,
"usesStockManagement" : false,
"usesWeight" : false,
"unit_id" : "1" }
]
Si le añadimos el parámetro withStocks
dentro de cada producto veremos un listado de los estocs de este producto en cada almacen.
ej:
[
{
"id": 1,
"name", "new nike xl",
...
"stocks": [{
"id": 1,"warehouse_id": 1, "quantity": 10
},{
"id": 2,"warehouse_id": 3, "quantity": 15
}]
}
]
Variantes
RevoRetail usa variantes para almacenar productos de distintas tallas, colores, etc.
Hay 3 objectos necesarios para representar las variantes.
** 1. Variant Set ** És el tipo de variante, por ejemple, talla o color.
GET https://revoretail.works/api/external/catalog/variantSets
[
{"id": 1, "name": "Color"},
{"id": 1, "name": "Talla"}
]
** 2. Variant ** Son las variantes de cada variantSet, es decir; azul, rojo, amarillo, L, XL, etc.
GET https://revoretail.works/api/external/catalog/variants
[
{
"id": 1,
"name": "Red",
"order": 2,
"variant_set_id": 1,
"color": null
},
{
"id": 2,
"name": "Blue",
"order": 1,
"variant_set_id": 1,
"color": null
},
{
"id": 3,
"name": "L",
"order": 1,
"variant_set_id": 2,
"color": null
},
{
"id": 4,
"name": "XL",
"order": 1,
"variant_set_id": 2,
"color": null
}
]
** 3. Product Variants ** Son las variantes de cada producto.
GET https://revoretail.works/api/external/catalog/productsVariants
[
{
"id": 1,
"product_id": 23,
"variant_1_id": 1,
"variant_2_id": 3
},
{
"id": 2,
"product_id": 23,
"variant_1_id": 2,
"variant_2_id": 3
},
{
"id": 3,
"product_id": 25,
"variant_1_id": 2,
"variant_2_id": 4
},
{
"id": 4,
"product_id": 25,
"variant_1_id": 1,
"variant_2_id": 4
}
]
Obtener lista de impuestos
Devuelve una lista de impuestos disponibles
Llamada de ejemplo
GET https://revoretail.works/api/external/config/taxes
[
{
"id": 1,
"name": "10%",
"taxPercentage": 10.00
},
{
"id": 2,
"name": "21%",
"taxPercentage": 21.00
}
]
Generación del catálogo
Para generar el catálogo podemos crear grupos, categorías asignadas a grupos y productos asignados a categorías. En los tres casos la api permite enviar un diccionario con el objeto a crear (grupo, categoría o producto) o se le puede enviar un listado de diccionarios y así crear varios objectos a la vez. Ej:
POST https://revoretail.works/api/external/catalog/groups
BODY Diccionario:
{
"name": "Group 1",
"active": 1, // Optional, defaults to 1
"tax_id": 1 // Optional, defaults to null
}
BODY Listado de diccionarios:
[
{
"name": "Group 1",
"active": 1, // Optional, defaults to 1
"tax_id": 1 // Optional, defaults to null
}, {
"name": "Group 2"
"active": 1, // Optional, defaults to 1
"tax_id": 1 // Optional, defaults to null
}
]
En cualquiera de los tres casos la respuesta es un JSON 200 con dos campos
{
"success": 1, // Número de objetos creados
"errors": [{"name": "Group 1"}] // Listado de objetos que no han sido procesados correctamente
}
Crear un categoría
Llamada de ejemplo
POST https://revoretail.works/api/external/catalog/categories
{
"name": "Category 1",
"group_id": 1,
"active": 1, // Optional, defaults to 1
"tax_id": 1 // Optional, defaults to null
}
Crear un producto
Llamada de ejemplo
POST https://revoretail.works/api/external/catalog/products
{
"name": "Category 1",
"category_id": 1,
"id": // Optional, defaults autoincrement
"active": 1, // Optional, defaults to 1
"tax_id": 1, // Optional, defaults to null
"reference": "", // Optional
"info": "", // Optional
"shortInfo": "", // Optional
"brand": "", // Optional
"season": "", // Optional
"order": "", // Optional
"featured": "", // Optional
"isOpen": "", // Optional
"price": "", // Optional
"costPrice": "", // Optional
"barcode": "", // Optional
"main_product_id": "", // Optional
"usesStockManagement": "", // Optional
"usesWeight": "", // Optional
"unit_id": 1 // Optional
}
Obtener listado de estocs
Devuelve una lista de los estocs de todos los productos
Llamada de ejemplo
GET https://revoretail.works/api/external/catalog/stocks
[
{
"id": 1,
"item_id": "1",
"warehouse_id": "1",
"quantity": 10.00
},
{
"id": 2,
"item_id": "1",
"warehouse_id": "2",
"quantity": 20.00
},
{
"id": 3,
"item_id": "2",
"warehouse_id": "2",
"quantity": 15.00
}
]
Generar un movimiento de estoc
Podemos generar movimientos de estoc con el siguiente POST (parametros: id de almacén, id de producto y cantidad a mover)
Llamada de ejemplo
POST https://revoretail.works/api/external/stocks/add
{
"product_id": 1,
"warehouse_id": 1,
"quantity": 22.5
}
La respuesta es un JSON 200 con la quantity
actual del estoc en el almacén.
Obtener lista de métodos de pago
Devuelve una lista de métodos de pago disponibles (tarjeta, efectivo, otros...)
Llamada de ejemplo
GET https://revoretail.works/api/external/config/payment_methods
[
{
"id": 1,
"name": "Card",
},
{
"id": 2,
"name": "Cash",
}
]
Crear Orden
Almacenar una orden.
Llamada de ejemplo
POST https://revoretail.works/api/external/orders
{
"notes": "",
"shippingAmount": 0,
"sum": 71.5,
"subtotal": 59.09,
"discount": 17.5,
"orderDiscount": 6.5,
"tax": 1,
"total": 65,
"discountObject": {
"amount": 1.1,
"id": null,
"isPercentage": true,
"name": "Without iva"
},
"customer_id": null,
"shipping_id": null,
"employee_id": 1,
"closed_at": "2017-12-31 13:00:00",
"order_contents": [
{
"name": "Dark shoes XL",
"quantity": 2,
"weight": null,
"price": 27,
"sum": 54,
"discount": 11,
"subtotal": 40,
"tax": 4,
"total": 44,
"taxPercentage": 10,
"discountObject": {
"amount": 1.1,
"id": null,
"isPercentage": false,
"name": "2nd unit 50%"
},
"notes": "",
"margin": 0,
"product_id": 1
}, {
"name": "Red shoes M",
"quantity": 1,
"weight": null,
"price": 27.5,
"sum": 27.5,
"discount": 0,
"subtotal": 25,
"tax": 2.75,
"total": 27.5,
"taxPercentage": 10,
"discountObject": {},
"notes": "",
"margin": 0,
"product_id": 2
}
]
}
Así, el programa devuelve una orden. Como campos relevantes, obtenemos el ID del pedido que se usará para realizar pagos y crear una factura.
{"id": 1, "status": 0, ...}
Crear pagos
Crear pagos con su factura.
Example call
POST https://revoretail.works/api/external/orders/{order_id}/invoices
{
"payments": [
{
"amount": 65,
"change": 0,
"extra": 0,
"payment_method_id": 1
}
]
}
Esta llamada devuelve una factura con la su id, número y sus pagos.
{"id": 1, "number": "E-1", ...}