Sample code for 30+ languages & platforms
Dart

Akeneo: Create New Product

See more HTTP Misc Examples

Demonstrates how to create a new product.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final http = CkHttp();

  // Use your previously obtained access token.
  // See Get Akeneo Access Token
  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": []
  //     }
  //   }
  // }
  // 

  final json = CkJsonObject();
  json.updateString('identifier', 'top');
  json.updateBool('enabled', true);
  json.updateString('family', 'tshirt');
  json.updateString('categories[0]', 'summer_collection');
  json.updateNewArray('groups');
  json.updateNull('parent');
  json.updateString('values.name[0].data', 'Top');
  json.updateString('values.name[0].locale', 'en_US');
  json.updateNull('values.name[0].scope');
  json.updateString('values.name[1].data', 'D�bardeur');
  json.updateString('values.name[1].locale', 'fr_FR');
  json.updateNull('values.name[1].scope');
  json.updateString('values.description[0].data', 'Summer top');
  json.updateString('values.description[0].locale', 'en_US');
  json.updateString('values.description[0].scope', 'ecommerce');
  json.updateString('values.description[1].data', 'Top');
  json.updateString('values.description[1].locale', 'en_US');
  json.updateString('values.description[1].scope', 'tablet');
  json.updateString('values.description[2].data', 'D�bardeur pour l\'�t�');
  json.updateString('values.description[2].locale', 'fr_FR');
  json.updateString('values.description[2].scope', 'ecommerce');
  json.updateString('values.description[3].data', 'D�bardeur');
  json.updateString('values.description[3].locale', 'fr_FR');
  json.updateString('values.description[3].scope', 'tablet');
  json.updateNull('values.price[0].locale');
  json.updateNull('values.price[0].scope');
  json.updateString('values.price[0].data[0].amount', '150.5');
  json.updateString('values.price[0].data[0].currency', 'EUR');
  json.updateString('values.price[0].data[1].amount', '150');
  json.updateString('values.price[0].data[1].currency', 'USD');
  json.updateNull('values.color[0].locale');
  json.updateNull('values.color[0].scope');
  json.updateString('values.color[0].data', 'black');
  json.updateNull('values.size[0].locale');
  json.updateNull('values.size[0].scope');
  json.updateString('values.size[0].data', 'm');
  json.updateString('associations.PACK.products[0]', 'sunglass');
  json.updateNewArray('associations.PACK.groups');

  json.emitCompact = false;
  // Show the JSON to be sent..
  print(json.emit());

  final url = 'http://pim.my-akeneo-site.com/api/rest/v1/products';
  final resp = CkHttpResponse();
  try {
    http.httpJson('POST', url, json, 'application/json', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  print('Response Status Code: ${resp.statusCode}');
  print('Response Body: ');
  print(resp.bodyStr);

  // 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
  final location = resp.getHeaderField('Location');
  print('Location: $location');
}