You have to create an XML to call a proper method. After creating the request XML you can use such kind of code.
$opts = array(
'http' => array(
'method' => 'POST',
'header' => array(
'Connection: close',
'Content-Type: text/xml; charset=utf-8',
'Content-Length: '.strlen($xml)
),
'content' => $xml
)
);
$context = stream_context_create($opts);
$response = file_get_contents("https://co3app.com/api/product", false, $context);
echo $response;
Every method will return with an XML response.
Gives back all products from the account based on the given filter criteria. You have to set a search criteria for the products’ tags, manufacturer and name fields with the filter field. The maximum number of products in the response would be 1000.
Sample request XML:
<?xml version="1.0" encoding="utf-8"?>
<command>
<getProduct>
<api_key><![CDATA[put-your-api-key-here]]></api_key>
<session_key><![CDATA[put-your-session-key-here]]></session_key>
<filter><![CDATA[keyword]]></filter>
</getProduct>
</command>
Create a new product or modify an existing one. The method will give back the product ID after succesfully created. This can be used for later reference for eg. in a webshop. The product’s photo will be downloaded automatically from the given URL and saved in the account. If the takein_ tags filled in automatic take in will be placed.
Special XML tags’ description:
Sample request XML:
<?xml version="1.0" encoding="utf-8"?>
<command>
<setProduct>
<api_key><![CDATA[put-your-api-key-here]]></api_key>
<session_key><![CDATA[put-your-session-key-here]]></session_key>
<manufacturer><![CDATA[Apple Inc.]]></manufacturer>
<product_name><![CDATA[iPhone 5S]]></product_name>
<item_number><![CDATA[SKU1284287648]]></item_number>
<ean_number><![CDATA[700285066104]]></ean_number>
<foreign_item_number><![CDATA[TTI0003]]></foreign_item_number>
<vtsz_number><![CDATA[13456789]]></vtsz_number>
<product_group><![CDATA[Mobile phones]]></product_group>
<description><![CDATA[Put your marketing message and specification here.]]></description>
<notes><![CDATA[The note should be used for internal use only.]]></notes>
<tags>
<tag><![CDATA[mobile]]></tag>
<tag><![CDATA[3G]]></tag>
<tag><![CDATA[high end]]></tag>
</tags>
<action>1</action>
<list_price>1000</list_price>
<wholesale_price>800</wholesale_price>
<purchase_price>900</purchase_price>
<currency>EUR</currency>
<vat>27</vat>
<unit><![CDATA[pcs]]></unit>
<depreciation>3</depreciation>
<discount1>4</discount1>
<discount2>6</discount2>
<discount3>8</discount3>
<photo><![CDATA[http://images.apple.com/iphone-5s/specs/images/color_gray.jpg]]></photo>
<size><![CDATA[125 x 65 x 13mm]]></size>
<color><![CDATA[Light-blue]]></color>
<id>0</id>
<takein_quantity>1</takein_quantity>
<takein_price>125.50</takein_price>
<takein_currency>EUR</takein_currency>
<takein_fxrate>301.23</takein_fxrate> <!-- If the account's default currency is different -->
<takein_contact_id>134</takein_contact_id>
<takein_date>2015-12-01</takein_date>
<takein_warehouse><![CDATA[Name-of-the-warehouse]]></takein_warehouse>
<takein_product_type>1</takein_product_type>
<takein_start_serial_number>2235435</takein_start_serial_number>
</setProduct>
</command>
Get the current quantity of product from the specified warehouse.
Sample request XML:
<?xml version="1.0" encoding="utf-8"?>
<command>
<getQuantity>
<api_key><![CDATA[put-your-api-key-here]]></api_key>
<session_key><![CDATA[put-your-session-key-here]]></session_key>
<product_id>6</product_id>
<warehouse><![CDATA[default]]></warehouse>
</getQuantity>
</command>
Set quantity for the specified product. If the quantity decreased a wasting receipt will be created. If the quantity increased a take in receipt will be created.
Special XML tags’ description:
Sample request XML:
<?xml version="1.0" encoding="utf-8"?>
<command>
<setQuantity>
<api_key><![CDATA[put-your-api-key-here]]></api_key>
<session_key><![CDATA[put-your-session-key-here]]></session_key>
<product_id>6</product_id>
<quantity>5</quantity>
<contact_id>1</contact_id>
<warehouse><![CDATA[first]]></warehouse>
<price>800</price>
<product_type>1</product_type>
<start_serial_number><![CDATA[]]></start_serial_number>
</setQuantity>
</command>
Get order status by ID. You can get the order ID after sending them through the API. If you build a webshop you should store the orders’ ID after sending them.
Sample request XML:
<?xml version="1.0" encoding="utf-8"?>
<command>
<getOrderStatus>
<api_key><![CDATA[put-your-api-key-here]]></api_key>
<session_key><![CDATA[put-your-session-key-here]]></session_key>
<order_id>76</order_id>
</getOrderStatus>
</command>
Create a new order in CO3. You have to specify the header of the order first and then you can specify as many item rows as you like.
Value sets in the header:
You can handle the orders in the CO3 GUI after creating it. The orders will be created as delivery notes in Saved status. You can find them in Products & stock – Delivery notes.
Sample request XML:
<?xml version="1.0" encoding="utf-8"?>
<command>
<setOrder>
<api_key><![CDATA[put-your-api-key-here]]></api_key>
<session_key><![CDATA[put-your-session-key-here]]></session_key>
<warehouse><![CDATA[Name of your warehouse]]></warehouse>
<shipping_aim><![CDATA[sale]]></shipping_aim>
<method><![CDATA[cash]]></method>
<issued_date>2013-07-02</issued_date>
<selected_account>12345678-12345678-12345678</selected_account>
<contact_id>1</contact_id>
<order_description><![CDATA[Order description]]></order_description>
<currency>EUR</currency>
<language>de_DE</language>
<issuer_swift>COBADEFF</issuer_swift>
<issuer_email>accounting@acme.com</issuer_email>
<issuer_phone>123456789</issuer_phone>
<items>
<item>
<product_id>1234</product_id>
<quantity>1.00</quantity>
<custom_price>200.00</custom_price>
<discount>0</discount>
<description><![CDATA[Item description]]></description>
</item>
</items>
</setOrder>
</command>