Saltar al contenido principal

Endpoints para Producto

En el contexto de nuestra API, un producto representa una entidad fundamental que interactúa con el sistema. Este producto puede ser genérico o variante. Un producto genérico puede tener ciertos productos variantes asociados a él dependiendo de sus características.

Características Comunes del Producto

  1. Identificador único: La entidad Producto consta de un identificador único que sirve para distinguirlo de las demás y referenciarla con facilidad. Además cuenta con un campo idRemote, que hace referencia al id que puede estar almacenado en la base de datos del ERP del cliente.

  2. Datos de Producto: Normalmente, un producto variante tiene información asociada como la compañía, la referencia del producto genérico, observaciones, almacenes, temporada, características y los subconjuntos correspondientes a cada una, la tasa, las imágenes y otros detalles de producto. Si el producto es genérico, el campo referencia del producto será nulo y no tendrá ni características ni almacenes asociados.

  3. Estado y Actividad: Puede haber estados que indican si el producto está activo, inactivo o suspendido temporalmente, dependiendo de las políticas de la plataforma. También, hay otro estado que indica si el producto es genérico o no.

  4. Compañía: Es necesario tener una compañía asociada a cada producto.

  5. Tasa: Debe haber una tasa asociada a cada producto haciendo referencia a la entidad ProductRate.

  6. Característica: Es necesario tener al menos una característica y un valor de subconjunto asociado para poder crear un producto variante. Los productos genéricos no tienen características.

  7. Almacén: Cada producto variante puede estar en uno o más almacenes. Con la información del almacén, se genera también el stock de estas variantes que se inicializa a cero.

  8. Elemento: Cada producto puede estar asociado a uno o más elementos o imágenes.

Importancia en la API

Nuestra API proporciona endpoints específicos para gestionar y manipular productos genéricos y productos variantes dentro del sistema. Estos endpoints permiten operaciones como la creación de productos y tasas de productos, actualización, recuperación de productos variates o genéricos y eliminación de información de producto de manera estructurada y segura.

Endpoints

GET/Product/getProduct

Obtención de una Lista Paginada de Productos del Sistema

Descripción

Este endpoint recupera una lista paginada de productos del sistema. Permite a los clientes obtener datos de productos basados en parámetros de paginación como el número de página (page) y el número de ítems por página (pageSize). La respuesta incluye información detallada sobre cada producto, incluyendo su ID, información de la compañía asociada, referencia, sku, almacenes, si es genérico o no, producto asociado (en el caso de ser variante), detalles de características y los subconjuntos correspondientes a ellas, información de tasa e información de imágenes asociadas.

Parámetros
NombreDescripciónTipoValor Predeterminado
pageNúmero de páginaInteger1
pageSizeNúmero de ítems por páginaInteger10
Respuestas
JSON
  {
"data": [
{
"id": "string",
"idRemote": "string",
"company": {
"id": "string",
"idRemote": "string",
"companyNmae": "string",
"commerciaName": "string",
"tin": "string"
},
"productReference": "string",
"isGeneric": true,
"sku": "string",
"associateProduct": "string",
"observations": "string",
"warehouse": [
{
"id": "string",
"idRemote": "string",
"name": "string"
}
],
"blocked": true,
"characteristics": [
{
"characteristic": "string",
"value": "string"
}
],
"rate": [
{
"id": "string",
"rate": "string",
"price": 0,
"pvp": 0
}
],
"items": [
{
"id": "string",
"idRemote": "string",
"nameImage": "string"
}
],
"active": true
}
],
"pagination": {
"totalItems": 0,
"itemsPerPage": 0,
"currentPage": 0,
"totalPages": 0,
"nextPageUrl": "string"
}
}
XML
  <?xml version="1.0" encoding="UTF-8"?>
<export>
<data>
<item>
<id>string</id>
<idRemote>string</idRemote>
<company>
<id>string</id>
<idRemote>string</idRemote>
<companyNmae>string</companyNmae>
<commerciaName>string</commerciaName>
<tin>string</tin>
</company>
<productReference>string</productReference>
<isGeneric>true</isGeneric>
<sku>string</sku>
<associateProduct>string</associateProduct>
<observations>string</observations>
<warehouse>
<id>string</id>
<idRemote>string</idRemote>
<name>string</name>
</warehouse>
<blocked>true</blocked>
<characteristics>
<characteristic>string</characteristic>
<value>string</value>
</characteristics>
<rate>
<id>string</id>
<rate>string</rate>
<price>0</price>
<pvp>0</pvp>
</rate>
<items>
<id>string</id>
<idRemote>string</idRemote>
<nameImage>string</nameImage>
</items>
<active>true</active>
</item>
</data>
<pagination>
<totalItems>0</totalItems>
<itemsPerPage>0</itemsPerPage>
<currentPage>0</currentPage>
<totalPages>0</totalPages>
<nextPageUrl>string</nextPageUrl>
</pagination>
</export>

👉Prueba este endopint🌱

GET/Product/getVariantProduct

Obtención de una Lista Paginada de Productos Variantes del Sistema

Descripción

Este endpoint recupera una lista paginada de productos variantes del sistema. Permite a los clientes obtener datos de productos variantes basados en parámetros de paginación como el número de página (page) y el número de ítems por página (pageSize). La respuesta incluye información detallada sobre cada producto, incluyendo su ID, información de la compañía asociada, referencia, sku, almacenes, si es genérico o no, producto asociado (en el caso de ser variante), detalles de características y los subconjuntos correspondientes a ellas, información de tasa e información de imágenes asociadas.

Parámetros
NombreDescripciónTipoValor Predeterminado
pageNúmero de páginaInteger1
pageSizeNúmero de ítems por páginaInteger10
Respuestas
JSON
  {
"data": [
{
"id": "string",
"idRemote": "string",
"company": {
"id": "string",
"idRemote": "string",
"companyNmae": "string",
"commerciaName": "string",
"tin": "string"
},
"productReference": "string",
"isGeneric": true,
"sku": "string",
"associateProduct": "string",
"observations": "string",
"warehouse": [
{
"id": "string",
"idRemote": "string",
"name": "string"
}
],
"blocked": true,
"characteristics": [
{
"characteristic": "string",
"value": "string"
}
],
"rate": [
{
"id": "string",
"rate": "string",
"price": 0,
"pvp": 0
}
],
"items": [
{
"id": "string",
"idRemote": "string",
"nameImage": "string"
}
],
"active": true
}
],
"pagination": {
"totalItems": 0,
"itemsPerPage": 0,
"currentPage": 0,
"totalPages": 0,
"nextPageUrl": "string"
}
}
XML
  <?xml version="1.0" encoding="UTF-8"?>
<export>
<data>
<item>
<id>string</id>
<idRemote>string</idRemote>
<company>
<id>string</id>
<idRemote>string</idRemote>
<companyNmae>string</companyNmae>
<commerciaName>string</commerciaName>
<tin>string</tin>
</company>
<productReference>string</productReference>
<isGeneric>true</isGeneric>
<sku>string</sku>
<associateProduct>string</associateProduct>
<observations>string</observations>
<warehouse>
<id>string</id>
<idRemote>string</idRemote>
<name>string</name>
</warehouse>
<blocked>true</blocked>
<characteristics>
<characteristic>string</characteristic>
<value>string</value>
</characteristics>
<rate>
<id>string</id>
<rate>string</rate>
<price>0</price>
<pvp>0</pvp>
</rate>
<items>
<id>string</id>
<idRemote>string</idRemote>
<nameImage>string</nameImage>
</items>
<active>true</active>
</item>
</data>
<pagination>
<totalItems>0</totalItems>
<itemsPerPage>0</itemsPerPage>
<currentPage>0</currentPage>
<totalPages>0</totalPages>
<nextPageUrl>string</nextPageUrl>
</pagination>
</export>

👉Prueba este endopint🌱

GET/Product/updatedFrom

Obtención de Productos desde una fecha de modificación

Descripción

Este endpoint recupera una lista paginada de productos del sistema, desde una fecha de modificación utilizando el parámetro date. Permite a los clientes obtener datos de productos basados en parámetros de paginación como el número de página (page) y el número de ítems por página (pageSize). La respuesta incluye información detallada sobre cada producto, incluyendo su ID, información de la compañía asociada, referencia, sku, almacenes, si es genérico o no, producto asociado (en el caso de ser variante), detalles de características y los subconjuntos correspondientes a ellas, información de tasa e información de imágenes asociadas.

Parámetros
NombreDescripciónTipoValor Predeterminado
updatedFecha de actualizaciónString1999-01-01 01:00:00
pageNúmero de páginaInteger1
pageSizeNúmero de ítems por páginaInteger10
Respuestas
JSON
  {
"data": [
{
"id": "string",
"idRemote": "string",
"company": {
"id": "string",
"idRemote": "string",
"companyNmae": "string",
"commerciaName": "string",
"tin": "string"
},
"productReference": "string",
"isGeneric": true,
"sku": "string",
"associateProduct": "string",
"observations": "string",
"warehouse": [
{
"id": "string",
"idRemote": "string",
"name": "string"
}
],
"blocked": true,
"characteristics": [
{
"characteristic": "string",
"value": "string"
}
],
"rate": [
{
"id": "string",
"rate": "string",
"price": 0,
"pvp": 0
}
],
"items": [
{
"id": "string",
"idRemote": "string",
"nameImage": "string"
}
],
"active": true
}
],
"pagination": {
"totalItems": 0,
"itemsPerPage": 0,
"currentPage": 0,
"totalPages": 0,
"nextPageUrl": "string"
}
}
XML
  <?xml version="1.0" encoding="UTF-8"?>
<export>
<data>
<item>
<id>string</id>
<idRemote>string</idRemote>
<company>
<id>string</id>
<idRemote>string</idRemote>
<companyNmae>string</companyNmae>
<commerciaName>string</commerciaName>
<tin>string</tin>
</company>
<productReference>string</productReference>
<isGeneric>true</isGeneric>
<sku>string</sku>
<associateProduct>string</associateProduct>
<observations>string</observations>
<warehouse>
<id>string</id>
<idRemote>string</idRemote>
<name>string</name>
</warehouse>
<blocked>true</blocked>
<characteristics>
<characteristic>string</characteristic>
<value>string</value>
</characteristics>
<rate>
<id>string</id>
<rate>string</rate>
<price>0</price>
<pvp>0</pvp>
</rate>
<items>
<id>string</id>
<idRemote>string</idRemote>
<nameImage>string</nameImage>
</items>
<active>true</active>
</item>
</data>
<pagination>
<totalItems>0</totalItems>
<itemsPerPage>0</itemsPerPage>
<currentPage>0</currentPage>
<totalPages>0</totalPages>
<nextPageUrl>string</nextPageUrl>
</pagination>
</export>

👉Prueba este endopint🌱

GET/Product/getVariantProduct/byGenericId/{id}

Obtención de una Lista Paginada de Productos Variantes del Sistema dado un ID de un producto genérico

Descripción

Este endpoint recupera una lista paginada de productos variantes del sistema dado un id de un producto genérico. Permite a los clientes obtener datos de productos variantes basados en parámetros de paginación como el número de página (page) y el número de ítems por página (pageSize). La respuesta incluye información detallada sobre cada producto, incluyendo su ID, información de la compañía asociada, referencia, sku, almacenes, si es genérico o no, producto asociado (en el caso de ser variante), detalles de características y los subconjuntos correspondientes a ellas, información de tasa e información de imágenes asociadas.

Parámetros
NombreDescripciónTipoValor Predeterminado
idIdentificador de ProductoStringrequired
pageNúmero de páginaInteger1
pageSizeNúmero de ítems por páginaInteger10
Respuestas
JSON
  {
"data": [
{
"id": "string",
"idRemote": "string",
"company": {
"id": "string",
"idRemote": "string",
"companyNmae": "string",
"commerciaName": "string",
"tin": "string"
},
"productReference": "string",
"isGeneric": true,
"sku": "string",
"associateProduct": "string",
"observations": "string",
"warehouse": [
{
"id": "string",
"idRemote": "string",
"name": "string"
}
],
"blocked": true,
"characteristics": [
{
"characteristic": "string",
"value": "string"
}
],
"rate": [
{
"id": "string",
"rate": "string",
"price": 0,
"pvp": 0
}
],
"items": [
{
"id": "string",
"idRemote": "string",
"nameImage": "string"
}
],
"active": true
}
],
"pagination": {
"totalItems": 0,
"itemsPerPage": 0,
"currentPage": 0,
"totalPages": 0,
"nextPageUrl": "string"
}
}
XML
  <?xml version="1.0" encoding="UTF-8"?>
<export>
<data>
<item>
<id>string</id>
<idRemote>string</idRemote>
<company>
<id>string</id>
<idRemote>string</idRemote>
<companyNmae>string</companyNmae>
<commerciaName>string</commerciaName>
<tin>string</tin>
</company>
<productReference>string</productReference>
<isGeneric>true</isGeneric>
<sku>string</sku>
<associateProduct>string</associateProduct>
<observations>string</observations>
<warehouse>
<id>string</id>
<idRemote>string</idRemote>
<name>string</name>
</warehouse>
<blocked>true</blocked>
<characteristics>
<characteristic>string</characteristic>
<value>string</value>
</characteristics>
<rate>
<id>string</id>
<rate>string</rate>
<price>0</price>
<pvp>0</pvp>
</rate>
<items>
<id>string</id>
<idRemote>string</idRemote>
<nameImage>string</nameImage>
</items>
<active>true</active>
</item>
</data>
<pagination>
<totalItems>0</totalItems>
<itemsPerPage>0</itemsPerPage>
<currentPage>0</currentPage>
<totalPages>0</totalPages>
<nextPageUrl>string</nextPageUrl>
</pagination>
</export>

👉Prueba este endopint🌱

POST/Product/createGenericProduct

Registro de Productos Genéricos en la API: Uso del Método POST

Actualmente, nuestro método POST en la API está diseñado para manejar exclusivamente el formato JSON. Para registrar productos de manera efectiva, es crucial seguir un proceso que garantice la integridad de los datos y la funcionalidad adecuada del sistema.

Proceso de Registro:
  1. Creación de Compañía: Antes de registrar un prodcuto, es necesario asegurarse de que exista una Compañía asociada. Esto es importante ya que los usuarios pueden tener varias compañías. 👉Registrar Compañía🌱

  2. Creación de Elemento: Antes de asociar una imagen a un producto, es necesario asegurarse de que exista un elemento asociado. Este paso es opcional ya que el parámetro itemId no es requerido. Un producto genérico puede tener una imagen asociada o no tenerla. 👉Registrar Elemento🌱

  3. Incluir idiomas para el producto El nuevo producto puede incluir especificaciones de idioma. El idioma influye en cómo se traducen los productos en el contexto del B2B. Para que la creación del porducto con idiomas sea exitosa, debe adjuntar un idioma ya existente en el sistema, y proveer el título y descripción en el idioma correspondiente. Por ejemplo, si desea incluir traducciones en español, debe seleccionar el id correspondiente con el idioma español y adjuntar el título y descripción del nuevo producto en español. Es posible agregar varias traducciones del nuevo producto en el momento de la ejecución de este endpoint. El parámetro languages es opcional por lo que podemos crear un producto sin incluir idiomas.

En el parámetro languageId puedes adjuntar el id o el iso del Idioma que quieres relacionar con el nuevo producto, eligiendo el que más cómodo le parezca.

👉Ver idiomas disponibles🌱

Parámetros obligatorios.

Puedes crear un producto sin incluir traducciones o imágenes. No obstante debes tener en cuenta los siguientes parámetros obligatorios:

NombreDescripciónTipo
idRemoteIdentificador del nuevo Producto GenéricoString
companyIdIdentificador de la Compañía relacionada con el nuevo Producto GenéricoString
referenceReferencia del nuevo Producto GenéricoString
observationsObservaciones. Deben incluirse en el cuerpo, pero pueden incluirse vacíasString
activeDetermina si el Producto está activo o noString

El cuerpo de la solicitud debe seguir el siguiente esquema:

[
{
"idRemote": "string",
"companyId": "string",
"reference": "string",
"observations": "string",
"languages": [
{
"languageId": "string",
"productTitle": "string",
"productDescription": "string"
}
],
"itemId": "string",
"active": true
}
]

Es posible añadir varios productos a través de la misma solicitud separándolos con comas dentro del array en el cuerpo de la solicitud.

Respuestas

Con el fin de no saturar al servidor, este endpoint envía un mensaje a un consumidor encargado de procesar la petición. Para comprobar el estado de la solicitud enviada es necesario acceder a la url adjunta en la respuesta. Una respuesta correctamente enviada al consumidor debe parecerse a esta:

{
"code": 201,
"message": "Generic Product message created successfully and dispatched to the queue.",
"statusUrl": "http://host/api/database/v1/message/status/66bf382938941"
}

El campo statusUrl nos redirige a una respuesta más detallada sobre el estado de la petición. Una solicitud correctamente procesada por el consumidor tiene el siguiente aspecto:

{
"data": [
{
"status": "completed",
"errorMessage": null
}
],
"pagination": {
"totalItems": 1,
"itemsPerPage": 10,
"currentPage": 1,
"totalPages": 1,
"nextPageUrl": null
}
}

En caso de producirse cualquier error durante el procesado del mensaje, la respuesta tendrá un aspecto similar a este:

{
"code": 400,
"error": "Invalid generic product data format, a required parameter is missing"
}

👉Prueba este endopint🌱

POST/Product/createVariantProduct

Registro de Productos Variantes en la API: Uso del Método POST

Actualmente, nuestro método POST en la API está diseñado para manejar exclusivamente el formato JSON. Para registrar productos de manera efectiva, es crucial seguir un proceso que garantice la integridad de los datos y la funcionalidad adecuada del sistema.

Proceso de Registro:
  1. Creación de Producto Genérico: Antes de registrar un prodcuto variante, es necesario asegurarse de que exista un Producto Genérico asociado. Esto es importante ya que una variante no puede existir si no hay un genérico. 👉Registrar Producto🌱

  2. Creación de Característica: Antes de registrar un producto, es necesario asegurarse de que exista una característica asociada. Para que la creación del porducto sea exitosa, debe adjuntar una característica ya existente en el sistema, y proveer el valor de subconjunto correspondiente. 👉Registrar Característica🌱

  3. Creación de Valor de Subconjunto de Característica: Antes de registrar un producto, es necesario asegurarse de que exista un valor de subconjunto de característica asociado. Para que la creación del porducto sea exitosa, debe adjuntar un valor de subconjunto de característica ya existente en el sistema, y proveer su característica correspondiente. 👉Registrar Valor de Subconjunto de Característica🌱

  4. Incluir idiomas para el producto El nuevo producto puede incluir especificaciones de idioma. El idioma influye en cómo se traducen los productos en el contexto del B2B. Para que la creación del porducto con idiaomas sea exitosa, debe adjuntar un idioma ya existente en el sistema, y proveer el título y descripción en el idioma correspondiente. Por ejemplo, si desea incluir traducciones en español, debe seleccionar el id correspondiente con el idioma español y adjuntar el título y descripción del nuevo producto en español. Es posible agregar varias traducciones del nuevo producto en el momento de la ejecución de este endpoint. El parámetro languages es opcional por lo que podemos crear un producto sin incluir idiomas. Si al producto variante no le asociamos ningún idioma, se asociarán por defecto los del producto genérico si tiene, sino no tendrá idiomas asociados. 👉Ver idiomas disponibles🌱

  5. Creación de Almacén: Para poder registrar un producto necesitamos saber en que almacén se encuentra. Así, en el momento en el que se crea el producto variante, se creará también el stock correspondiente a este producto. En el Stock relacionamos el producto variante con el almacén en el que se encuentra y la cantidad comienza en cero ya que luego se pueden hacer las modificaciones necesarias en el stock de cada producto. Es posible agregar varios almacenes pasando un idRemote. 👉Registrar Almacén🌱

  6. Creación de Elemento: Antes de asociar una imagen a un producto, es necesario asegurarse de que exista un elemento asociado. Este paso es opcional ya que el parámetro items no es requerido. Un producto genérico puede tener una imagen asociada o no tenerla. Es posible agregar varios elementos pasando un itemId. 👉Registrar Elemento🌱

  7. Creación de Temporada: Puede adjuntar una referencia correcta a una Temporada a través del parámetro seasonId, este parámetro es opcional. Puede encontrar información sobre como obtener las Temporadas existentes, o como registrar una nueva Temporada en el sistema a través de este enlace. 👉Crear una Temporada🌱

  8. Creación de Tasa: Antes de asociar una tasa de producto al producto variante, es necesario asegurarse de que exista una tasa asociada. Este paso es opcional ya que el parámetro rate no es requerido. Un producto genérico puede tener una tasa de producto asociada o no. Es posible agregar varias tasas de producto pasando los parámetros idRemote, rateId, price y pvp. 👉Registrar Tasa🌱

Parámetros obligatorios.

Puedes crear un producto sin incluir traducciones o imágenes. No obstante debes tener en cuenta los siguientes parámetros obligatorios:

NombreDescripciónTipo
idRemoteIdentificador del nuevo Producto VarianteString
productGenericIdIdentificador del Producto Genérico relacionado con la nueva VarianteString
referenceReferencia del nuevo Producto VarianteString
warehousesAlmacenes en los cuales está disponible la nueva VarianteArray
blockedDetermina si la nueva Variante está bloqueada o noBoolean
characteristicsCaracterísticas asociadas con el nuevo Producto VarianteArray
activeDetermina si el Producto está activo o noBoolean
Parámetros obligatorios en los almacenes.

Dentro del atributo warehouses debe incluir una lista con los idRemote de los almacenes en los cuales estará disponible la nueva Variante. El programa lanzará una excepción si no encuentra el identificador del Almacén incluido en la solicitud.

Parámetros obligatorios en las características.

Es obligatorio asignar características a las nuevas variantes. Para asegurar un correcto funcionamiento debes asegurarte de que el Subset relacionado con el Valor que vas a añadir, tenga la misma Característica asociada que la que vas a añadir. Por ejemplo, si la Característica que deseas relacionar con el nuevo Producto es color , el valor que vayas a asignarle al nuevo Producto debe ser uno existente para esta característica.

Cuerpo de la solicitud:

Una petición para crear una variante con todos sus atributos debe el siguiente esquema:

[
{
"idRemote": "string",
"productGenericId": "string",
"reference": "string",
"observations": "string",
"sku": "string",
"seasonId": "string",
"warehouses": [
{
"idRemote": "string"
}
],
"blocked": true,
"characteristics": [
{
"characteristicId": "string",
"subsetValueId": "string"
}
],
"rates": [
{
"rateId": "string",
"price": "string",
"pvp": "string",
"pvpr": "string"
}
],
"languages": [
{
"languageId": "string",
"productTitle": "string",
"productDescription": "string"
}
],
"items": [
{
"itemId": "string"
}
],
"active": true
}
]

Es posible añadir varios productos a través de la misma solicitud separándolos con comas dentro del array en el cuerpo de la solicitud.

Respuestas

Con el fin de no saturar al servidor, este endpoint envía un mensaje a un consumidor encargado de procesar la petición. Para comprobar el estado de la solicitud enviada es necesario acceder a la url adjunta en la respuesta. Una respuesta correctamente enviada al consumidor debe parecerse a esta:

{
"code": 201,
"message": "Variant Product message created successfully and dispatched to the queue.",
"statusUrl": "http://host/api/database/v1/message/status/66bf382938941"
}

El campo statusUrl nos redirige a una respuesta más detallada sobre el estado de la petición. Una solicitud correctamente procesada por el consumidor tiene el siguiente aspecto:

{
"data": [
{
"status": "completed",
"errorMessage": null
}
],
"pagination": {
"totalItems": 1,
"itemsPerPage": 10,
"currentPage": 1,
"totalPages": 1,
"nextPageUrl": null
}
}

En caso de producirse cualquier error durante el procesado del mensaje, la respuesta tendrá un aspecto similar a este:

{
"code": 400,
"error": "Invalid variant product data format, a required parameter is missing"
}

👉Prueba este endopint🌱

POST/Product/createProductRate

Registro de Tasa de Productos en la API: Uso del Método POST

Actualmente, nuestro método POST en la API está diseñado para manejar exclusivamente el formato JSON. Para registrar tasas de productos de manera efectiva, es crucial seguir un proceso que garantice la integridad de los datos y la funcionalidad adecuada del sistema.

Proceso de Registro:
  1. Creación de Producto: Antes de registrar una tasa de producto, es necesario asegurarse de que exista un producto asociado. Este paso es fundamental ya que si no tenemos un producto no podemos llevar a cabo esta acción. 👉Registrar Producto🌱

  2. Creación de Tasa: Antes de registrar una tasa de producto, es necesario asegurarse de que exista una tasa asociada. Este paso es fundamental ya que si no tenemos una tasa no podemos llevar a cabo esta acción. 👉Registrar Tasa🌱

Detalles del Método POST:

Al utilizar el método POST para registrar tasas de productos, se deben proporcionar datos estructurados en formato JSON que incluyan información crucial como el id del producto asociado, el id de la tasa asociada y el precio. El proceso garantiza que cada tasa de producto tenga una identidad única y esté correctamente configurado para interactuar con la plataforma de manera segura y eficiente. El campo idRemote proporcionado en la creación de una nueva entidad se corresponde con el idRemote que quiera darle el usuario y el sistema creará automáticamente un id local.

Parámetros obligatorios.

Puedes crear una tasa de producto sin incluir pvp o pvpr. No obstante debes tener en cuenta los siguientes parámetros obligatorios:

NombreDescripciónTipo
productIdIdentificador del Producto relacionado con la nueva Tasa de ProductoString
rateIdIdentificador de la Tasa relacionada con la nueva Tasa de ProductoString
pricePrecio de la nueva Tasa de ProductoString

El cuerpo de la solicitud debe seguir el siguiente esquema:

[
{
"productId": "string",
"rateId": "string",
"price": "string",
"pvp": "string",
"pvpr": "string"
}
]
Respuestas

Con el fin de no saturar al servidor, este endpoint envía un mensaje a un consumidor encargado de procesar la petición. Para comprobar el estado de la solicitud enviada es necesario acceder a la url adjunta en la respuesta. Una respuesta correctamente enviada al consumidor debe parecerse a esta:

{
"code": 201,
"message": "ProductRate message created successfully and dispatched to the queue.",
"statusUrl": "http://host/api/database/v1/message/status/66bf382938941"
}

El campo statusUrl nos redirige a una respuesta más detallada sobre el estado de la petición. Una solicitud correctamente procesada por el consumidor tiene el siguiente aspecto:

{
"data": [
{
"status": "completed",
"errorMessage": null
}
],
"pagination": {
"totalItems": 1,
"itemsPerPage": 10,
"currentPage": 1,
"totalPages": 1,
"nextPageUrl": null
}
}

En caso de producirse cualquier error durante el procesado del mensaje, la respuesta tendrá un aspecto similar a este:

{
"code": 400,
"error": "Invalid product data format, a required parameter is missing"
}

👉Prueba este endopint🌱

PUT/Product/updateGenericProduct

Descripción

Este endpoint permite actualizar múltiples Productos Genéricos en una única operación en forma de lista. Para ello es obligatorio adjuntar el productId de cada producto que quieras actualizar en cada objeto dentro de la lista.

Parámetros obligatorios
NameDescriptionType
productIdIdentificador del producto que vas a actualizar.String

El atributo languages permite actualizar o añadir nuevos idiomas al producto asociado.

Cuerpo de la solicitud

El cuerpo de la solicitud debe seguir el siguiente esquema en formato JSON:

[
{
"productId": "string",
"companyId": "string",
"seasonId": "string",
"languages": [
{
"languageId": "string",
"productTitle": "string",
"productDescription": "string"
}
],
"itemId": "string",
"active": true
}
]
Respuestas

Este endpoint funciona a través del consumidor de mensajes. Una respuesta exitosa debe parecerse a esta:

{
"code": 201,
"message": "GenericProduct message created successfully and dispatched to the queue.",
"statusUrl": "http://host/api/database/v1/message/status/66bf382938941"
}

El campo statusUrl nos redirige a una respuesta más detallada sobre el estado de la petición. Una solicitud correctamente procesada por el consumidor tiene el siguiente aspecto:

{
"data": [
{
"status": "completed",
"errorMessage": null
}
],
"pagination": {
"totalItems": 1,
"itemsPerPage": 10,
"currentPage": 1,
"totalPages": 1,
"nextPageUrl": null
}
}

En caso de producirse cualquier error durante el procesado del mensaje, la respuesta tendrá un aspecto similar a este:

{
"code": 400,
"error": "Invalid GenericProduct format, a required parameter is missing"
}

👉Prueba este endopint🌱

PUT/Product/updateVariantProduct

Descripción

Este endpoint permite actualizar múltiples Productos Variantes en una única operación en forma de lista. Para ello es obligatorio adjuntar el productId de cada producto que quieras actualizar en cada objeto dentro de la lista.

Parámetros obligatorios
NameDescriptionType
productIdIdentificador del producto que vas a actualizar.String

Si quieres actualizar alguno de los atributos relacionados con el Producto como rates, warehouses, items o characteristics debes tener en cuenta que todos sus parámetros son obligatorios. El atributo languages permite actualizar o añadir nuevos idiomas al producto asociado.

Cuerpo de la solicitud

El cuerpo de la solicitud debe seguir el siguiente esquema en formato JSON:

[
{
"productId": "string",
"sku": "string",
"seasonId": "string",
"warehouses": [
{
"idRemote": "string"
}
],
"characteristics": [
{
"characteristicId": "string",
"subsetValueId": "string"
}
],
"rates": [
{
"rateId": "string",
"price": 0,
"pvp": 0
}
],
"items": [
{
"itemId": "string"
}
],
"languages": [
{
"languageId": "string",
"productTitle": "string",
"productDescription": "string"
}
],
"active": true
}
]
Respuestas

Este endpoint funciona a través del consumidor de mensajes. Una respuesta exitosa debe parecerse a esta:

{
"code": 201,
"message": "VariantProduct message created successfully and dispatched to the queue.",
"statusUrl": "http://host/api/database/v1/message/status/66bf382938941"
}

El campo statusUrl nos redirige a una respuesta más detallada sobre el estado de la petición. Una solicitud correctamente procesada por el consumidor tiene el siguiente aspecto:

{
"data": [
{
"status": "completed",
"errorMessage": null
}
],
"pagination": {
"totalItems": 1,
"itemsPerPage": 10,
"currentPage": 1,
"totalPages": 1,
"nextPageUrl": null
}
}

En caso de producirse cualquier error durante el procesado del mensaje, la respuesta tendrá un aspecto similar a este:

{
"code": 400,
"error": "Invalid VariantProduct format, a required parameter is missing"
}

👉Prueba este endopint🌱

PUT/Product/updateProductRate

Descripción

Este endpoint permite actualizar múltiples Tarifas asociadas a productos en una misma operación. Para ello, puedes asignar un producto a una tarifa diferente en cada objeto del cuerpo de la solicitud. Es imperativo que el Producto y el Rate existan en el sistema, y que exista una relación previa entre los dos.

Parámetros obligatorios
NameDescriptionType
productIdIdentificador del producto que vas a actualizar.String
rateIdIdentificador del Rate asociado al Producto que quieres actualizarString

Es obligatorio adjuntar al menos uno de los parámetros price y pvp. Esto permite que puedes lanzar una actualización de precio sin tocar el pvp y viceversa.

Cuerpo de la solicitud

El cuerpo de la solicitud debe seguir el siguiente esquema en formato JSON:

[
{
"productId": "string",
"rateId": "string",
"price": "string",
"pvp": "string"
}
]
Respuestas

Este endpoint funciona a través del consumidor de mensajes. Una respuesta exitosa debe parecerse a esta:

{
"code": 201,
"message": "ProductRate message created successfully and dispatched to the queue.",
"statusUrl": "http://host/api/database/v1/message/status/66bf382938941"
}

El campo statusUrl nos redirige a una respuesta más detallada sobre el estado de la petición. Una solicitud correctamente procesada por el consumidor tiene el siguiente aspecto:

{
"data": [
{
"status": "completed",
"errorMessage": null
}
],
"pagination": {
"totalItems": 1,
"itemsPerPage": 10,
"currentPage": 1,
"totalPages": 1,
"nextPageUrl": null
}
}

En caso de producirse cualquier error durante el procesado del mensaje, la respuesta tendrá un aspecto similar a este:

{
"code": 400,
"error": "Invalid ProductRate format, a required parameter is missing"
}

👉Prueba este endopint🌱

DELETE/Product/delete/{id}

Eliminación de Productos dado un identificador.

Descripción

Este endpoint permite la eliminación de productos utilizando su identificador único. Este campo id puede ser tanto el identificador generado por la base de datos del B2B como el idRemote que usted nos proporciona al registrar los productos. Este enfoque asegura una gestión segura y flexible de los productos dentro de nuestra plataforma. Una vez eliminado, el producto se registra en el Historial de Eliminados.


⚠️No se podrá eliminar un Producto que tenga asociado una Tasa de Producto.

Parámetros
NombreDescripciónTipo
idIdentificador de ProductoString

👉Prueba este endopint🌱

DELETE/Product/deleteProductRate/{id}

Eliminación de Tasas de Productos dado un identificador.

Descripción

Este endpoint permite la eliminación de tasas productos utilizando su identificador único. Es importante destacar que al eliminar una tasa de producto, también se elimina la Tasa correspondiente. Una vez eliminada, la tasa de producto se registra en el Historial de Eliminados

Parámetros
NombreDescripciónTipo
idIdentificador de ProductoString

👉Prueba este endopint🌱

Posibles Errores en la Respuesta

ErrorCódigoRespuesta
Este error ocurre cuando no se puede establecer una conexión con la base de datos. Es un problema interno del servidor.500{"code": 500,"error": "Database connection failed."}
Este error ocurre cuando no puede insertar o actualizar y en la dbs de pruebas.500{"code": 500,"error": "Invalid connection name, you cannot insert in default"}
Este error indica que falta un parametro.400{"code": 400,"error": "Parameter $parameter is required"}
Este error indica que no está autorizado.401{"code": 401,"error": "Unauthorized."}
Este error indica que no ha sido posible encontrar el Producto.404{"code": 404,"error": "No entity found for Product with $id."}
Este error ocurre cuando intenta insertar un registro que ya existe409{"code": 409,"error": "Duplicate entry"}
Este error ocurre cuando intenta enviar demasiadas solicitudes en un corto periodo de tiempo.429{"code": 429,"error": "Too Many Requests"}