# Identificacion de un producto ### Código Unico Todo producto que se incorpora en la base de datos de Go!catalog dispone de un código único que mantendrá a lo largo de toda su vida. Este código es el código "**unique_id**". Además de este código un producto en Go!Catalog tiene un código Telematel (“**id**”) también único en la base de datos, pero que puede sufrir un cambio si el producto se traspasa o fusiona, siendo trasladado a otra marca. El Código Telematel esta formado por 10 números, los 4 primeros identifican la marca, los 5 siguiente producto y el ultimo es un digito de control. Este código se le asigna a un producto cuando se incorpora a una marca de Go!catalog. Si el producto se traspasa a otra marca por procesos de fusión o escisión, el producto cambia de código Telematel. En estos casos el “**unique_id**” es el único código que no sufre variación alguna en este proceso. Recomendamos siempre disponer de ambos códigos de producto (“**unique_id**” y “**id**”) en los procesos de integración para gestionar correctamente todos los tipos de alteraciones que las actualizaciones puedan generar. Resumen: * El código “**unique_id**” nace y muere con el producto en Go!catalog y nunca sufre modificación o cambio. * El código Telematel es único en Go!catalog para cada producto, pero su asignación esta relacionada con la marca, por lo tanto una escisión o fusión de marcas produce un cambio de código Telematel del producto pero mantiene el mismo “**unique_id**”. * Un cambio de referencia comercial de producto no produce un cambio de Código Telematel. <br> <br> ## Estados de marca y productos ### Estados del producto Un producto en Go!Catalog puede encontrarse en estados diferentes. | state_code | State_name | Comments | | --- | --- | --- | | **0** | active | Activo | | **10** | outdated | Descatalogado | | **20** | recovered | Recuperado. Se produce cuando un producto descatalogado se vuelve activo | | **90** | deleted | El producto es eliminado de la base de datos. | | **91** | merged | Fusionado. Cuando una marca se fusiona con otra marca, sus productos son una novedad en esa marca y se eliminan de su marca original. | | **92** | split | Escindido. Cuando se escinde una marca algunos de sus productos se considerarán productos nuevos en la/s marca/s de destino y se eliminarán de la marca de origen. | <br> ### Estados de la marca Una marca en Go!Catalog puede encontrarse en estados diferentes. | state_code | State_name | | --- | --- | | **0** | Activa | | **10** | Descatalogada. Marca inactiva. Deja de publicar y actualizar su información. | | **91** | Fusionada. La marca en estado fusionada se queda sin productos, salvo uno con la referencia 0, en cuya descripción se indica ”Marca en proceso de fusión”. | <br> <br> ## Casos de uso ### Cuando se contrata una nueva marca Añadir la nueva marca a su base de datos. Descargar el índice de marcas. La nueva marca aparecerá en el índice. Podrá descargar todos los productos de la nueva marca contratada. La lista de todos los productos se informará en el índice de productos. <br> ### Cuando se elimina una marca Una marca puede ser eliminada por dos razones: * Es eliminada de la lista de marcas contratadas: a partir de ese momento no aparecerá en el índice de marcas. * La marca es eliminada de la base de datos de Telematel: todos los productos de la marca serán eliminados. Una marca puede ser eliminada de la base de datos de Telematel cuando: * La marca se fusiona con otra marca. * El fabricante (marca) finaliza su actividad comercial. * Otro <br> ### Cuando se produce un traspaso de datos entre marcas (fusión o escisión) Por exigencias del mercado, las marcas pueden unificar o separar su contenido al publicarlo. Cada fabricante, publicador de contenidos en Go!catalog, decide como publicar su información y ocasionalmente, ante circunstancias específicas, puede necesitar realizar variaciones que precisen ejecutar los procesos de fusión o escisión de marcas. Estos procesos, dado que mantenemos la trazabilidad de los contenidos a lo largo de todo su vida en Go!catalog, conllevan una serie de cambios en el producto que requieren especial atención en los procesos de actualización e integración con otras aplicaciones. <br> ### **A. Cuando una marca se fusiona** **Fusión de marcas**: El contenido de dos o más marcas se fusionan en una sola marca. El contenido completo de una o más marcas se traspasa a otra marca, por lo tanto, todos los productos se trasladan y se vinculan a otra marca de Go!catalog. Esta puede ser una marca ya publicada y activa en Go!Catalog o bien una nueva marca. Los productos al trasladarse de una marca a otra, cambian su código Telematel por nuevos códigos Telematel, asignados en función de la nueva marca (4 dígitos marca + 5 dígitos producto + 1 digito control). **Marca de origen**: la marca se fusiona con otra marca. Todos sus productos activos son eliminados. No se realiza ninguna acción con los productos obsoletos de la marca. La marca se eliminará después de dos meses aproximadamente. **Marca de destino**: todos los productos de la marca de origen se trasladan a esta marca como nuevos productos. Si no tiene contratada la marca de destino, Telematel incorporará automáticamente esta marca a su lista de marcas contratadas. Para cada producto fusionado, habrá dos archivos, uno para la marca de origen y otro para la marca de destino. En el JSON del producto fusionado (el que se elimina de la marca origen) * Se informará del estado “state_name” como “merged” (fusionado) * En el campo “replaced\_by\_id” se indicará el nuevo código Telematel <br> #### 1) Ficha producto en la marca origen Preste especial atención a los siguientes campos del archivo: | Field | Value | | --- | --- | | **brand_id** | Código de marca de la marca de origen e.g. 322 | | **id** | Código de producto interno (código de Telematel) en la marca de origen e.g. “0322000001” | | **unique_id** | Número de identificación. Actuar como un identificador único para el producto. Es independiente de la marca. Si un producto se fusiona con otra marca, se mantiene “unique_id” | | **part_code** | Código del fabricante del producto. Si un producto se fusiona con otra marca, se mantiene “part_code” | | **replaced\_by\_id** | Nuevo código de producto interno. Informado cuando una marca se fusiona o escinde. Código Telematel (id) en la marca destino. | | **deleted** | true | | **state_code** | 91 | | **state_name** | “merged” (fusionado) | <br> #### 2) Ficha producto en la marca destino Preste especial atención a los siguientes campos del archivo: | Field (example) | Value | | --- | --- | | **brand_id** | Código de marca de la marca de destino e.g. 315 | | **id** | Código de Producto interno (código de Telematel) en la marca de destino. e.g. “**0315000001**” | | **unique_id** | Número de identificación. Actuar como un identificador único para el producto. Es independiente de la marca a la que pertenece un producto. Si un producto se fusiona con otra marca, se mantiene "**unique_id**" | | **part_code** | Código del fabricante del producto. Si un producto se fusiona con otra marca, se mantiene “**part_code**” | | **state_code** | 0 | | **state_name** | “**active**” (activo) | Nota: En breve incorporaremos el dato “**previous\_by\_id**” en el JSON del producto que se ha traslado a una nueva marca con el objetivo de indicar el código Telematel anterior. <br> #### 3) Fichero índice de marca Cuando se elimine la marca de origen, preste especial atención a los siguientes campos del archivo de la marca fusionada | Field | Value | | --- | --- | | **url** e.g. “https://api.telematel.com/products?brand_id=311&format=json” | URL de solicitud de productos de marca. Se requiere agregar el parámetro Token o código de seguridad detrás de la URL | | **type** | “**products\_by\_brand**” | | **state_name** | “**merged**” (fusionada) | | **state_code** | 91 | | **id** | e.g. 311 | | **deleted** | true | <br> ### **B. Cuando una marca se escinde (se divide)** **Escisión de marcas**: Parte del contenido de una marca se traspasa o una o más marcas, por lo tanto, los productos seleccionados se trasladan y se vinculan a otra marca y se asignan nuevos códigos Telematel **Marca de origen**: la marca origen que separo su contenido en una o más marcas. **Marca de destino**: Algunos productos de la marca de origen se trasladan a esta marca como nuevos productos. Si no tiene contratada esta marca, Telematel incorpora automáticamente esta marca en su lista de marcas contratadas. Para cada producto escindido, tenemos dos archivos, uno para la marca de origen, otro para la marca de destino. <br> #### 1) Fichero producto en la marca origen Preste especial atención a los siguientes campos del archivo | Field (example) | Value | | --- | --- | | **brand_id** | Código de marca de la marca de origen e.g. 322 | | **id** | Código de producto interno (código de Telematel) en la marca de origen e.g. “0322000001” | | **unique_id** | Número de identificación. Actuar como un identificador único para el producto. Es independiente de la marca a la que pertenece un producto. Si un producto se traslada a otra marca, se mantiene unique_id | | **part_code** | Código del fabricante del producto. Si un producto se traslada a otra marca, se mantiene part_code | | **replaced\_by\_id** | Nuevo código de producto interno. Informado cuando una marca se fusiona o escinde. Código Telematel (id) en la marca destino. | | **deleted** | true | | **state_code** | 92 | | **state_name** | “split” (escindido) | <br> #### 2) Fichero producto en la marca destino Preste especial atención a los siguientes campos del archivo | Field (example) | Value | | --- | --- | | **brand_id** | Código de marca de la marca de destino e.g. 323 | | **id** | Código de Producto interno (código de Telematel) en la marca de destino. e.g. “0323000001” | | **unique_id** | Número de identificación. Actuar como un identificador único para el producto. Es independiente de la marca a la que pertenece un producto. Si un producto se traslada a otra marca, se mantiene unique_id | | **part_code** | Código del fabricante del producto. Si un producto pasa a otra marca, se mantiene part_code | | **state_code** | 0 | | **state_name** | active (Activo) | <br> <br> ## Descarga de datos ### Actualización del índice de productos El índice de productos se actualiza diariamente y permite identificar todo tipo de actualizaciones cuando: * Se incorpora un nuevo producto * Se modifica un producto * Un producto está descatalogado * Se elimina un producto * Se recupera un producto <br> #### 1) Ficha producto en la marca origen Revisa tu base de datos. Si no puede encontrar el producto, incorpórelo. <br> #### Se modifica un producto Cuando se modifica un producto, la "fecha" archivada se actualizará en el índice del producto. Este archivo lo ayudará a verificar cuándo actualizar este producto en los siguientes procesos de descarga. Observe el campo en el siguiente ejemplo: | Field | Description | | --- | --- | | **date** e.g. "2018-01-03 13:23:00" | Fecha de actualización del producto en ISO_8601 | <br> ### 2) Se descataloga un producto Preste especial atención a los siguientes campos en la ficha Producto. | Field (example) | Value | | --- | --- | | **state_code** | 10 | | **state_name** | “outdated” (descatalogado) | | **active** | false | <br> ### 3) Se elimina un producto Hay tres situaciones posibles. Cada uno de ellos tiene un código de estado particular. | state_code | State_name | Comments | | --- | --- | --- | | **90** | deleted | El producto es eliminado de la base de datos. | | **91** | merged | Cuando una marca se fusiona con otra marca, sus productos son una novedad en esa marca y se eliminan de su marca original. | | **92** | split | Cuando una marca se escinde en otra marca, algunos de sus productos se mueven como un producto nuevo en esa marca y se eliminan de su marca original. | El producto ya no está en el índice de productos después de 90 días. Preste especial atención a los siguientes campos en la ficha Producto. | Field (example) | Value | | --- | --- | | **deleted** | true | | **active** | false | <br> ### 4) Se recupera un producto Sucede cuando se activa un producto descatalogado. Preste especial atención a los siguientes campos en la ficha Producto. | Field (example) | Value | | --- | --- | | **state_code** | 20 | | **state_name** | “recovered” | | **active** | false | La próxima vez que se modifique el producto, si todavía está activo, su código de estado será cero. <br> ### Métodos de descarga Existen dos métodos para acceder a las actualizaciones de la API: * Descargas por producto: peticiones realizadas a la API producto a producto (por código Telematel) y se obtiene un JSON por cada solicitud. * Descargas por marca: son peticiones realizadas por marca y se obtiene un ZIP que contiene todos los JSON de los productos de la marca. La diferencia más destacable está en el tiempo de descarga de datos, ya que por marca la descarga es mucho más rápida. En las descargas por producto, las peticiones se centran en los productos actualizados en un periodo determinado, mientras que, en la descarga por marca, las peticiones se centran en todo el contenido de la marca, para una vez descargada, proceder a actualizar los JSON que han sufrido cambios. <br> ### Recomendaciones Para obtener un óptimo resultado en las descargas de datos a través de la API, le recomendamos leer detenidamente los siguientes pasos: * Descargue todos los productos en su primera conexión. A partir de ese momento, le recomendamos que descargue solo productos actualizados. * Se recomienda tener un proceso de marca específico. Si se encuentra algún error en la actualización diaria, debería poder forzar la descarga completa de una marca específica, descargando el índice de productos de la marca y descargando todos los productos de la marca. * Al suscribirte a una nueva marca, descarga todos sus productos. Las otras marcas se pueden actualizar como de costumbre. * Si no ha descargado productos durante tres meses, es mejor descargar todos los productos * Le recomendamos verificar qué productos se han actualizado con éxito en el proceso diario, para continuar con el proceso si el proceso se interrumpe por cualquier motivo. <br> <br> ## Normas internacionales **Utilizamos múltiples estándares internacionales para facilitar la integración en diferentes entornos.** | | | | --- | --- | | **UTF-8 Unicode Transformation Format 8-bits** | [http://www.utf-8.com/](http://www.utf-8.com/) | | **ISO 8601 Date and time format** | [https://www.iso.org/iso-8601-date-and-time-format.html](https://www.iso.org/iso-8601-date-and-time-format.html) | | **ISO 4217 Currency codes** | [https://www.iso.org/iso-4217-currency-codes.html](https://www.iso.org/iso-4217-currency-codes.html) | | **ISO 639-1 Codes for the representation of names of languages** | [https://www.iso.org/obp/ui/#iso:std:iso:639:-1:ed-1:v1:en](https://www.iso.org/obp/ui/#iso:std:iso:639:-1:ed-1:v1:en) | | **ISO 3166-1 alpha-2 Country code** | [https://www.iso.org/iso-3166-country-codes.html](https://www.iso.org/iso-3166-country-codes.html) | | **EAN-13 European Article Number** | [https://www.gs1.org/standards/barcodes/ean-upc](https://www.gs1.org/standards/barcodes/ean-upc) | | **GTIN Global Trade Item Number** | [https://www.gs1.org/standards/barcodes/ean-upc](https://www.gs1.org/standards/barcodes/ean-upc) Includes UCC-12, EAN-13, EAN-14 and EAN-8 | | **MD5 Cryptographic reduction** | [https://www.rfc-editor.org/rfc/rfc6151.txt](https://www.rfc-editor.org/rfc/rfc6151.txt) | | **UN/ECE CEFACT recommendation 20 Measurement units** | [https://www.unece.org/fileadmin/DAM/uncefact/recommendations/rec20/rec20\_Rev13e\_2017.xls](https://www.unece.org/fileadmin/DAM/uncefact/recommendations/rec20/rec20_Rev13e_2017.xls) | | **ETIM International characteristics standard** | [https://www.etim-international.com](https://www.etim-international.com) | <br> ### Especificaciones técnicas Todas las respuestas del sistema API están codificadas en UTF-8. Todas las respuestas del sistema de búsqueda remota están en formato JSON. Recomendamos que la versión del sistema operativo del servidor sea superior a Windows Server 2003. <br> <br> ## FAQs #### No puedo descargar el archivo de índice Verifique que la dirección IP sea una de las IP especificadas en el contrato. Si la solicitud se realiza desde otro servidor, no funcionará. <br> #### El valor del campo under\_request en los nodos public\_prices es '**verdadero**'. ¿Qué significa? El fabricante no ha facilitado el precio. Si desea conocer el precio, puede contactar directamente con el fabricante. <br> #### No puedo descargar el archivo de la marca Compruebe que tiene informado el token de cliente (código de seguridad).