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’ manufacturer, name, product group, tags, SKU, foreign SKU, EAN 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:
Tags beginning of takein_ needed only if you like to take in some quantity of the product immediatelly. Otherwise do not specify them or leave them blank.
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.00</list_price>
<wholesale_price>800.00</wholesale_price>
<purchase_price>900.00</purchase_price>
<currency>EUR</currency>
<vat>27.00</vat>
<unit><![CDATA[pcs]]></unit>
<depreciation>3</depreciation>
<discount1>10</discount1>
<discount2>15</discount2>
<discount3>20</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>
<net_weight>10.53</net_weight>
<accounting_number>452</accounting_number>
<service>0</service>
<country_code>DK</country_code>
<envfee_code></envfee_code>
<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>
<takein_gross_weight>12.4532</takein_gross_weight>
<takein_package_type>1</takein_package_type>
<takein_country_code>HU</takein_country_code> <!-- Origin country in ISO 3166-1 alpha-2 -->
<takein_batch_no>123AB</takein_batch_no>
<takein_expire_date>2022-12-12</takein_expire_date>
</setProduct>
</command>
Get the current quantity of product from the specified warehouse. If you like the get the quantity from all of the warehouse you can use the * (asterisk) character as the name of the warehouse. The response will contain the deliverable, pending and available quantity.
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 less then zero (negative) a wasting receipt will be created. If the quantity more than zero (positive) 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.00</price>
<product_type>1</product_type>
<start_serial_number><![CDATA[]]></start_serial_number>
<currency><![CDATA[EUR]]></currency>
<fxrate>301.23</fxrate> <!-- if the currency is different from the currency of the product -->
<date>2015-12-01</date>
<gross_weight>12.4532</gross_weight>
<package_type>1</package_type>
<country_code>HU</country_code> <!-- Origin country in ISO 3166-1 alpha-2 -->
<batch_no>123AB</batch_no>
<expire_date>2022-12-12</expire_date>
</setQuantity>
</command>
Get order status by ID. You can get the order ID after sending them through the API. The response will contain the order ID. If you build a webshop you should store the orders’ ID after getting 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. If the sending was successful the response will include the order ID. You can refer the order ID in other API methods if you like to follow up the status of the order.
Value sets in the header:
You can handle the orders in the CO3 GUI after creating. The orders will be created as delivery notes in Saved status. You can find them in Products & stock / Customer orders page or Products & stock / Delivery notes page.
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>
<custom_fields>
<example_checkbox>
<node>yes</node>
</example_checkbox>
<example_text><![CDATA[Some text]]></example_text>
</custom_fields>
</setOrder>
</command>
Get all of the warehouses which is active in the system.
Sample request XML:
<?xml version="1.0" encoding="utf-8"?>
<command>
<getWarehouses>
<api_key><![CDATA[put-your-api-key-here]]></api_key>
<session_key><![CDATA[put-your-session-key-here]]></session_key>
</getWarehouses>
</command>
Create a new warehouse.
Sample request XML:
<?xml version="1.0" encoding="utf-8"?>
<command>
<setWarehouse>
<api_key><![CDATA[put-your-api-key-here]]></api_key>
<session_key><![CDATA[put-your-session-key-here]]></session_key>
<name><![CDATA[Warehouse name]]></name>
<postal_code>NY14235</postal_code>
<city>New York</city>
<street><![CDATA[Delaware street 712.]]></street>
</setWarehouse>
</command>