Sample code for 30+ languages & platforms
SQL Server

Akeneo: Create New Product

See more HTTP Misc Examples

Demonstrates how to create a new product.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    --  This example requires the Chilkat API to have been previously unlocked.
    --  See Global Unlock Sample for sample code.

    DECLARE @http int
    EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    --  Use your previously obtained access token.
    --  See Get Akeneo Access Token
    EXEC sp_OASetProperty @http, 'AuthToken', 'access_token'

    --  Build the following JSON to be sent in the request body:
    --  Use this online tool to generate the code from sample JSON: 
    --  Generate Code to Create JSON

    --  {
    --    "identifier": "top",
    --    "enabled": true,
    --    "family": "tshirt",
    --    "categories": [
    --      "summer_collection"
    --    ],
    --    "groups": [],
    --    "parent": null,
    --    "values": {
    --      "name": [
    --        {
    --          "data": "Top",
    --          "locale": "en_US",
    --          "scope": null
    --        },
    --        {
    --          "data": "D�bardeur",
    --          "locale": "fr_FR",
    --          "scope": null
    --        }
    --      ],
    --      "description": [
    --        {
    --          "data": "Summer top",
    --          "locale": "en_US",
    --          "scope": "ecommerce"
    --        },
    --        {
    --          "data": "Top",
    --          "locale": "en_US",
    --          "scope": "tablet"
    --        },
    --        {
    --          "data": "D�bardeur pour l'�t�",
    --          "locale": "fr_FR",
    --          "scope": "ecommerce"
    --        },
    --        {
    --          "data": "D�bardeur",
    --          "locale": "fr_FR",
    --          "scope": "tablet"
    --        }
    --      ],
    --      "price": [
    --        {
    --          "locale": null,
    --          "scope": null,
    --          "data": [
    --            {
    --              "amount": "150.5",
    --              "currency": "EUR"
    --            },
    --            {
    --              "amount": "150",
    --              "currency": "USD"
    --            }
    --          ]
    --        }
    --      ],
    --      "color": [
    --        {
    --          "locale": null,
    --          "scope": null,
    --          "data": "black"
    --        }
    --      ],
    --      "size": [
    --        {
    --          "locale": null,
    --          "scope": null,
    --          "data": "m"
    --        }
    --      ]
    --    },
    --    "associations": {
    --      "PACK": {
    --        "products": [
    --          "sunglass"
    --        ],
    --        "groups": []
    --      }
    --    }
    --  }
    --  

    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT

    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'identifier', 'top'
    EXEC sp_OAMethod @json, 'UpdateBool', @success OUT, 'enabled', 1
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'family', 'tshirt'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'categories[0]', 'summer_collection'
    EXEC sp_OAMethod @json, 'UpdateNewArray', @success OUT, 'groups'
    EXEC sp_OAMethod @json, 'UpdateNull', @success OUT, 'parent'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.name[0].data', 'Top'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.name[0].locale', 'en_US'
    EXEC sp_OAMethod @json, 'UpdateNull', @success OUT, 'values.name[0].scope'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.name[1].data', 'D�bardeur'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.name[1].locale', 'fr_FR'
    EXEC sp_OAMethod @json, 'UpdateNull', @success OUT, 'values.name[1].scope'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[0].data', 'Summer top'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[0].locale', 'en_US'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[0].scope', 'ecommerce'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[1].data', 'Top'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[1].locale', 'en_US'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[1].scope', 'tablet'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[2].data', 'D�bardeur pour l''�t�'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[2].locale', 'fr_FR'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[2].scope', 'ecommerce'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[3].data', 'D�bardeur'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[3].locale', 'fr_FR'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.description[3].scope', 'tablet'
    EXEC sp_OAMethod @json, 'UpdateNull', @success OUT, 'values.price[0].locale'
    EXEC sp_OAMethod @json, 'UpdateNull', @success OUT, 'values.price[0].scope'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.price[0].data[0].amount', '150.5'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.price[0].data[0].currency', 'EUR'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.price[0].data[1].amount', '150'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.price[0].data[1].currency', 'USD'
    EXEC sp_OAMethod @json, 'UpdateNull', @success OUT, 'values.color[0].locale'
    EXEC sp_OAMethod @json, 'UpdateNull', @success OUT, 'values.color[0].scope'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.color[0].data', 'black'
    EXEC sp_OAMethod @json, 'UpdateNull', @success OUT, 'values.size[0].locale'
    EXEC sp_OAMethod @json, 'UpdateNull', @success OUT, 'values.size[0].scope'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'values.size[0].data', 'm'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'associations.PACK.products[0]', 'sunglass'
    EXEC sp_OAMethod @json, 'UpdateNewArray', @success OUT, 'associations.PACK.groups'

    EXEC sp_OASetProperty @json, 'EmitCompact', 0
    --  Show the JSON to be sent..
    EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT
    PRINT @sTmp0

    DECLARE @url nvarchar(4000)
    SELECT @url = 'http://pim.my-akeneo-site.com/api/rest/v1/products'
    DECLARE @resp int
    EXEC @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT

    EXEC sp_OAMethod @http, 'HttpJson', @success OUT, 'POST', @url, @json, 'application/json', @resp
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @resp
        RETURN
      END


    EXEC sp_OAGetProperty @resp, 'StatusCode', @iTmp0 OUT
    PRINT 'Response Status Code: ' + @iTmp0

    PRINT 'Response Body: '
    EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT
    PRINT @sTmp0

    --  The akeneo response will include a "Location" header, such as the following:
    --  HTTP/1.1 201 Created
    --  Date: Tue, 22 Jan 2019 10:36:35 GMT
    --  Server: Apache/2
    --  X-Powered-By: PHP/7.1.25
    --  Cache-Control: max-age=0, private, must-revalidate, no-cache, private
    --  Set-Cookie: abcdefg; path=/; HttpOnly
    --  Location: http://xyz.example.com/api/rest/v1/products/L0000123
    --  Vary: User-Agent
    --  Content-Length: 0
    --  Keep-Alive: timeout=2, max=100
    --  Connection: Keep-Alive
    --  Content-Type: application/json

    --  Get the location header using resp.GetHeaderField
    DECLARE @location nvarchar(4000)
    EXEC sp_OAMethod @resp, 'GetHeaderField', @location OUT, 'Location'

    PRINT 'Location: ' + @location

    EXEC @hr = sp_OADestroy @http
    EXEC @hr = sp_OADestroy @json
    EXEC @hr = sp_OADestroy @resp


END
GO