Skip to main content
Version: 📄 MX

Variantes

Listar variante(s), costos, cantidades, crear, editar y eliminar variantes.

Cómo funciona la interfaz de Bsale, mira éstos videos:

  • Creación variantes Ver
info

Una variante sólo puede tener 1 producto "padre", pero 1 producto puede tener 1 o más variantes. Ej, (Nombre Producto) Poleron Blanco, (Nombre Variantes) Talla L, Talla M, Talla S.

El producto debe ser creado antes de crear la variante. Para vender un producto/variante creado, se debe indicar en el nodo details del documento.

Estructura JSON

Al realizar una petición HTTP, el servicio retornara un JSON con la siguiente estructura:

Response /variants/2373.json
{
"href": "https://api.bsale.com.mx/v1/variants/2373.json",
"id": 2373,
"description": "240 ML",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": "1441310864",
"code": "1441310864",
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/656.json",
"id": "656"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2373/attribute_values.json"
},
"costs": {
"href": "https://api.bsale.com.mx/v1/variants/2373/costs.json"
}
}

Atributos

AtributoDescripciónTipo dato
hrefurl del tipo de productoString
ididentificador único del tipo de productoInteger
descriptionnombre de la varianteString
unlimitedStockindica si la variante posee stock ilimitado No(0) o Si (1)Boolean
allowNegativeStockindica si la variante permite stock negativo No(0) o Si (1)Boolean
stateestado de la variante activo(0) o inactivo (1)Boolean
barCodecódigo de barras de la varianteString
codeSKU de la varianteString
imagestionCenterCostcentro de costo imagestionString
imagestionAccountcuenta imagestionString
imagestionConceptCodconcepto imagestionString
imagestionProyectCodproyecto imagestionString
imagestionCategoryCodcategoría imagestionInteger
imagestionProductIdproducto imagestionInteger
serialNumberindica si la variante posee numero de serie No(0) Si(1)Integer
prestashopCombinationIdidentificador en prestashop legacyInteger
prestashopValueIdidentificador en prestashop legacyInteger
productnodo que indica la relación con el producto
attribute_valuesnodo que indica los valores de los atributos del tipo de producto
costsnodo que indica el costo de la variante

GET lista de variantes

  • GET /v1/variants.json retornará todos todas las variantes.

Parámetros

  • limit, limita la cantidad de items de una respuesta JSON, por defecto el limit es 25, el máximo permitido es 50.
  • offset, permite paginar los items de una respuesta JSON, por defecto el offset es 0.
  • fields, solo devolver atributos específicos de un recurso
  • expand, permite expandir instancias y colecciones para traer relaciones en una sola petición.
  • description, Permite filtrar por nombre de la variante.
  • barcode, filtra por código de barra de la variante.
  • code, filtra por código (SKU) de la variante.
  • serialnumber, filtra por numero de serie de la variante.
  • productid, filtra variantes por el id del producto.
  • state, boolean (0 o 1) indica si las variantes están activas(0) o inactivas (1).

Ejemplos

  • GET /v1/variants.json?limit=10&offset=0
  • GET /v1/variants.json?fields=[description,barCode,code]
  • GET /v1/variants.json?state=0
  • GET /v1/variants.json?productid=26
  • GET /v1/variants.json?expand=[product]
Response /variants.json
{
"href": "https://api.bsale.com.mx/v1/variants.json",
"count": 868,
"limit": 3,
"offset": 0,
"items": [
{
"href": "https://api.bsale.com.mx/v1/variants/1548.json",
"id": 1548,
"description": "120 ML",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": "1401291513",
"code": "1401291513",
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/416.json",
"id": "416"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/1548/attribute_values.json"
},
"costs": {
"href": "https://api.bsale.com.mx/v1/variants/1548/costs.json"
}
},
{
"href": "https://api.bsale.com.mx/v1/variants/1555.json",
"id": 1555,
"description": "150 ML",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": "1400786476",
"code": "1400786476",
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/420.json",
"id": "420"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/1555/attribute_values.json"
},
"costs": {
"href": "https://api.bsale.com.mx/v1/variants/1555/costs.json"
}
},
{
"href": "https://api.bsale.com.mx/v1/variants/2101.json",
"id": 2101,
"description": "300 ML",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": "1423687401",
"code": "1423687401",
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/588.json",
"id": "588"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2101/attribute_values.json"
},
"costs": {
"href": "https://api.bsale.com.mx/v1/variants/2101/costs.json"
}
}
],
"next": "https://api.bsale.com.mx/v1/variants.json?limit=3&offset=3"
}

GET una variante

  • GET /v1/variants/2373.json retornará una variante específica.

Parámetros

  • expand, permite expandir instancias y colecciones para traer relaciones en una sola petición.

Ejemplos

  • GET /v1/variants/5730.json?expand=[product]
Response /variants/2373.json
{
"href": "https://api.bsale.com.mx/v1/variants/2373.json",
"id": 2373,
"description": "240 ML",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": "1441310864",
"code": "1441310864",
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/656.json",
"id": "656"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2373/attribute_values.json"
},
"costs": {
"href": "https://api.bsale.com.mx/v1/variants/2373/costs.json"
}
}

GET cantidad de variantes

  • GET /v1/variants/count.json Retornará cantidades de registros.

  • state, boolean (0 o 1) indica si los tipos de productos están activos(0) inactivos (1).

{
"count": 8001
}

GET valores de atributos de una variante

  • GET /v1/variants/5730/attribute_values.json retorna la información almacenada en los atributos de una variante.
{
"href": "https://api.bsale.com.mx/v1/variants/5730/attribute_values.json",
"count": 4,
"limit": 25,
"offset": 0,
"items": [
{
"href": "https://api.bsale.com.mx/v1/variants/5730/attribute_values/34192.json",
"id": 34192,
"description": "Microsoft",
"attribute": {
"href": "https://api.bsale.com.mx/v1/product_types/6/attributes/25.json",
"id": "25"
}
},
{
"href": "https://api.bsale.com.mx/v1/variants/5730/attribute_values/34193.json",
"id": 34193,
"description": "14-09-2010",
"attribute": {
"href": "https://api.bsale.com.mx/v1/product_types/6/attributes/28.json",
"id": "28"
}
},
{
"href": "https://api.bsale.com.mx/v1/variants/5730/attribute_values/34194.json",
"id": 34194,
"description": "Multi idiomas (Región Latinoamerica) ",
"attribute": {
"href": "https://api.bsale.com.mx/v1/product_types/6/attributes/29.json",
"id": "29"
}
},
{
"href": "https://api.bsale.com.mx/v1/variants/5730/attribute_values/34195.json",
"id": 34195,
"description": "365 / 24hrs",
"attribute": {
"href": "https://api.bsale.com.mx/v1/product_types/6/attributes/24.json",
"id": "24"
}
}
]
}

GET un valor de atributo especifico de una variante

  • GET /v1/variants/531/attribute_values/2.json Retornará un atributo asociados a la variante.
Response /variants/531/attribute_values/2.json
{
"href": "https://api.bsale.com.mx/v1/variants/531/attribute_values/2.json",
"id": 2,
"description": "SI",
"attribute": {
"href": "https://api.bsale.com.mx/v1/product_types/8/attributes/12.json",
"id": "12"
}
}

GET costo de una variante

  • GET /v1/variants/2375/costs.json Retornará el costo previamente asignado a la variante.
Response /variants/2375/costs.json
{
"averageCost": "4140.0",
"history": [
{
"reception_detail": {
"href": "https://api.bsale.com.mx/v1/stocks/receptions/2539/details/7734.json",
"id": 7734
},
"admissionDate": 1441238400,
"cost": 4140,
"availableFifo": 1
},
{
"reception_detail": {
"href": "https://api.bsale.com.mx/v1/stocks/receptions/2542/details/7744.json",
"id": 7744
},
"admissionDate": 1441324800,
"cost": 4140,
"availableFifo": 1
}
]
}
  • averageCost, costo promedio de una variante (Float).
  • history, nodo que indica el costo de la variante en cada recepción que ha tenido.
  • reception_detail, no que indica el detalle de recepción de la variante.
  • admissionDate, fecha de recepción (Integer).
  • cost, costo de la variante al momento de la recepción (Float).
  • availableFifo, cantidad disponible de la variante de una recepción específica (Integer).

POST una variante

  • POST /v1/variants.json

Para crear una variante, se debe enviar un JSON con la siguiente estructura:

Ejemplo JSON

Envío

{
"productId": 595,
"description": "Age of empires II",
"unlimitedStock": 1,
"allowNegativeStock" : 1,
"barCode": "70964507073261",
"code": "70964507073261",
"unit": "ZZ",
"tributaryCode": "01010101"
}
  • productId, Id del producto (Integer).
  • description, Nombre de la variante (String)
  • unlimitedStock, Variante posee stock ilimitado No(0) o Si (1) (Boolean)
  • allowNegativeStock, Variante permite stock negativo No(0) o Si (1) (Boolean)
  • barCode, código de barras de la variante (String)
  • code, SKU de la variante (String)
  • unit, Unidad de medida de la variante (String)
  • tributaryCode, Clave producto de la variante (String)
info

Si una variante no envía tributaryCode, por defecto se guardará como clave 01010101 (No existe en el catálogo). Si una variante no envía unit, por defecto se guardará como NIU si es un producto, KT si es servicio y ZZ si pertenece a un pack. Todos los códigos los encontrarás en el catálogo del SAT.

Atributos (opcional)

Si el tipo de producto al que pertenece la variante posee atributos, se deben enviar los valores que estos van a tener, junto con el id del atributo.

{
"productId": 595,
"description": "Age of empires II",
"attribute_values": [
{
"description": "Windows",
"attributeId": 46
},
{
"description": "Estrategia",
"attributeId": 47
}
]
}
  • description, Valor del atributo (String).
  • attributeId, identificador único del atributo esto viene del tipo de producto (Integer).

Respuesta

{
"href": "https://api.bsale.com.mx/v1/variants/2110.json",
"id": 2110,
"description": "Age of empires II",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": 1415381671,
"code": 1415381671,
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/595.json",
"id": "595"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2110/attribute_values.json"
}
}

PUT una variante

  • PUT /v1/variants/2110.json

Se debe enviar un Json con la siguiente estructura:

Ejemplo JSON

Envío

{
"id": 2110,
"productId": 595,
"description": "Age of empires 2",
"attribute_values": [
{
"description": "Windows OS",
"attributeId": 46
},
{
"description": "Estrategia",
"attributeId": 47
}
]
}

Respuesta

{
"href": "https://api.bsale.com.mx/v1/variants/2110.json",
"id": 2110,
"description": "Age of empires 2",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": 1415381671,
"code": 1415381671,
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/595.json",
"id": "595"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2110/attribute_values.json"
}
}

DELETE una variante virtualmente

  • DELETE /v1/variants/2110.json Cambia el estado de la variante
danger

La variante no estará visible mediante interfaz y tendrá un state 1

{
"href": "https://api.bsale.com.mx/v1/variants/2110.json",
"id": 2110,
"description": "Nintendo Wii U Basic Controller",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 1,
"barCode": 1415381671,
"code": 1415381671,
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/595.json",
"id": "595"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2110/attribute_values.json"
}
}