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 |
Devuelve la lista de productos
curl -u 03334b0a261a2c355ae2db022a963d8e:x https://[ACCOUNT_NAME].facturadirecta.com/api/products.xml
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) |
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 |
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
Obtener un producto existente
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
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.
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.
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.
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>
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>