Productos

Permite insertar, modificar o eliminar productos.

Recurso Descripción
GET /api/products.xml Devuelve un listado de productos permitiendo el filtrado por múltiples atributos
GET /api/products/#{id}.xml Devuelve información de un producto existente identificado por el identificador #{id}
PUT /api/products/#{id}.xml Modifica los datos de un producto existente identificado por el identificador #{id}
POST /api/products.xml Permite crear un nuevo producto
POST /api/products/updateStock/#{id}.xml Permite modificar el stock de un producto
DELETE /api/products/#{id}.xml Elimina un producto existente identificado por el identificador #{id}
PUT /api/products.xml Devuelve una plantilla de la estructura en xml para poder utilizarla para crear un nuevo producto

GET /api/products.xml

Devuelve la lista de productos

curl -u 03334b0a261a2c355ae2db022a963d8e:x https://[ACCOUNT_NAME].facturadirecta.com/api/products.xml

Opciones de paginación de lista y límites de elementos

Por defecto la llamada devuelve los 100 primeros elementos. Para obtener la lista de más elementos o bien paginar las llamadas deben utilizarse los siguientes parámetros:

Parámetros Descripción
limit Indica el número de entradas que devolverá la llamada (por defecto son 100 y se pueden listar hasta un máximo de 250 entradas en una sola llamda)
start Indica la posición del primer elemento que se devolverá en la llamada (por defecto es el elemento de la posición 0)

Opciones de filtrado de productos

Para focalizar más la consulta de productos, puedes utilizar las siguientes opciones de filtrado:

Parámetros Descripción
productCode Permite obtener los productos con el código de producto indicado
description Permite obtener los productos que contengan en su descripción el valor indicado
term Permite obtener una lista de los productos para los que el valor de ‘term’ coincide en una parte del código de producto (productCode) o parte de la descripción (description)
ownerEmail Permite obtener sólo los productos propiedad del usuario con el email indicado

Ejemplos

curl -u 03334b0a261a2c355ae2db022a963d8e:x https://[ACCOUNT_NAME].facturadirecta.com/api/products.xml?productCode=PD1205\&description=software

curl -u 03334b0a261a2c355ae2db022a963d8e:x https://[ACCOUNT_NAME].facturadirecta.com/api/products.xml?productCode=PD1205

curl -u 03334b0a261a2c355ae2db022a963d8e:x https://[ACCOUNT_NAME].facturadirecta.com/api/products.xml?description=software

GET /api/products/#{id}.xml

Obtener un producto existente

Ejemplo para obtener el producto con id=135

curl -u 03334b0a261a2c355ae2db022a963d8e:x https://[ACCOUNT_NAME].facturadirecta.com/api/products/135.xml

Ejemplo de resultado

<?xml version="1.0" encoding="UTF-8"?>
<product>
 <id>135</id>
 <updateDate>20130610164315.614</updateDate>
 <productCode><![CDATA[API99]]></productCode>
 <description><![CDATA[Producto ejemplo API]]></description>
 <price>100.00</price>
 <discountRate>5.00</discountRate>
 <purchasePrice>65.00</purchasePrice>
 <provider>
 <id>155</id>
 </provider>
 <stockEnabled>true</stockEnabled>
 <stock>97</stock>
</product>

El elemento stockEnabled indica si el producto tiene habilitado el control de stock en el programa.

Cuando el control de stock está habilitado se incluye también el stock actual del producto en el elemento stock

PUT /api/products/#{id}.xml

Modificar un producto existente

Ejemplo para actualizar un producto con id=135. Prácticamente todos los elementos son opcionales, y solo aquellos que estén presentes en el xml serán actualizados.

curl -u 03334b0a261a2c355ae2db022a963d8e:x -X PUT -H 'Accept: application/xml' -H 'Content-Type: application/xml'
-d "<?xml version="1.0" encoding="UTF-8"?>
<product>
 <id>135</id>
 <productCode><![CDATA[APO01]]></productCode>
 <description><![CDATA[Producto creado desde la API]]></description>
 <price>150.00</price>
 <discountRate>10.00</discountRate>
 <purchasePrice>105.00</purchasePrice>
 <provider>
 <id>51</id>
 </provider>
</product>"
https://[ACCOUNT_NAME].facturadirecta.com/api/products/135.xml

En la actualización de un producto se puede habilitar o deshabilitar el control de stock de un producto, pero no se puede actualizar el valor del stock, excepto si en la misma operación se está habilitando el stock en el producto y previamente estaba deshabilitado.

En caso de enviarse el valor del stock actual en una operación de actualización donde el producto ya tenía habilitado el control de stock dicho valor de stock es ignorado.

POST /api/products.xml

Crear un nuevo producto

curl -u 03334b0a261a2c355ae2db022a963d8e:x -X POST -H 'Accept: application/xml' -H 'Content-Type: application/xml'
-d "<?xml version="1.0" encoding="UTF-8"?>
<product>
 <productCode><![CDATA[API001]]></productCode>
 <description><![CDATA[Producto creado desde la API]]></description>
 <price>150.00</price>
 <discountRate>5.00</discountRate>
 <purchasePrice>105.00</purchasePrice>
 <provider>
 <id>51</id>
 </provider>
 <stockEnabled>true</stockEnabled>
 <stock>97</stock>
</product>
"
https://[ACCOUNT_NAME].facturadirecta.com/api/products.xml

En la creación de un producto, sólo si la capacidad del plan contratado lo permite, se puede indicar si se quiere habilitar el control de stock del producto usando el elemento stockEnabled, así como el valor inicial del stock en el elemento stock.

POST /api/products/updateStock/#{id}.xml

Permite modificar el valor actual de stock de un producto que tenga el stock habilitado.

No es necesario enviar ningún dato en el cuerpo del POST, el nuevo valor para el stock se indicará en la URL mediante el parámetro newStock.

Actualización del stock de un producto

Para actualizar el stock de un producto con ID 957 al valor 350,5 se haría con la siguiente llamada:

curl -u 03334b0a261a2c355ae2db022a963d8e:x -X POST -H 'Accept: application/xml' https://[ACCOUNT_NAME].facturadirecta.com/api/products/updateStock/957.xml?newStock=350.5

Si la llamada tiene éxito el programa devuelve un fragmento del objeto producto incluyendo sólo el ID y el valor actual del stock tras el cambio:

<?xml version="1.0" encoding="UTF-8"?>
<product>
 <id>957</id>
 <stock>350.5</stock>
</product>

DELETE /api/products/#{id}.xml

Eliminar un producto existente

Ejemplo para eliminar el producto con id=135

curl -u 03334b0a261a2c355ae2db022a963d8e:x -X DELETE https://[ACCOUNT_NAME].facturadirecta.com/api/products/135.xml

PUT /api/products.xml

Obtener la plantilla xml de nuevo producto

curl -u 03334b0a261a2c355ae2db022a963d8e:x -X PUT https://[ACCOUNT_NAME].facturadirecta.com/api/products.xml

Resultado

<?xml version="1.0" encoding="UTF-8"?>
<product>
 <productCode><![CDATA[]]></productCode>
 <description><![CDATA[]]></description>
 <price></price>
 <discountRate></discountRate>
 <purchasePrice></purchasePrice>
 <provider>
 <id></id>
 </provider>
 <stockEnabled>true</stockEnabled>
 <stock></stock>
</product>