Productos y Servicios

Listar productos, variantes, cantidades, crear productos.

Un producto puede tener 1 o más variantes. Ej, (Nombre Producto) Poleron Blanco, (Nombre Variantes) Talla L, Talla M, Talla S. La variante se debe crear una vez creado el producto. Para vender un producto/variante creado, se debe indicar en el nodo details del documento.

  • Cómo funciona el Front-end de Bsale, mira éstos videos: (ver)

Estructura JSON

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

{
  "href": "https://api.bsale.cl/v1/products/92.json",
  "id": 92,
  "name": null,
  "description": null,
  "classification": 0,
  "ledgerAccount": null,
  "costCenter": null,
  "allowDecimal": 0,
  "stockControl": 1,
  "printDetailPack": 0,
  "state": 99,
  "prestashopProductId": 0,
  "presashopAttributeId": 0,
  "product_type": {
    "href": "https://api.bsale.cl/v1/product_types/1.json",
    "id": "1"
  },
  "product_taxes": {
    "href": "https://api.bsale.cl/v1/products/92/product_taxes.json"
  }
}
  • href, url del producto (String).
  • id, identificador único del producto (Integer).
  • name, nombre del producto (String).
  • description, descripción del producto (String).
  • classification, indica la clase del producto 0 es producto, 1 es servicio y 3 si es un pack o promocion(Integer).
  • ledgerAccount, cuenta contable del producto (String).
  • costCenter, centro de costo del producto (String).
  • allowDecimal, indica si el producto permite trabajar con decimales, ej, productos pesables. No(0) o Si (1) (Boolean).
  • stockControl, indica si el producto controlara stock No(0) o Si (1) (Boolean).
  • printDetailPack, indica si se muestra el detalle del pack No(0) o Si (1) (Boolean).
  • state, estado del producto activo(0) o inactivo (1) (Boolean).
  • prestashopProductId, identificador del producto en prestashop en el caso de existir la integración.
  • presashopAttributeId, identificador del producto en prestashop en el caso de existir la integración.
  • product_type, nodo que indica la relación con el tipo de producto.
  • product_taxes, nodo que indica los impuestos asociados al producto.

GET lista de productos

  • GET /v1/products.json retornara todos los productos.

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.
  • name, Permite filtrar por nombre del producto.
  • ledgeraccount, filtra por cuenta contable de los productos.
  • costcenter, filtra centro de costo de los productos.
  • producttypeid, filtra por tipo de producto.
  • state, boolean (0 o 1) indica si los productos están activos(0) inactivos (1).

Ejemplos

  • GET /v1/products.json?limit=10&offset=0
  • GET /v1/products.json?fields=[name,ledgeraccount,description]
  • GET /v1/products.json?producttypeid=1
  • GET /v1/products.json?expand=[product_type]
  • GET /v1/products.json?classification=3

Respuesta

{
  "href": "https://api.bsale.cl/v1/products.json",
  "count": 693,
  "limit": 3,
  "offset": 0,
  "items": [
    {
      "href": "https://api.bsale.cl/v1/products/731.json",
      "id": 731,
      "name": "11% Avalúo Fiscal Depto 515,",
      "description": null,
      "classification": 1,
      "ledgerAccount": "",
      "costCenter": "",
      "allowDecimal": 0,
      "stockControl": 0,
      "printDetailPack": 0,
      "state": 0,
      "prestashopProductId": 0,
      "presashopAttributeId": 0,
      "product_type": {
        "href": "https://api.bsale.cl/v1/product_types/1.json",
        "id": "1"
      },
      "product_taxes": {
        "href": "https://api.bsale.cl/v1/products/731/product_taxes.json"
      }
    },
    {
      "href": "https://api.bsale.cl/v1/products/474.json",
      "id": 474,
      "name": "24 clases 3 veces a la semana",
      "description": null,
      "classification": 3,
      "ledgerAccount": "",
      "costCenter": "",
      "allowDecimal": 0,
      "stockControl": 0,
      "printDetailPack": 0,
      "state": 0,
      "prestashopProductId": 0,
      "presashopAttributeId": 0,
      "product_type": {
        "href": "https://api.bsale.cl/v1/product_types/1.json",
        "id": "1"
      },
      "product_taxes": {
        "href": "https://api.bsale.cl/v1/products/474/product_taxes.json"
      }
    },
    {
      "href": "https://api.bsale.cl/v1/products/703.json",
      "id": 703,
      "name": "2x1",
      "description": null,
      "classification": 3,
      "ledgerAccount": null,
      "costCenter": null,
      "allowDecimal": 0,
      "stockControl": 0,
      "printDetailPack": 0,
      "state": 0,
      "prestashopProductId": 0,
      "presashopAttributeId": 0,
      "product_type": {
        "href": "https://api.bsale.cl/v1/product_types/1.json",
        "id": "1"
      },
      "product_taxes": {
        "href": "https://api.bsale.cl/v1/products/703/product_taxes.json"
      }
    }
  ],
  "next": "https://api.bsale.cl/v1/products.json?limit=3&offset=3"
}

GET un producto

  • GET /v1/products/62.json retornara un producto específico.

Parámetros

  • expand, permite expandir instancias y colecciones.

Ejemplos

  • GET /v1/products/150.json?expand=[product_type]

Respuesta

{
  "href": "https://api.bsale.cl/v1/products/150.json",
  "id": 150,
  "name": "polera",
  "description": "",
  "classification": 0,
  "ledgerAccount": "",
  "costCenter": "",
  "allowDecimal": 0,
  "stockControl": 1,
  "printDetailPack": 0,
  "state": 0,
  "prestashopProductId": 0,
  "presashopAttributeId": 0,
  "product_type": {
    "href": "https://api.bsale.cl/v1/product_types/1.json",
    "id": "1"
  },
  "product_taxes": {
    "href": "https://api.bsale.cl/v1/products/150/product_taxes.json"
  }
}

GET variantes de un producto

  • GET /v1/products/62/variants.json
{
  "href": "https://api.bsale.cl/v1/variants.json",
  "count": 3,
  "limit": 25,
  "offset": 0,
  "items": [
    {
      "href": "https://api.bsale.cl/v1/variants/500.json",
      "id": 500,
      "description": "gap",
      "unlimitedStock": 0,
      "allowNegativeStock": 0,
      "state": 0,
      "barCode": "1351176376",
      "code": "1351176376",
      "imagestionCenterCost": 0,
      "imagestionAccount": 0,
      "imagestionConceptCod": 0,
      "imagestionProyectCod": 0,
      "imagestionCategoryCod": 0,
      "imagestionProductId": 0,
      "serialNumber": 0,
      "prestashopCombinationId": 0,
      "prestashopValueId": 0,
      "product": {
        "href": "https://api.bsale.cl/v1/products/150.json",
        "id": "150"
      },
      "attribute_values": {
        "href": "https://api.bsale.cl/v1/variants/500/attribute_values.json"
      },
      "costs": {
        "href": "https://api.bsale.cl/v1/variants/500/costs.json"
      }
    },
    {
      "href": "https://api.bsale.cl/v1/variants/499.json",
      "id": 499,
      "description": "L",
      "unlimitedStock": 0,
      "allowNegativeStock": 0,
      "state": 0,
      "barCode": "1351176361",
      "code": "1351176361",
      "imagestionCenterCost": 0,
      "imagestionAccount": 0,
      "imagestionConceptCod": 0,
      "imagestionProyectCod": 0,
      "imagestionCategoryCod": 0,
      "imagestionProductId": 0,
      "serialNumber": 0,
      "prestashopCombinationId": 0,
      "prestashopValueId": 0,
      "product": {
        "href": "https://api.bsale.cl/v1/products/150.json",
        "id": "150"
      },
      "attribute_values": {
        "href": "https://api.bsale.cl/v1/variants/499/attribute_values.json"
      },
      "costs": {
        "href": "https://api.bsale.cl/v1/variants/499/costs.json"
      }
    },
    {
      "href": "https://api.bsale.cl/v1/variants/498.json",
      "id": 498,
      "description": "verde",
      "unlimitedStock": 0,
      "allowNegativeStock": 0,
      "state": 0,
      "barCode": "1351176256",
      "code": "1351176256",
      "imagestionCenterCost": 0,
      "imagestionAccount": 0,
      "imagestionConceptCod": 0,
      "imagestionProyectCod": 0,
      "imagestionCategoryCod": 0,
      "imagestionProductId": 0,
      "serialNumber": 0,
      "prestashopCombinationId": 0,
      "prestashopValueId": 0,
      "product": {
        "href": "https://api.bsale.cl/v1/products/150.json",
        "id": "150"
      },
      "attribute_values": {
        "href": "https://api.bsale.cl/v1/variants/498/attribute_values.json"
      },
      "costs": {
        "href": "https://api.bsale.cl/v1/variants/498/costs.json"
      }
    }
  ]
}

GET impuestos de un producto

  • GET /v1/products/150/product_taxes.json
{
  "href": "https://api.bsale.cl/v1/products/150/product_taxes.json",
  "count": 2,
  "limit": 25,
  "offset": 0,
  "items": [
    {
      "href": "https://api.bsale.cl/v1/products/150/product_taxes/159.json",
      "id": "159",
      "tax": {
        "href": "https://api.bsale.cl/v1/taxes/1.json",
        "id": "1"
      }
    }
  ]
}

GET impuesto específico de un producto

  • GET /v1/products/150/product_taxes/159.json
{
  "href": "https://api.bsale.cl/v1/products/150/product_taxes/159.json",
    "id": "159",
    "tax": {
        "href": "https://api.bsale.cl/v1/taxes/1.json",
        "id": "1"
    }
}

GET cantidad de productos

  • GET /v1/products/count.json

Parámetros

  • state, permite filtrar por estado, activos (0) inactivos (1).

Respuesta

{
  "count": 53
}

POST un producto

  • POST /v1/products.json

Se debe enviar un Json con la siguiente estructura.

{
  "name": "Calcetines",
  "description": "Multiples colores de calcetines",
  "allowDecimal": 0,
  "ledgerAccount": "Calcetas",
  "costCenter": "23",
  "stockControl": 1,
  "productTypeId": 1
}

Respuesta

{
  "stockControl": 1,
  "name": "Calcetines",
  "ledgerAccount": "Calcetas",
  "href": "https://api.bsale.cl/v1/products/97.json",
  "prestashopProductId": 0,
  "presashopAttributeId": 0,
  "costCenter": "23",
  "printDetailPack": 0,
  "product_type": {
    "href": "https://api.bsale.cl/v1/product_types/1.json",
    "id": "1"
  },
  "classification": 1,
  "description": "Multiples colores de calcetines",
  "id": 97,
  "state": 0,
  "allowDecimal": 0
}

PUT un producto

  • PUT /v1/products/67.json

Se debe enviar un Json con la siguiente esctructura.

{
  "id":"97",
  "name": "Calcetines de Mujer",
}

Respuesta

{
  "stockControl": 1,
  "name": "Calcetines de Mujer",
  "ledgerAccount": "Calcetas",
  "href": "https://api.bsale.cl/v1/products/97.json",
  "prestashopProductId": 0,
  "presashopAttributeId": 0,
  "costCenter": "23",
  "printDetailPack": 0,
  "product_type": {
    "href": "https://api.bsale.cl/v1/product_types/1.json",
    "id": "1"
  },
  "classification": 1,
  "description": "Multiples colores de calcetines",
  "id": 97,
  "state": 0,
  "allowDecimal": 0
}

DELETE un producto virtualmente

  • DELETE /v1/products/97.json cambia el estado del producto.
{
  "href": "https://api.bsale.cl/v1/products/97.json",
  "id": 97,
  "name": "Calcetines",
  "description": "Multiples colores de calcetines",
  "classification": 1,
  "ledgerAccount": "Calcetas",
  "costCenter": "23",
  "allowDecimal": 0,
  "stockControl": 1,
  "printDetailPack": 0,
  "state": 1,
  "prestashopProductId": 0,
  "presashopAttributeId": 0,
  "product_type": {
    "href": "https://api.bsale.cl/v1/product_types/1.json",
    "id": "1"
  }
}