PHP API Client documentation
#Resources
#Products
#Product
#Get a product
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'identifier' => 'top',
* 'enabled' => true,
* 'family' => 'tshirt',
* 'categories' => ['summer_collection'],
* 'groups' => [],
* 'parent' => null,
* 'values' => [
* 'name' => [
* [
* 'data' => 'Top',
* 'locale' => 'en_US',
* 'scope' => null,
* 'attribute_type' => 'pim_catalog_text'
* ],
* [
* 'data' => 'Débardeur',
* 'locale' => 'fr_FR',
* 'scope' => null,
* 'attribute_type' => 'pim_catalog_text'
* ],
* ],
* ],
* 'created' => '2016-06-23T18:24:44+02:00',
* 'updated' => '2016-06-25T17:56:12+02:00',
* 'associations' => [
* 'PACK' => [
* 'products' => [
* 'sunglass'
* ],
* 'groups' => [],
* 'product_models' => []
* ],
* ],
* 'quantified_associations' => [
* 'PRODUCT_SET' => [
* 'products' => [
* ['identifier' => 'earings', 'quantity' => 2],
* ],
* 'product_models' => [],
* ],
* ],
* ]
*/
$product = $client->getProductApi()->get('top');
You can get more information about the returned format of the product values here.
In the Akeneo PIM Enterprise Edition, the response contains one more field metadata
. Look at the product drafts for an example.
The field product_models
in the associations
property was added in the 2.1 version of the PIM and is therefore not present in previous versions.
The field quantified_associations
is only available since the 5.0.
#Get a list of products
Available in all client versions
There are two ways of getting products. Also, you have a search builder to ease the construction of a research.
Search builder
You can search over the products, thanks to a list of filters. An helper has been added to ease the construction of these filters.
For more information about the available filters and operators that you can use to research a list of products, please refer to this page.
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('enabled', '=', true)
->addFilter('completeness', '>', 70, ['scope' => 'ecommerce'])
->addFilter('completeness', '<', 85, ['scope' => 'ecommerce'])
->addFilter('categories', 'IN', 'winter_collection')
->addFilter('family', 'IN', ['camcorders', 'digital_cameras']);
$searchFilters = $searchBuilder->getFilters();
By getting pages
This method allows to get products page per page, as a classical pagination. You can research products thanks to the search builder.
As for the other entities, it's possible to get the total number of researched products with this method. Also, it's possible to filter the value to return, thanks to the query parameters that are fully described here.
For example, in this example, we only return product values belonging to the channel "ecommerce" by adding the query parameter 'scope' => 'ecommerce'
.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('completeness', '>', 70, ['scope' => 'ecommerce'])
->addFilter('completeness', '<', 85, ['scope' => 'ecommerce']);
$searchFilters = $searchBuilder->getFilters();
// set the limit of 50 products per page, calculate the total number of researched products, apply a research
$firstPage = $client->getProductApi()->listPerPage(50, true, ['search' => $searchFilters, 'scope' => 'ecommerce']);
There is a maximum limit allowed on server side for the parameter limit
.
Setting the parameter with_count
to true
can drastically decrease the performance.
It's recommended to let this parameter with the default value false
if the total number of products is not needed in the response.
You can get more information about this method here.
You can get more information about the available query parameters here.
With a cursor
This method allows to iterate the products. It will automatically get the next pages for you. With this method, it's not possible to get the previous page, or getting the total number of products.
As for the paginated method, the search builder can be used and all query parameters are available, except with_count
.
For example, in this example, we only return product values belonging to the channel "ecommerce" by adding the query parameter 'scope' => 'ecommerce'
.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('completeness', '>', 70, ['scope' => 'ecommerce'])
->addFilter('completeness', '<', 85, ['scope' => 'ecommerce']);
$searchFilters = $searchBuilder->getFilters();
// get a cursor with a page size of 50, apply a research
$products = $client->getProductApi()->all(50, ['search' => $searchFilters, 'scope' => 'ecommerce']);
There is a maximum limit allowed on server side for the parameter pageSize
.
You can get more information about this method here.
You can get more information about the available query parameters here.
#Create a product
Available in all client versions
If the product does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductApi()->create('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,
],
],
'price' => [
[
'data' => [
[
'amount' => '15.5',
'currency' => 'EUR',
],
[
'amount' => '15',
'currency' => 'USD',
],
],
'locale' => null,
'scope' => null,
],
],
]
);
You can get more information about the expected format of the product values here.
#Upsert a product
Available in all client versions
If the product does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductApi()->upsert('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,
],
],
'price' => [
[
'data' => [
[
'amount' => '15.5',
'currency' => 'EUR',
],
[
'amount' => '15',
'currency' => 'USD',
],
],
'locale' => null,
'scope' => null,
],
],
]
);
You can get more information about the expected format of the product values here.
If you are using a v2.0 Enterprise Edition PIM, permissions based on your user groups are applied to the product you try to upsert. If you have edit rights but do not own the product, then it will create a product draft instead of updating the product.
#Upsert a list of products
Available in all client versions
This method allows to create or update a list of products.
It has the same behavior as the upsert
method for a single product, except that the code must be specified in the data of each product.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$responseLines = $client->getProductApi()->upsertList([
[
'identifier' => 'top',
'family' => 'tshirt',
'categories' => ['summer_collection'],
'groups' => [],
'values' => [
'price' => [
[
'data' => [
[
'amount' => '15.5',
'currency' => 'EUR',
],
[
'amount' => '15',
'currency' => 'USD',
],
],
'locale' => null,
'scope' => null,
],
],
],
],
[
'identifier' => 'cap',
'categories' => ['hat'],
],
]);
foreach ($responseLines as $line) {
echo $line['line'];
echo $line['identifier'];
echo $line['status_code'];
if (isset($line['message'])) {
echo $line['message'];
}
}
There is a limit on the maximum number of products that you can upsert in one time on server side. By default this limit is set to 100.
You can get a complete description of the expected format and the returned format here.
#Delete a product
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductApi()->delete('top');
#Product UUID
The following endpoints are largely the same as for products. The difference? Here, you can query, create or update products identified by their uuid. More information here.
#Get a product
Available since client version: 10.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'uuid' => '12951d98-210e-4bRC-ab18-7fdgf1bd14f3',
* 'enabled' => true,
* 'family' => 'tshirt',
* 'categories' => ['summer_collection'],
* 'groups' => [],
* 'parent' => null,
* 'values' => [
* 'sku' => [
* [
* 'locale' => null,
* 'scope' => null,
* 'data' => 'top',
* 'attribute_type' => 'pim_catalog_identifier'
* ]
* ],
* 'name' => [
* [
* 'data' => 'Top',
* 'locale' => 'en_US',
* 'scope' => null,
* 'attribute_type' => 'pim_catalog_text'
* ],
* [
* 'data' => 'Débardeur',
* 'locale' => 'fr_FR',
* 'scope' => null,
* 'attribute_type' => 'pim_catalog_text'
* ],
* ],
* ],
* 'created' => '2022-08-23T18:24:44+02:00',
* 'updated' => '2022-08-25T17:56:12+02:00',
* 'associations' => [
* 'PACK' => [
* 'products' => [
* '12951d98-210e-4bRC-ab18-7fdgf1bd14f5'
* ],
* 'groups' => [],
* 'product_models' => []
* ],
* ],
* 'quantified_associations' => [
* 'PRODUCT_SET' => [
* 'products' => [
* ['uuid' => '12951d98-210e-4bRC-ab18-7fdgf1bd14f4', 'quantity' => 2],
* ],
* 'product_models' => [],
* ],
* ],
* ]
*/
$product = $client->getProductUuidApi()->get('12951d98-210e-4bRC-ab18-7fdgf1bd14f3');
#Get a list of products
Available since client version: 10.0
There are two ways of getting products. Also, you have a search builder to ease the construction of a research.
Search builder
You can search over the products, thanks to a list of filters. An helper has been added to ease the construction of these filters.
For more information about the available filters and operators that you can use to research a list of products, please refer to this page.
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('enabled', '=', true)
->addFilter('completeness', '>', 70, ['scope' => 'ecommerce'])
->addFilter('completeness', '<', 85, ['scope' => 'ecommerce'])
->addFilter('categories', 'IN', 'winter_collection')
->addFilter('family', 'IN', ['camcorders', 'digital_cameras']);
$searchFilters = $searchBuilder->getFilters();
By getting pages
This method allows to get products page per page, as a classical pagination. You can research products thanks to the search builder.
As for the other entities, it's possible to get the total number of researched products with this method. Also, it's possible to filter the value to return, thanks to the query parameters that are fully described here.
For example, in this example, we only return product values belonging to the channel "ecommerce" by adding the query parameter 'scope' => 'ecommerce'
.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('completeness', '>', 70, ['scope' => 'ecommerce'])
->addFilter('completeness', '<', 85, ['scope' => 'ecommerce']);
$searchFilters = $searchBuilder->getFilters();
// set the limit of 50 products per page, calculate the total number of researched products, apply a research
$firstPage = $client->getProductUuidApi()->listPerPage(50, true, ['search' => $searchFilters, 'scope' => 'ecommerce']);
There is a maximum limit allowed on server side for the parameter limit
.
Setting the parameter with_count
to true
can drastically decrease the performance.
It's recommended to let this parameter with the default value false
if the total number of products is not needed in the response.
You can get more information about this method here.
You can get more information about the available query parameters here.
With a cursor
This method allows to iterate the products. It will automatically get the next pages for you. With this method, it's not possible to get the previous page, or getting the total number of products.
As for the paginated method, the search builder can be used and all query parameters are available, except with_count
.
For example, in this example, we only return product values belonging to the channel "ecommerce" by adding the query parameter 'scope' => 'ecommerce'
.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('completeness', '>', 70, ['scope' => 'ecommerce'])
->addFilter('completeness', '<', 85, ['scope' => 'ecommerce']);
$searchFilters = $searchBuilder->getFilters();
// get a cursor with a page size of 50, apply a research
$products = $client->getProductUuidApi()->all(50, ['search' => $searchFilters, 'scope' => 'ecommerce']);
There is a maximum limit allowed on server side for the parameter pageSize
.
You can get more information about this method here.
You can get more information about the available query parameters here.
#Create a product
Available since client version: 10.0
If the product does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductUuidApi()->create('844c736b-a19b-48a6-a354-6056044729f0', [
'uuid' => '844c736b-a19b-48a6-a354-6056044729f0',
'enabled' => true,
'family' => 'tshirt',
'categories' => ['summer_collection'],
'groups' => [],
'parent'=> null,
'values' => [
'sku' => [
[
'locale' => null,
'scope' => null,
'data' => 'top'
]
],
'name' => [
[
'data' => 'top',
'locale' => 'en_US',
'scope' => null,
],
[
'data' => 'Débardeur',
'locale' => 'fr_FR',
'scope' => null,
],
],
'price' => [
[
'data' => [
[
'amount' => '15.5',
'currency' => 'EUR',
],
[
'amount' => '15',
'currency' => 'USD',
],
],
'locale' => null,
'scope' => null,
],
],
]
);
You can get more information about the expected format of the product values here.
#Upsert a product
Available since client version: 10.0
If the product does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductUuidApi()->upsert('844c736b-a19b-48a6-a354-6056044729f0', [
'uuid' => '844c736b-a19b-48a6-a354-6056044729f0',
'enabled' => true,
'family' => 'tshirt',
'categories' => ['summer_collection'],
'groups' => [],
'parent'=> null,
'values' => [
'sku' => [
[
'locale' => null,
'scope' => null,
'data' => 'top'
]
],
'name' => [
[
'data' => 'top',
'locale' => 'en_US',
'scope' => null,
],
[
'data' => 'Débardeur',
'locale' => 'fr_FR',
'scope' => null,
],
],
'price' => [
[
'data' => [
[
'amount' => '15.5',
'currency' => 'EUR',
],
[
'amount' => '15',
'currency' => 'USD',
],
],
'locale' => null,
'scope' => null,
],
],
]
);
You can get more information about the expected format of the product values here.
#Upsert a list of products
Available since client version: 10.0
This method allows to create or update a list of products.
It has the same behavior as the upsert
method for a single product, except that the code must be specified in the data of each product.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$responseLines = $client->getProductUuidApi()->upsertList([
[
'uuid' => '12951d98-210e-4bRC-ab18-7fdgf1bd14f3',
'family' => 'tshirt',
'categories' => ['summer_collection'],
'groups' => [],
'values' => [
'sku' => [
[
'locale' => null,
'scope' => null,
'data' => 'top'
]
],
'price' => [
[
'data' => [
[
'amount' => '15.5',
'currency' => 'EUR',
],
[
'amount' => '15',
'currency' => 'USD',
],
],
'locale' => null,
'scope' => null,
],
],
],
],
[
'uuid' => '12951d98-210e-4bRC-ab18-7fdgf1bd14f4',
'categories' => ['hat'],
],
]);
foreach ($responseLines as $line) {
echo $line['line'];
echo $line['uuid'];
echo $line['status_code'];
if (isset($line['message'])) {
echo $line['message'];
}
}
There is a limit on the maximum number of products that you can upsert in one time on server side. By default this limit is set to 100.
You can get a complete description of the expected format and the returned format here.
#Delete a product
Available since client version: 10.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductUuidApi()->delete('12951d98-210e-4bRC-ab18-7fdgf1bd14f4');
#Product model
#Get a product model
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'rain_boots_red',
* 'family_variant' => 'boots_color_size',
* 'parent' => 'rain_boots',
* 'categories' => ['2014_collection', 'winter_collection', 'winter_boots'],
* 'values' => [
* 'name' => [
* [
* 'locale' => 'en_US',
* 'scope' => null,
* 'data' => 'Red rain boots',
* ]
* ],
* ],
* 'associations' => [
* 'PACK' => [
* 'products' => [
* 'sunglass'
* ],
* 'groups' => [],
* 'product_models' => []
* ],
* ],
* 'quantified_associations' => [
* 'PRODUCT_SET' => [
* 'products' => [
* ['identifier' => 'earings', 'quantity' => 2],
* ],
* 'product_models' => [],
* ],
* ],
* 'created' => '2017-10-17T14:12:35+00:00',
* 'updated' => '2017-10-17T14:12:35+00:00'
* ]
*/
$productModel = $client->getProductModelApi()->get('rain_boots_red');
You can get more information about the returned format of the product values here.
Since the 2.3 version, in the Akeneo PIM Enterprise Edition, the response contains one more field metadata
. Look at the product model drafts for an example.
#Get a list of product models
Available in all client versions
There are two ways of getting product models.
Search builder
This feature is only available since the version 3.0 of the PHP API client. Also it was added in the 2.3 version of the PIM and is therefore not present in previous versions.
You can search over the product models, thanks to a list of filters. A helper has been added to ease the construction of these filters.
For more information about the available filters and operators that you can use to search a list of product models, please refer to this page.
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('completeness', 'AT LEAST COMPLETE', ['locale' => 'en_US'])
->addFilter('completeness', 'ALL COMPLETE', ['scope' => 'ecommerce'])
->addFilter('categories', 'IN', 'winter_collection');
$searchFilters = $searchBuilder->getFilters();
By getting pages
This method allows you to get product models page per page, as a classical pagination.
It's possible to get the total number of product models with this method.
As for the paginated method, since the 3.0 version of the PHP client, the search builder can be used and all query parameters are available, except with_count
.
For example, we only return product values belonging to the channel "ecommerce" by adding the query parameter 'scope' => 'ecommerce'
.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('completeness', 'ALL COMPLETE', ['locale' => 'en_US', 'scope' => 'ecommerce']);
$searchFilters = $searchBuilder->getFilters();
// get a cursor with a page size of 50, apply a search
$products = $client->getProductModelApi()->all(50, ['search' => $searchFilters, 'scope' => 'ecommerce']);
There is a maximum limit allowed on server side for the parameter limit
.
Setting the parameter with_count
to true
can drastically decrease the performance.
It's recommended to let this parameter with the default value false
if the total number of product models is not needed in the response.
You can get more information about this method here.
With a cursor
This method allows you to iterate the product models. It will automatically get the next pages for you. With this method, it's not possible to get the previous page, or get the total number of product models.
As for the paginated method, since the 3.0 version of the PHP client, the search builder can be used and all query parameters are available, except with_count
.
For example, in this example, we only return product values belonging to the channel "ecommerce" by adding the query parameter 'scope' => 'ecommerce'
.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('completeness', 'ALL COMPLETE', ['locale' => 'en_US']);
$searchFilters = $searchBuilder->getFilters();
// get a cursor with a page size of 50, apply a research
$productModels = $client->getProductModelApi()->all(50, ['search' => $searchFilters, 'scope' => 'ecommerce']);
There is a maximum limit allowed on server side for the parameter pageSize
.
You can get more information about this method here.
You can get more information about the available query parameters here.
#Create a product model
Available in all client versions
If the product model does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductModelApi()->create('saddle_rain_boots', [
'family_variant' => 'boots_color_size',
'parent' => 'rain_boots',
'categories' => ['2014_collection', 'winter_boots', 'winter_collection'],
'values' => [
'name' => [
[
'locale' => 'en_US',
'scope' => null,
'data' => 'Saddle rain boots',
]
],
'color' => [
[
'locale' => null,
'scope' => null,
'data' => 'saddle'
]
]
]
]);
Product model values use the same format as the product values. If you want to know more, take a look at here.
#Upsert a product model
Available in all client versions
If the product model does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductModelApi()->upsert('rain_boots_red', [
'categories' => ['2014_collection', 'winter_boots']
]);
#Upsert a list of product models
Available in all client versions
This method allows to create or update a list of product models.
It has the same behavior as the upsert
method for a single product model, except that the code must be specified in the data of each product models.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$responseLines = $client->getProductModelApi()->upsertList([
[
'code' => 'rain_boots_red',
'family_variant' => 'rain_boots_color_size',
'parent' => 'rain_boots',
'categories' => ['2014_collection', 'winter_boots']
],
[
'code' => 'rain_boots_saddle',
'family_variant' => 'rain_boots_color_size',
'parent' => 'rain_boots',
'categories' => ['2014_collection', 'winter_boots'],
'values' => [
'description' => [
[
'locale' => 'en_US',
'scope' => 'ecommerce',
'data' => 'Saddle rain boots made of rubber for winter.'
]
]
]
]
]);
foreach ($responseLines as $line) {
echo $line['line'];
echo $line['identifier'];
echo $line['status_code'];
if (isset($line['message'])) {
echo $line['message'];
}
}
There is a limit on the maximum number of product models that you can upsert in one time on server side. By default this limit is set to 100.
#Product draft UUID
The following endpoints are largely the same as for products. The difference? Here, you can query or drafts identified by their uuid. More information here.
#Get a product draft
Available since client version: 10.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'uuid' => '12951d98-210e-4bRC-ab18-7fdgf1bd14f3',
* 'enabled' => true,
* 'family' => 'tshirt',
* 'categories' => ['summer_collection'],
* 'groups' => [],
* 'values' => [
* 'sku' => [
* [
* 'locale' => null,
* 'scope' => null,
* 'data' => 'top'
* ]
* ],
* 'name' => [
* [
* 'data' => 'Top',
* 'locale' => 'en_US',
* 'scope' => null
* ],
* [
* 'data' => 'Débardeur',
* 'locale' => 'fr_FR',
* 'scope' => null
* ],
* ],
* ],
* 'created' => '2016-06-23T18:24:44+02:00',
* 'updated' => '2016-06-25T17:56:12+02:00',
* 'associations' => [
* 'PACK' => [
* 'products' => [
* 'sunglass'
* ],
* 'groups' => [],
* 'product_models' => []
* ],
* ],
* 'quantified_associations' => [
* 'PRODUCT_SET' => [
* 'products' => [
* ['uuid' => '5719e119-613c-49af-9244-fa39a9e0cb1d', 'quantity' => 2],
* ],
* 'product_models' => [],
* ],
* ],
* 'metadata' => [
* 'workflow_status' => 'draft_in_progress',
* ],
* ]
*/
$draftProduct = $client->getProductDraftUuidApi()->get('12951d98-210e-4bRC-ab18-7fdgf1bd14f3');
You can get more information about the returned format of the product values here.
The field metadata
is specific to Akeneo PIM Enterprise Edition. The status of the draft is specified in this field.
#Submit a product draft for approval
Available since client version: 10.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductDraftUuidApi()->submitForApproval('12951d98-210e-4bRC-ab18-7fdgf1bd14f3');
It is mandatory that the user already created a draft for this product, and that this draft was not approved yet.
#Async Calls
Available since client version: 11.3
$upsertListResponseFactory = new UpsertResourceListResponseFactory();
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'username', 'password');
$promise = $client->getProductApi()->upsertAsyncList($productToUpsert);
$response = $upsertListResponseFactory->create($promise->wait()->getBody());
All the requests are synchronous by default. But since the version 11.3 of the PHP client, you can now use asynchronous requests on all resources available through the API. For example, to upsert asynchronously a list of resources, you need to use the upsertAsyncList
method instead of the upsertList
one. This method returns a promise that you can wait for to get the response.
#Product draft
#Get a product draft
Available in all client versions | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'identifier' => 'top',
* 'enabled' => true,
* 'family' => 'tshirt',
* 'categories' => ['summer_collection'],
* 'groups' => [],
* 'values' => [
* 'name' => [
* [
* 'data' => 'Top',
* 'locale' => 'en_US',
* 'scope' => null
* ],
* [
* 'data' => 'Débardeur',
* 'locale' => 'fr_FR',
* 'scope' => null
* ],
* ],
* ],
* 'created' => '2016-06-23T18:24:44+02:00',
* 'updated' => '2016-06-25T17:56:12+02:00',
* 'associations' => [
* 'PACK' => [
* 'products' => [
* 'sunglass'
* ],
* 'groups' => [],
* 'product_models' => []
* ],
* ],
* 'quantified_associations' => [
* 'PRODUCT_SET' => [
* 'products' => [
* ['identifier' => 'earings', 'quantity' => 2],
* ],
* 'product_models' => [],
* ],
* ],
* 'metadata' => [
* 'workflow_status' => 'draft_in_progress',
* ],
* ]
*/
$draftProduct = $client->getProductDraftApi()->get('top');
You can get more information about the returned format of the product values here.
The field metadata
is specific to Akeneo PIM Enterprise Edition. The status of the draft is specified in this field.
The field product_models
in the associations
property was added in the 2.1 version of the PIM and is therefore not present in previous versions.
The field quantified_associations
is only available since the 5.0.
#Submit a product draft for approval
Available in all client versions | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductDraftApi()->submitForApproval('top');
It is mandatory that the user already created a draft for the product top
, and that this draft was not approved yet.
#Product media file
#Get media file information
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'code/example',
* 'original_filename' => 'ziggy.jpg',
* 'mime_type' => 'image/jpeg',
* 'size' => 1337,
* 'extension' => 'jpg',
* '_links' => [
* 'download' => [
* 'href' => 'http://localhost/api/rest/v1/media-files/code/example/download',
* ],
* ],
* ];
*/
$media = $client->getProductMediaFileApi()->get('code/example');
#Download media file
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$mediaFile = $client->getProductMediaFileApi()->download('code/example');
file_put_contents('/tmp/ziggy.jpg', $mediaFile->getContents());
From the v4 of the PHP client, the response is returned instead of the content. It allows getting the filename and the MIME type from the response. You can get the content this way:
file_put_contents('/tmp/bridge.jpg', $mediaFile->getBody()->getContents());
#Get a list of media file information
Available in all client versions
There are two ways of getting media files.
By getting pages
This method allows to get media files page per page, as a classical pagination.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getProductMediaFileApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the media files. It will automatically get the next pages for you. With this method, it's not possible to get the previous page, or getting the total number of media files.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
// get a cursor with a page size of 50, apply a research
$mediaFiles = $client->getProductMediaFileApi()->all(50);
You can get more information about this method here.
#Create a new media file
Available in all client versions
When you create a media file, you can directly associate it to either a product or a product model.
Association to a product
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductMediaFileApi()->create('/tmp/ziggy.jpg', [
'identifier' => 'medium_boot',
'attribute' => 'side_view',
'scope' => 'ecommerce',
'locale' => 'en_US',
]);
Association to a product model
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductMediaFileApi()->create('/tmp/ziggy.jpg', [
'code' => 'rain_boots',
'attribute' => 'product_model_media',
'scope' => null,
'locale' => 'en_US',
'type' => 'product_model',
]);
#Product model draft
#Get a product model draft
Available since client version: 3.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'rain_boots_red',
* 'family_variant' => 'boots_color_size',
* 'parent' => 'rain_boots',
* 'categories' => ['2014_collection', 'winter_collection', 'winter_boots'],
* 'values' => [
* 'name' => [
* [
* 'locale' => 'en_US',
* 'scope' => null,
* 'data' => 'Red rain boots',
* ]
* ],
* ],
* 'associations' => [
* 'PACK' => [
* 'products' => [
* 'sunglass'
* ],
* 'groups' => [],
* 'product_models' => []
* ],
* ],
* 'quantified_associations' => [
* 'PRODUCT_SET' => [
* 'products' => [
* ['identifier' => 'earings', 'quantity' => 2],
* ],
* 'product_models' => [],
* ],
* ],
* 'created' => '2017-10-17T14:12:35+00:00',
* 'updated' => '2017-10-17T14:12:35+00:00',
* 'metadata' => [
* 'workflow_status' => 'draft_in_progress',
* ],
* ]
*/
$draftProduct = $client->getProductModelDraftApi()->get('rain_boots_red');
You can get more information about the returned format of the product values here.
The field metadata
is specific to Akeneo PIM Enterprise Edition. The status of the draft is specified in this field.
#Submit a product model draft for approval
Available since client version: 3.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getProductModelDraftApi()->submitForApproval('rain_boots_red');
It is mandatory that the user already created a draft for the product model rain_boots_red
, and that this draft was not approved yet.
#Published product - Deprecated
#Get a published product
Available in all client versions | Only available for PIM EE
Important update: Published Products discontinuation. This feature is no longer actively supported and will soon be retired. We recommend exploring alternative solutions. Learn more in the help center
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'identifier' => 'top',
* 'enabled' => true,
* 'family' => 'tshirt',
* 'categories' => ['summer_collection'],
* 'groups' => [],
* 'values' => [
* 'name' => [
* [
* 'data' => 'Top',
* 'locale' => 'en_US',
* 'scope' => null
* ],
* [
* 'data' => 'Débardeur',
* 'locale' => 'fr_FR',
* 'scope' => null
* ],
* ],
* ],
* 'created' => '2016-06-23T18:24:44+02:00',
* 'updated' => '2016-06-25T17:56:12+02:00',
* 'associations' => [
* 'PACK' => [
* 'products' => [
* 'sunglass'
* ],
* 'groups' => [],
* 'product_models' => []
* ],
* ],
* ]
*/
$publishedProduct = $client->getPublishedProductApi()->get('top');
You can get more information about the returned format of the product values here.
The field product_models
in the associations
property was added in the 2.1 version of the PIM and is therefore not present in previous versions.
The field quantified_associations
is only available since the 5.0.
#Get a list of published products
Available in all client versions | Only available for PIM EE
There are two ways of getting published products. Like for the products, you can use the search builder to ease the construction of a research.
By getting pages
This method allows to get published products page per page, as a classical pagination. You can research published products thanks to the search builder.
As for the other entities, it's possible to get the total number of researched published products with this method. Also, it's possible to filter the value to return, thanks to the query parameters that are fully described here.
For example, in this example, we only return product values belonging to the channel "ecommerce" by adding the query parameter 'scope' => 'ecommerce'
.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('completeness', '>', 70, ['scope' => 'ecommerce'])
->addFilter('completeness', '<', 85, ['scope' => 'ecommerce']);
$searchFilters = $searchBuilder->getFilters();
// set the limit of 50 published products per page, calculate the total number of researched published products, apply a research
$firstPage = $client->getPublishedProductApi()->listPerPage(50, true, ['search' => $searchFilters, 'scope' => 'ecommerce']);
There is a maximum limit allowed on server side for the parameter limit
.
Setting the parameter with_count
to true
can drastically decrease the performance.
It's recommended to let this parameter with the default value false
if the total number of published products is not needed in the response.
You can get more information about this method here.
You can get more information about the available query parameters here.
With a cursor
This method allows to iterate the published products. It will automatically get the next pages for you. With this method, it's not possible to get the previous page, or getting the total number of published products.
As for the paginated method, the search builder can be used and all query parameters are available, except with_count
.
For example, in this example, we only return product values belonging to the channel "ecommerce" by adding the query parameter 'scope' => 'ecommerce'
.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder
->addFilter('completeness', '>', 70, ['scope' => 'ecommerce'])
->addFilter('completeness', '8', 85, ['scope' => 'ecommerce']);
$searchFilters = $searchBuilder->getFilters();
// get a cursor with a page size of 50, apply a research
$publishedProducts = $client->getPublishedProductApi()->all(50, ['search' => $searchFilters, 'scope' => 'ecommerce']);
There is a maximum limit allowed on server side for the parameter pageSize
.
You can get more information about this method here.
You can get more information about the available query parameters here.
#Catalog structure
#Association type
#Get an association type
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'X_SELL',
* 'labels' => [
* 'en_US' => 'Cross sell',
* 'fr_FR' => 'Vente croisée',
* ],
* 'is_quantified' => false,
* 'is_two_way' => false,
* ]
*/
$associationType = $client->getAssociationTypeApi()->get('X_SELL');
#Get a list of association types
Available in all client versions
There are two ways of getting association types.
By getting pages
This method allows to get association types page per page, as a classical pagination.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getAssociationTypeApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the association types. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$associationTypes = $client->getAssociationTypeApi()->all(50);
You can get more information about this method here.
#Create an association type
Available in all client versions
If the association type does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssociationTypeApi()->create('NEW_SELL', [
'labels' => [
'en_US' => 'New sell',
'fr_FR' => 'Nouvelle vente',
]
]);
#Upsert an association type
Available in all client versions
If the association type does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssociationTypeApi()->upsert('NEW_SELL', [
'labels' => [
'en_US' => 'New sell',
'fr_FR' => 'Nouvelle vente',
]
]);
#Upsert a list of association types
Available in all client versions
This method allows to create or update a list of association types.
It has the same behavior as the upsert
method for a single association type, except that the code must be specified in the data of each association type.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssociationTypeApi()->upsertList([
[
'code' => 'NEW_SELL',
'labels' => [
'en_US' => 'New sell',
'fr_FR' => 'Nouvelle vente',
]
],
[
'code' => 'UPSELL',
'labels' => [
'en_US' => 'Upsell',
'fr_FR' => 'Vente incitative',
]
],
]);
There is a limit on the maximum number of association types that you can upsert in one time on server side. By default this limit is set to 100.
#Attribute group
#Get an attribute group
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'marketing',
* 'attributes' => ['sku', 'name', 'description', 'response_time', 'release_date', 'price'],
* 'sort_order' => 4,
* 'labels' => [
* 'en_US' => 'Marketing',
* 'fr_FR' => 'Marketing',
* ],
* ]
*/
$attributeGroup = $client->getAttributeGroupApi()->get('marketing');
#Get a list of attribute groups
Available in all client versions
There are two ways of getting attribute groups.
By getting pages
This method allows to get attribute groups page per page, as a classical pagination.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getAttributeGroupApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the attribute groups. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$attributeGroups = $client->getAttributeGroupApi()->all(50);
You can get more information about this method here.
#Create an attribute group
Available in all client versions
If the attribute group does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAttributeGroupApi()->create('media', [
'attribute' => ['side_view'],
'labels' => [
'en_US' => 'Media',
'fr_FR' => 'Médias',
]
]);
#Upsert an attribute group
Available in all client versions
If the attribute group does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAttributeGroupApi()->upsert('marketing', [
'attributes' => ['sku', 'name', 'description'],
'labels' => [
'en_US' => 'Marketing',
'fr_FR' => 'Marketing',
]
]);
#Upsert a list of attribute groups
Available in all client versions
This method allows to create or update a list of attribute groups.
It has the same behavior as the upsert
method for a single attribute group, except that the code must be specified in the data of each attribute group.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAttributeGroupApi()->upsertList([
[
'code' => 'marketing',
'attributes' => ['sku', 'name', 'description'],
'labels' => [
'en_US' => 'Marketing',
'fr_FR' => 'Marketing',
]
],
[
'code' => 'media',
'attribute' => ['side_view'],
'labels' => [
'en_US' => 'Media',
'fr_FR' => 'Médias',
]
],
]);
There is a limit on the maximum number of attribute groups that you can upsert in one time on server side. By default this limit is set to 100.
#Attribute option
#Get an attribute option
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'black',
* 'attribute' => 'a_simple_select',
* 'sort_order' => 2,
* 'labels' => [
* 'en_US' => 'Black',
* 'fr_FR' => 'Noir',
* ]
* ]
*/
$attributeOption = $client->getAttributeOptionApi()->get('a_simple_select', 'black');
#Get a list of attribute options
Available in all client versions
There are two ways of getting attribute options.
By getting pages
This method allows to get attribute options page per page, as a classical pagination.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getAttributeOptionApi()->listPerPage('a_simple_select', 50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the attribute options. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$attributes = $client->getAttributeOptionApi()->all('a_simple_select', 50);
You can get more information about this method here.
#Create an attribute
Available in all client versions
If the attribute option does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAttributeOptionApi()->create('a_simple_select', 'black', [
'sort_order' => 2,
'labels' => [
'en_US' => 'Black',
'fr_FR' => 'Noir',
]
]);
#Upsert an attribute option
Available in all client versions
If the attribute option does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAttributeOptionApi()->upsert('a_simple_select', 'black', [
'sort_order' => 2,
'labels' => [
'en_US' => 'Black',
'fr_FR' => 'Noir',
]
]);
#Upsert a list of attribute options
Available since client version: 2.0
This method allows to create or update a list of attribute options.
It has the same behavior as the upsert
method for a single attribute option, except that the code and the attribute must be specified in the data of each attribute option.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAttributeOptionApi()->upsertList('a_simple_select',
[
[
'code' => 'black',
'sort_order' => 2,
'labels' => [
'en_US' => 'Black',
'fr_FR' => 'Noir',
]
],
[
'code' => 'white',
'sort_order' => 3,
'labels' => [
'en_US' => 'White',
'fr_FR' => 'Blanc',
],
],
]);
There is a limit on the maximum number of attribute options that you can upsert in one time on server side. By default this limit is set to 100.
#Attribute
#Get an attribute
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'release_date',
* 'type' => 'pim_catalog_date',
* 'group' => 'marketing',
* 'unique' => false,
* 'useable_as_grid_filter' => true,
* 'allowed_extensions' => [],
* 'metric_family' => null,
* 'default_metric_unit' => null,
* 'reference_data_name' => null,
* 'available_locales' => [],
* 'max_characters' => null,
* 'validation_rule' => null,
* 'validation_regexp' => null,
* 'wysiwyg_enabled' => null,
* 'number_min' => null,
* 'number_max' => null,
* 'decimals_allowed' => null,
* 'negative_allowed' => null,
* 'date_min' => '2017-06-28T08:00:00',
* 'date_max' => '2017-08-08T22:00:00',
* 'max_file_size' => null,
* 'minimum_input_length' => null,
* 'sort_order' => 1,
* 'localizable' => false,
* 'scopable' => false,
* 'labels' => [
* 'en_US' => 'Sale date',
* 'fr_FR' => 'Date des soldes',
* ],
* 'guidelines' => [
* 'en_US' => 'Fill the release date for the summer sale 2017',
* 'fr_FR' => 'Renseigner la date des soldes pour l\'été 2017',
* ],
* ]
*/
$attribute = $client->getAttributeApi()->get('release_date');
#Get a list of attributes
Available in all client versions
There are two ways of getting attributes.
By getting page
This method allows to get attributes page per page, as a classical pagination. It's possible to get the total number of attributes with this method.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getAttributeApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the attributes. It will automatically get the next pages for you. With this method, it's not possible to get the previous page, or getting the total number of attributes.
$client = (new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/'))->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$attributes = $client->getAttributeApi()->all(50);
You can get more information about this method here.
#Create an attribute
Available in all client versions
If the attribute does not exist yet, this method creates it, otherwise it throws an exception.
$client = (new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/'))->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAttributeApi()->create('release_date', [
'type' => 'pim_catalog_date',
'group' => 'marketing',
'unique' => false,
'useable_as_grid_filter' => true,
'allowed_extensions' => [],
'metric_family' => null,
'default_metric_unit' => null,
'reference_data_name' => null,
'available_locales' => [],
'max_characters' => null,
'validation_rule' => null,
'validation_regexp' => null,
'wysiwyg_enabled' => null,
'number_min' => null,
'number_max' => null,
'decimals_allowed' => null,
'negative_allowed' => null,
'date_min' => '2017-06-28T08:00:00',
'date_max' => '2017-08-08T22:00:00',
'max_file_size' => null,
'minimum_input_length' => null,
'sort_order' => 1,
'localizable' => false,
'scopable' => false,
'labels' => [
'en_US' => 'Sale date',
'fr_FR' => 'Date des soldes',
],
'guidelines' => [
'en_US' => 'Fill the release date for the summer sale 2017',
'fr_FR' => 'Renseigner la date des soldes pour l\'été 2017',
],
]);
#Upsert an attribute
Available in all client versions
If the attribute does not exist yet, this method creates it, otherwise it updates it.
$client = (new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/'))->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAttributeApi()->upsert('release_date', [
'type' => 'pim_catalog_date',
'group' => 'marketing',
'unique' => false,
'useable_as_grid_filter' => true,
'allowed_extensions' => [],
'metric_family' => null,
'default_metric_unit' => null,
'reference_data_name' => null,
'available_locales' => [],
'max_characters' => null,
'validation_rule' => null,
'validation_regexp' => null,
'wysiwyg_enabled' => null,
'number_min' => null,
'number_max' => null,
'decimals_allowed' => null,
'negative_allowed' => null,
'date_min' => '2017-06-28T08:00:00',
'date_max' => '2017-08-08T22:00:00',
'max_file_size' => null,
'minimum_input_length' => null,
'sort_order' => 1,
'localizable' => false,
'scopable' => false,
'labels' => [
'en_US' => 'Sale date',
'fr_FR' => 'Date des soldes',
],
'guidelines' => [
'en_US' => 'Fill the release date for the summer sale 2017',
'fr_FR' => 'Renseigner la date des soldes pour l\'été 2017',
],
]);
#Upsert a list of attributes
Available in all client versions
This method allows to create or update a list of attributes.
It has the same behavior as the upsert
method for a single attribute, except that the code must be specified in the data of each attribute.
$client = (new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/'))->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAttributeApi()->upsertList([
[
'code' => 'release_date',
'type' => 'pim_catalog_date',
'group' => 'marketing',
'unique' => false,
'useable_as_grid_filter' => true,
'allowed_extensions' => [],
'metric_family' => null,
'default_metric_unit' => null,
'reference_data_name' => null,
'available_locales' => [],
'max_characters' => null,
'validation_rule' => null,
'validation_regexp' => null,
'wysiwyg_enabled' => null,
'number_min' => null,
'number_max' => null,
'decimals_allowed' => null,
'negative_allowed' => null,
'date_min' => '2017-06-28T08:00:00',
'date_max' => '2017-08-08T22:00:00',
'max_file_size' => null,
'minimum_input_length' => null,
'sort_order' => 1,
'localizable' => false,
'scopable' => false,
'labels' => [
'en_US' => 'Sale date',
'fr_FR' => 'Date des soldes',
],
'guidelines' => [
'en_US' => 'Fill the release date for the summer sale 2017',
'fr_FR' => 'Renseigner la date des soldes pour l\'été 2017',
],
],
[
'code' => 'name',
'type' => 'pim_catalog_text',
'labels' => [
'en_US' => 'Name',
'fr_FR' => 'Nom',
]
],
]);
There is a limit on the maximum number of attributes that you can upsert in one time on server side. By default this limit is set to 100.
#Category
#Get a category
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'winter_collection',
* 'parent' => 'master',
* 'labels' => [
* 'en_US' => 'Winter collection',
* 'fr_FR' => 'Collection hiver',
* ]
* ]
*/
$category = $client->getCategoryApi()->get('master');
#Get a list of categories
Available in all client versions
There are two ways of getting categories.
By getting pages
This method allows to get categories page per page, as a classical pagination.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getCategoryApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the categories. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$categories = $client->getCategoryApi()->all(50);
You can get more information about this method here.
#Create a category
Available in all client versions
If the category does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getCategoryApi()->create('winter_collection', [
'parent' => 'master',
'labels' => [
'en_US' => 'Winter collection',
'fr_FR' => 'Collection hiver',
]
]);
#Upsert a category
Available in all client versions
If the category does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getCategoryApi()->upsert('winter_collection', [
'parent' => 'master',
'labels' => [
'en_US' => 'Winter collection',
'fr_FR' => 'Collection hiver',
]
]);
#Upsert a list of categories
Available in all client versions
This method allows to create or update a list of categories.
It has the same behavior as the upsert
method for a single category, except that the code must be specified in the data of each category.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getCategoryApi()->upsertList([
[
'code' => 'winter_collection',
'parent' => 'master',
'labels' => [
'en_US' => 'Winter collection',
'fr_FR' => 'Collection hiver',
]
],
[
'code' => 'helicopter',
'parent' => 'machine',
'labels' => [
'en_US' => 'Helicopter',
'fr_FR' => 'Hélicoptere',
]
],
]);
There is a limit on the maximum number of categories that you can upsert in one time on server side. By default this limit is set to 100.
#Category media file
#Download media file
Available since client version: 11.2.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$mediaFile = $client->getCategoryMediaFileApi()->download('code/example');
file_put_contents('/tmp/ziggy.jpg', $mediaFile->getBody());
#Get categories with attribute values
Available since client version: 11.2.0
$firstPage = $client->getCategoryApi()->listPerPage(50, true, ['with_enriched_attributes' => true]);
foreach ($firstPage->getItems() as $category) {
foreach ($category['values'] as $value) {
if ($value['type'] === 'image') {
$filePath = $value['data']['file_path'];
// Download image file for attribute of type image
$mediaFile = $client->getCategoryMediaFileApi()->download($filePath);
file_put_contents(
'/tmp/' . $value['attribute_code'] . $value['data']['extension'],
$mediaFile->getBody()
);
}
}
}
#Family
#Get a family
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'caps',
* 'attributes' => ['sku', 'name', 'description', 'price', 'color'],
* 'attribute_as_label' => 'name',
* 'attribute_as_image' => 'picture',
* 'attribute_requirements' => [
* 'ecommerce' => ['sku', 'name', 'description', 'price', 'color'],
* 'tablet' => ['sku', 'name', 'description', 'price'],
* ],
* 'labels' => [
* 'en_US' => 'Caps',
* 'fr_FR' => 'Casquettes',
* ]
* ]
*/
$family = $client->getFamilyApi()->get('master');
#Get a list of families
Available in all client versions
There are two ways of getting families.
By getting pages
This method allows to get families page per page, as a classical pagination. It's possible to get the total number of families with this method.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getFamilyApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the families. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$families = $client->getFamilyApi()->all(50);
You can get more information about this method here.
#Create a family
Available in all client versions
If the family does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/', 'client_id', 'secret', 'admin', 'admin')->build()
$client->getFamilyApi()->create('caps', [
'attributes' => ['sku', 'name', 'description', 'price', 'color'],
'attribute_as_label' => 'name',
'attribute_as_image' => 'picture',
'attribute_requirements' => [
'ecommerce' => ['sku', 'name', 'description', 'price', 'color'],
'tablet' => ['sku', 'name', 'description', 'price'],
],
'labels' => [
'en_US' => 'Caps',
'fr_FR' => 'Casquettes',
]
]);
#Upsert a family
Available in all client versions
If the family does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getFamilyApi()->upsert('cap', [
'attributes' => ['sku', 'name', 'description', 'price', 'color'],
'attribute_as_label' => 'name',
'attribute_as_image' => 'picture',
'attribute_requirements' => [
'ecommerce' => ['sku', 'name', 'description', 'price', 'color'],
'tablet' => ['sku', 'name', 'description', 'price'],
],
'labels' => [
'en_US' => 'Caps',
'fr_FR' => 'Casquettes',
]
]);
#Upsert a list of families
Available in all client versions
This method allows to create or update a list of families.
It has the same behavior as the upsert
method for a single family, except that the code must be specified in the data of each family.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getFamilyApi()->upsertList([
[
'code' => 'caps',
'attributes' => ['sku', 'name', 'description', 'price', 'color'],
'attribute_as_label' => 'name',
'attribute_as_image' => 'picture',
'attribute_requirements' => [
'ecommerce' => ['sku', 'name', 'description', 'price', 'color'],
'tablet' => ['sku', 'name', 'description', 'price'],
],
'labels' => [
'en_US' => 'Caps',
'fr_FR' => 'Casquettes',
]
],
[
'code' => 'hat',
'attributes' => ['sku', 'name', 'description', 'price', 'color'],
'attribute_as_label' => 'name',
'attribute_as_image' => 'picture',
'attribute_requirements' => [
'ecommerce' => ['sku', 'name', 'color'],
'tablet' => ['sku', 'name'],
],
'labels' => [
'en_US' => 'Hat',
'fr_FR' => 'Chapeau',
]
],
]);
There is a limit on the maximum number of families that you can upsert in one time on server side. By default this limit is set to 100.
#Family variant
#Get a family variant
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'boots_color_size',
* 'labels' => [
* 'de_DE' => 'Stiefel nach Farbe und Größe',
* 'en_US' => 'Boots by color and size',
* 'fr_FR' => 'Bottes par couleur et taille'
* ],
* 'variant_attribute_sets' => [
* [
* 'level' => 1,
* 'axes' => ['color'],
* 'attributes' => ['name', 'description', 'color']
* ],
* [
* 'level' => 2,
* 'axes' => ['size'],
* 'attributes' => ['sku', 'size']
* ]
* ]
* ]
*/
$familyVariant = $client->getFamilyVariantApi()->get('boots', 'boots_color_size');
#Create a family variant
Available in all client versions
If the family variant does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getFamilyVariantApi()->create('boots', 'boots_size_color', [
'labels' => [
'en_US' => 'Boots by color and size'
],
'variant_attribute_sets' => [
[
'level' => 1,
'axes' => ['size'],
'attributes' => ['name', 'description', 'size']
],
[
'level' => 2,
'axes' => ['color'],
'attributes' => ['sku', 'color']
]
]
]);
#Get a list of family variants
Available in all client versions
There are two ways of getting family variants.
By getting pages
This method allows to get family variants page per page, as a classical pagination. It's possible to get the total number of family variants with this method.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getFamilyVariantApi()->listPerPage('boots', 50, true);
There is a maximum limit allowed on server side for the parameter limit
.
Setting the parameter with_count
to true
can drastically decrease the performance.
It's recommended to let this parameter with the default value false
if the total number of family variants is not needed in the response.
You can get more information about this method here.
With a cursor
This method allows to iterate the family variants. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$familyVariants = $client->getFamilyVariantApi()->all('boots', 50);
There is a maximum limit allowed on server side for the parameter pageSize
.
You can get more information about this method here.
#Upsert a family variant
Available in all client versions
If the family variant does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getFamilyVariantApi()->upsert('boots', [
'code' => 'rain_boots_color_size',
'labels' => [
'de_DE' => 'Stiefel nach Farbe und Größe',
'en_US' => 'Updating label',
'fr_FR' => 'Mise à jour du label'
]
]);
#Upsert a list of family variants
Available in all client versions
This method allows to create or update a list of family variants.
It has the same behavior as the upsert
method for a single family variant, except that the code must be specified in the data of each family variant.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$responseLines = $client->getFamilyVariantApi()->upsertList('boots', [
[
'code' => 'rain_boots_color_size',
'labels' => [
'de_DE' => 'Stiefel nach Farbe und Größe',
'en_US' => 'Updating label',
'fr_FR' => 'Mise à jour du label'
]
],
[
'code' => 'man_boots_color_size',
'labels' => [
'de_DE' => 'Stiefel nach Farbe und Größe',
'en_US' => 'Updating label',
'fr_FR' => 'Mise à jour du label'
]
]
]);
foreach ($responseLines as $line) {
echo $line['line'];
echo $line['identifier'];
echo $line['status_code'];
if (isset($line['message'])) {
echo $line['message'];
}
}
There is a limit on the maximum number of family variants that you can upsert in one time on server side. By default this limit is set to 100.
You can get a complete description of the expected format and the returned format here.
#Target market settings
#Channel
#Get a channel
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'ecommerce',
* 'currencies' => ['USD', 'EUR'],
* 'locales' => ['de_DE', 'en_US', 'fr_FR'],
* 'category_tree' => 'master',
* 'conversion_units' => [],
* 'labels' => [
* 'en_US' => 'Ecommerce',
* 'de_DE' => 'Ecommerce',
* 'fr_FR' => 'Ecommerce',
* ],
* ]
*/
$channel = $client->getChannelApi()->get('ecommerce');
#Get a list of channels
Available in all client versions
There are two ways of getting channels.
By getting pages
This method allows to get channels page per page, as a classical pagination.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getChannelApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the channels. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$channels = $client->getChannelApi()->all(50);
You can get more information about this method here.
#Create a channel
Available in all client versions
If the channel does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getChannelApi()->create('paper', [
'category_tree' => 'master',
'currencies' => ['EUR', 'USD'],
'locales' => ['en_US', 'fr_FR']
'labels' => [
'en_US' => 'Paper',
'fr_FR' => 'Papier',
]
]);
#Upsert a channel
Available in all client versions
If the channel does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getChannelApi()->upsert('paper', [
'category_tree' => 'master',
'currencies' => ['EUR', 'USD'],
'locales' => ['en_US', 'fr_FR']
'labels' => [
'en_US' => 'Paper',
'fr_FR' => 'Papier',
]
]);
#Upsert a list of channels
Available in all client versions
This method allows to create or update a list of channels.
It has the same behavior as the upsert
method for a single channel, except that the code must be specified in the data of each channel.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getChannelApi()->upsertList([
[
'code' => 'paper',
'category_tree' => 'master',
'currencies' => ['EUR', 'USD'],
'locales' => ['en_US', 'fr_FR']
'labels' => [
'en_US' => 'Paper',
'fr_FR' => 'Papier',
]
],
[
'code' => 'ecommerce',
'currencies' => ['USD', 'EUR'],
'conversion_units' => [],
'labels' => [
'en_US' => 'Ecommerce',
]
],
]);
There is a limit on the maximum number of channels that you can upsert in one time on server side. By default this limit is set to 100.
#Currency
#Get a currency
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'EUR',
* 'enabled' => true,
* ]
*/
$currency = $client->getCurrencyApi()->get('EUR');
#Get a list of currencies
Available in all client versions
There are two ways of getting currencies.
By getting page
This method allows to get currencies page per page, as a classical pagination.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getCurrencyApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the currencies. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$currencies = $client->getCurrencyApi()->all(50);
You can get more information about this method here.
#Locale
#Get a locale
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'en_US',
* 'enable' => true,
* ]
*/
$locale = $client->getLocaleApi()->get('en_US');
#Get a list of locales
Available in all client versions
There are two ways of getting locales.
By getting pages
This method allows to get locales page per page, as a classical pagination.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getLocaleApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the locales. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$locales = $client->getLocaleApi()->all(50);
You can get more information about this method here.
#Measure family
Since the 5.0 and for the SaaS versions, we encourage you to use these new endpoints, as they are more powerful. They allow you to create/update measurement families and they guarantee the order of the conversion operations.
#Get a measure family
Available in all client versions
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'casebox',
* 'standard' => 'PIECE',
* 'units' => [
* [
* 'code' => 'PIECE',
* 'convert' => [
* 'mul' => '1',
* ],
* 'symbol' => 'Pc',
* ],
* [
* 'code' => 'DOZEN',
* 'convert' => [
* 'mul' => '12',
* ],
* 'symbol' => 'Dz',
* ],
* ],
* ]
*/
$measureFamily = $client->getMeasureFamilyApi()->get('casebox');
#Get a list of measure families
Available in all client versions
There are two ways of getting measure families.
By getting pages
This method allows to get measure families page per page, as a classical pagination.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getMeasureFamilyApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the measure families. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$categories = $client->getMeasureFamilyApi()->all(50);
You can get more information about this method here.
#Measurement family
#Get a list of measurement families
Available since client version: 6.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* [
* 'code' => 'Angle',
* 'labels' => [
* 'en_US' => 'Angle',
* 'fr_FR' => 'Angle',
* ],
* 'standard_unit_code' => 'RADIAN',
* 'units' => [
* 'RADIAN' => [
* 'code' => 'RADIAN',
* 'labels' => [
* 'en_US' => 'Radian',
* 'fr_FR' => 'Radian',
* ],
* 'convert_from_standard' => [
* [
* 'operator' => 'mul',
* 'value' => '1',
* ],
* ],
* 'symbol' => 'rad',
* ],
* 'MILLIRADIAN' => [
* 'code' => 'MILLIRADIAN',
* 'labels' => [
* 'en_US' => 'Milliradian',
* 'fr_FR' => 'Milliradian',
* ],
* 'convert_from_standard' => [
* [
* 'operator' => 'mul',
* 'value' => '0.001',
* ],
* ],
* 'symbol' => 'mrad',
* ],
* ],
* ],
* ...
* ]
*/
$measurementFamilies = $client->getMeasurementFamilyApi()->all();
You can get a complete description of the returned format here.
There is no pagination on measurement families.
#Upsert a list of measurement families
Available since client version: 6.0
This method allows to create or update a list of measurement families.
For any given measurement family, the code
must be specified.
If the measurement family does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$responses = $client->getMeasurementFamilyApi()->upsertList([
// Add a german label to the existing measurement family "Angle"
[
'code' => 'Angle',
'labels' => [
'de_DE' => 'Winkel',
],
],
// Create a new measurement family
[
'code' => 'CUSTOM_MEASUREMENT_FAMILY',
'labels' => [
'en_US' => 'Custom measurement family',
],
'standard_unit_code' => 'CUSTOM_UNIT',
'units' => [
'CUSTOM_UNIT' => [
'code' => 'CUSTOM_UNIT',
'labels' => [
'en_US' => 'Custom unit',
],
'convert_from_standard' => [
[
'operator' => 'mul',
'value' => '1',
],
],
'symbol' => 'c',
],
],
],
]);
foreach ($responses as $response) {
echo $response['code']; // Measurement family code
echo $response['status_code']; // 201 => created, 204 => updated, 422 => invalid
}
You can get a complete description of the expected format and the returned format here.
There is a limit on the maximum number of measurement families you can store. By default this limit is set to 100.
#Asset Manager
#Asset
We refer here to the asset of the Asset Manager.
#Get an asset of a given asset family
Available since client version: 5.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'jeans_care_instructions',
* 'values' => [
* 'label' => [
* 0 => [
* 'locale' => 'en_US',
* 'channel' => NULL,
* 'data' => 'Jeans care instructions',
* ],
* ],
* ],
* ]
*/
$client->getAssetManagerApi()->get('user_instructions', 'jeans_care_instructions');
#Get the list of the assets of a asset family
Available since client version: 5.0 | Only available for PIM EE
Assets are automatically paginated and can be filtered.
You can get more information about the available query parameters here.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$cursor = $client->getAssetManagerApi()->all('user_instructions');
#Upsert an asset of a given asset family
Available since client version: 5.0 | Only available for PIM EE
If the asset does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetManagerApi()->upsert('user_instructions', 'jeans_care_instructions', [
'code' => 'jeans_care_instructions',
'values' => [
'label' => [
['locale' => 'en_US', 'channel' => null, 'data' => 'Jeans care instructions'],
]
]
]);
#Upsert a list of assets of a given asset family
Available since client version: 5.0 | Only available for PIM EE
This method allows to create or update a list of assets of a given asset family.
It has the same behavior as the upsert
method for a single asset.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetManagerApi()->upsertList('user_instructions', [
[
'code' => 'jeans_care_instructions',
'values' => [
'label' => [
['locale' => 'en_US', 'channel' => null, 'data' => 'Jeans care instructions'],
]
]
],
[
'code' => 'shirts_care_instructions',
'values' => [
'label' => [
['locale' => 'en_US', 'channel' => null, 'data' => 'Shirts care instructions'],
]
]
]
]);
#Asset attribute option
We refer here to the asset attribute option of the Asset Manager.
#Get an attribute option for a given attribute of a given asset
Available since client version: 5.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'blue',
* 'labels' => [
* 'en_US' => 'Blue',
* 'fr_FR' => 'Bleu',
* ]
* ]
*/
$client->getAssetAttributeOptionApi()->get('packshot', 'main_colors', 'blue);
#Get the list of attribute options of a given attribute for a given asset
Available since client version: 5.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetAttributeOptionApi()->all('packshot', 'main_colors');
#Upsert an attribute option for a given attribute of a given asset
Available since client version: 5.0 | Only available for PIM EE
If the attribute option does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetAttributeOptionApi()->upsert('packshot', 'main_colors', 'blue', [
'code' => 'blue',
'labels' => [
'en_US' => 'Blue',
'fr_FR' => 'Bleu',
]
]);
#Asset attribute
We refer here to the asset attribute option of the Asset Manager.
#Get an attribute of a given asset family
Available since client version: 5.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'label',
* 'labels' => [],
* 'type' => 'text',
* 'value_per_locale' => true,
* 'value_per_channel' => false,
* 'is_required_for_completeness' => false,
* 'max_characters' => NULL,
* 'is_textarea' => false,
* 'is_rich_text_editor' => false,
* 'validation_rule' => 'none',
* 'validation_regexp' => NULL,
* ]
*/
$client->getAssetAttributeApi()->get('user_instructions', 'label');
#Get the list of attributes of a given asset
Available since client version: 5.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetAttributeApi()->all('user_instructions');
#Upsert an attribute of a given asset family
Available since client version: 5.0 | Only available for PIM EE
If the attribute does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetAttributeApi()->upsert('user_instructions', 'label', [
'code' => 'label',
'labels' => [
'en_US' => 'Label',
],
'type' => 'text'
]);
#Asset family
We refer here to the asset family of the Asset Manager.
#Get an asset family
Available since client version: 5.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'user_instructions',
* 'labels' => [
* 'en_US' => 'User instructions',
* 'fr_FR' => 'Notice d\'utilisation',
* ],
* 'product_link_rules' => [],
* ]
*/
$client->getAssetFamilyApi()->get('user_instructions');
#Get the list of the asset families
Available since client version: 5.0 | Only available for PIM EE
You can get more information about the available query parameters here.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetFamilyApi()->all();
#Upsert an asset family
Available since client version: 5.0 | Only available for PIM EE
If the asset family does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetFamilyApi()->upsert('user_instructions', [
'code' => 'user_instructions',
'labels' => [
'en_US' => 'User instructions',
'fr_FR' => 'Notice d\'utilisation',
]
]);
#Asset media file
We refer here to the asset media file of the Asset Manager.
#Download the media file associated to a asset or a record
Available since client version: 5.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$mediaFileCode = 'f/c/3/6/fc36131bf5a352261999ea8424f540fce164d66b_allie_jean_model_picture.png';
$mediaFileResponse = $client->getAssetMediaFileApi()->download($mediaFileCode);
From the response, you can retrieve the file name in the header "Content-Disposition" and the mime type in the header "Content-Type".
#Create a new media file for a asset or a record
Available since client version: 5.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$mediaFileCode = $client->getAssetMediaFileApi()->create('/tmp/allie_jean_model_picture.png');
#PAM - Deprecated
With the introduction of our brand new way to handle assets, the Asset Manager, the PAM feature will be removed from the v4.0 of the PIM. As a result, all the methods regarding the PAM assets are now deprecated.
To understand why, we recommend you to read this Medium post, we wrote on this special occasion.
Also, don't hesitate to take a look at the Asset Manager documentation to discover this new feature and how much more efficient it will be to handle your precious assets.
#Asset category - Deprecated
This resource is deprecated. It means that it may be removed in a future version of the PHP client. To understand why, we recommend you to read this Medium post, we wrote on this special occasion.
Also, did you know that since the PIM 3.2 (or the 5.0 of the client), you can handle your assets thanks to the Asset Manager, the brand new efficient way to manage your product assets within the PIM. In the Asset Manager, categories can be modelized thanks to a single or multiple options attribute in your asset family.
Eager to know more about the Asset Manager? It's right here!
#Get an asset category
Available since client version: 2.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'face',
* 'parent' => 'images',
* 'labels' => [
* 'en_US' => 'Front picture',
* 'fr_FR' => 'Image de face',
* ],
* ]
*/
$assetCategory = $client->getAssetCategoryApi()->get('face');
#Get a list of asset categories
Available since client version: 2.0 | Only available for PIM EE
There are two ways of getting asset categories.
By getting pages
This method allows to get asset categories page per page, as a classical pagination. It's possible to get the total number of asset categories with this method.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getAssetCategoryApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the asset categories. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$assetCategories = $client->getAssetCategoryApi()->all(50);
You can get more information about this method here.
#Upsert an asset category
Available since client version: 2.0 | Only available for PIM EE
If the asset category does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetCategoryApi()->upsert('dos', [
'parent' => 'images',
'labels' => [
'en_US' => 'Back picture',
'fr_FR' => 'Image de dos',
],
]);
#Upsert a list of asset categories
Available since client version: 2.0 | Only available for PIM EE
This method allows to create or update a list of asset categories.
It has the same behavior as the upsert
method for a single asset category, except that the code must be specified in the data of each asset category.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetCategoryApi()->upsertList([
[
'code' => 'dos',
'parent' => 'images',
'labels' => [
'en_US' => 'Back picture',
'fr_FR' => 'Image de dos',
],
],
[
'code' => 'face',
'parent' => 'images',
'labels' => [
'en_US' => 'Front picture',
'fr_FR' => 'Image de face',
],
],
]);
There is a limit on the maximum number of asset categories that you can upsert in one time on server side. By default this limit is set to 100.
#Asset reference file - Deprecated
This resource is deprecated. It means that it may be removed in a future version of the PHP client. To understand why, we recommend you to read this Medium post, we wrote on this special occasion.
Also, did you know that since the PIM 3.2 (or the 5.0 of the client), you can handle your assets thanks to the Asset Manager, the brand new efficient way to manage your product assets within the PIM. In the Asset Manager, asset reference files can be modelized thanks to media file attributes in your asset family.
Eager to know more about the Asset Manager? It's right here!
#Get a reference file of a localizable asset
Available since client version: 2.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'a/7/7/d/a77d13fb0e661587aec8ce81d479627e3ff467f4_chicago_skyline.jpg',
* 'locale' => 'en_US',
* '_link' => [
* 'download' => [
* 'href' => 'http://akeneo.com/api/rest/v1/assets/chicagoskyline/reference-files/en_US/download',
* ],
* ],
* ]
*/
$product = $client->getAssetReferenceFileApi()->getFromLocalizableAsset('chicagoskyline', 'en_US');
#Get a reference file of a not localizable asset
Available since client version: 2.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'b/7/b/e/b7be03a438ace1d9ea782440f735a72fff2a3f3c_bridge.jpg',
* 'locale' => null,
* '_link' => [
* 'download' => [
* 'href' => 'http://akeneo.com/api/rest/v1/assets/bridge/reference-files/no-locale/download',
* ],
* ],
* ]
*/
$product = $client->getAssetReferenceFileApi()->getFromNotLocalizableAsset('bridge');
#Download a reference file of a localizable asset
Available since client version: 2.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$product = $client->getAssetReferenceFileApi()->downloadFromLocalizableAsset('chicagoskyline', 'en_US');
file_put_contents('/tmp/chicagoskyline.jpg', $product->getContents());
From the v4 of the PHP client, the response is returned instead of the content. It allows getting the filename and the MIME type from the response. You can get the content this way:
file_put_contents('/tmp/chicagoskyline.jpg', $product->getBody()->getContents());
#Download a reference file of a not localizable asset
Available since client version: 2.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$product = $client->getAssetReferenceFileApi()->downloadFromNotLocalizableAsset('bridge');
file_put_contents('/tmp/bridge.jpg', $product->getContents());
From the v4 of the PHP client, the response is returned instead of the content. It allows getting the filename and the MIME type from the response. You can get the content this way:
file_put_contents('/tmp/bridge.jpg', $product->getBody()->getContents());
#Upload an asset reference file for a localizable asset
Available since client version: 2.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetReferenceFileApi()->uploadForLocalizableAsset('/tmp/chicagoskyline.jpg', 'chicagoskyline', 'en_US');
It will also automatically generate all the variation files corresponding to this reference file. If one or more generations of variation files failed, a specific exception will be thrown. You'll be able to see the details of the errors from this exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
try {
$client->getAssetReferenceFileApi()->uploadForLocalizableAsset('/tmp/chicagoskyline.jpg', 'chicagoskyline', 'en_US');
} catch(UploadAssetReferenceFileErrorException $exception) {
$uploadErrors = $exception->getErrors();
}
/*
* Example of errors:
*
* [
* 0 => [
* 'message' => 'Impossible to "scale" the image "Ziggy.jpg" with a width bigger than the original.',
* 'scope' => 'mobile',
* 'locale' => 'en_US',
* ],
* 1 => [
* 'message' => 'Impossible to "resize" the image "Ziggy.jpg" with a width bigger than the original.',
* 'scope' => 'print',
* 'locale' => 'en_US',
* ]
* ]
*/
#Upload an asset reference file for a not localizable asset
Available since client version: 2.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetReferenceFileApi()->uploadForNotLocalizableAsset('/tmp/bridge.jpg', 'bridge');
It will also automatically generate all the variation files corresponding to this reference file. If one or more generation of variation file failed, a specific exception will be thrown. You'll be able to see the details of the errors from this exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
try {
$client->getAssetReferenceFileApi()->uploadForNotLocalizableAsset('/tmp/bridge.jpg', 'bridge');
} catch(UploadAssetReferenceFileErrorException $exception) {
$uploadErrors = $exception->getErrors();
}
/*
* Example of error:
*
* [
* 'message' => 'Impossible to "scale" the image "Ziggy.jpg" with a width bigger than the original.',
* 'scope' => 'mobile',
* 'locale' => null,
* ]
*/
#Asset tag - Deprecated
This resource is deprecated. It means that it may be removed in a future version of the PHP client. To understand why, we recommend you to read this Medium post, we wrote on this special occasion.
Also, did you know that since the PIM 3.2 (or the 5.0 of the client), you can handle your assets thanks to the Asset Manager, the brand new efficient way to manage your product assets within the PIM. In the Asset Manager, tags can be modelized thanks to a single or multiple options attribute in your asset family.
Eager to know more about the Asset Manager? It's right here!
#Get an asset tag
Available since client version: 2.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'water',
* ]
*/
$assetTag = $client->getAssetTagApi()->get('water');
#Get a list of asset tags
Available since client version: 2.0 | Only available for PIM EE
There are two ways of getting asset tags.
By getting pages
This method allows to get asset tags page per page, as a classical pagination.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getAssetTagApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the asset tags. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$assetTags = $client->getAssetTagApi()->all(50);
You can get more information about this method here.
#Upsert an asset tag
Available since client version: 2.0 | Only available for PIM EE
If the asset tag does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetTagApi()->upsert('cat');
#Asset variation file - Deprecated
This resource is deprecated. It means that it may be removed in a future version of the PHP client. To understand why, we recommend you to read this Medium post, we wrote on this special occasion.
Also, did you know that since the PIM 3.2 (or the 5.0 of the client), you can handle your assets thanks to the Asset Manager, the brand new efficient way to manage your product assets within the PIM. In the Asset Manager, asset variation files can be modelized thanks to a media file attributes in your asset family.
Eager to know more about the Asset Manager? It's right here!
#Get a variation file of a localizable asset
Available since client version: 2.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'f/5/5/c/f55c7ea4adae17d4e02f4d04a839bc2a7cdbf165_chicago_skyline_en_US_mobile.jpg',
* 'locale' => 'en_US',
* 'scope' => 'mobile',
* '_link' => [
* 'download' => [
* 'href' => 'http://akeneo.com/api/rest/v1/assets/chicagoskyline/variation-files/mobile/en_US/download',
* ],
* ],
* ]
*/
$product = $client->getAssetVariationFileApi()->getFromLocalizableAsset('chicagoskyline', 'mobile', 'en_US');
#Get a variation file of a not localizable asset
Available since client version: 2.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => '0/7/2/1/07217eea32563821b46336d2dec696e4f69415ec_bridge_mobile.jpg',
* 'locale' => null,
* 'scope' => 'mobile',
* '_link' => [
* 'download' => [
* 'href' => 'http://akeneo.com/api/rest/v1/assets/bridge/variation-files/mobile/no-locale/download',
* ],
* ],
* ]
*/
$product = $client->getAssetVariationFileApi()->getFromNotLocalizableAsset('bridge', 'mobile');
#Download a variation file of a localizable asset
Available since client version: 2.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$product = $client->getAssetVariationFileApi()->downloadFromLocalizableAsset('chicagoskyline', 'mobile', 'en_US');
file_put_contents('/tmp/chicagoskyline-mobile.jpg', $product->getContents());
From the v4 of the PHP client, the response is returned instead of the content. It allows getting the filename and the MIME type from the response. You can get the content this way:
file_put_contents('/tmp/chicagoskyline-mobile.jpg', $product->getBody()->getContents());
#Download a variation file of a not localizable asset
Available since client version: 2.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$product = $client->getAssetVariationFileApi()->downloadFromNotLocalizableAsset('bridge', 'mobile');
file_put_contents('/tmp/bridge-mobile.jpg', $product->getContents());
From the v4 of the PHP client, the response is returned instead of the content. It allows getting the filename and the MIME type from the response. You can get the content this way:
file_put_contents('/tmp/bridge-mobile.jpg', $product->getBody()->getContents());
#Upload an asset variation file for a localizable asset
Available since client version: 2.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetVariationFileApi()->uploadForLocalizableAsset('/tmp/chicagoskyline-mobile.jpg', 'chicagoskyline', 'mobile','en_US');
#Upload an asset variation file for a not localizable asset
Available since client version: 2.0
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetVariationFileApi()->uploadForNotLocalizableAsset('/tmp/bridge-mobile.jpg', 'bridge', 'mobile');
#Asset - Deprecated
This resource is deprecated. It means that it may be removed in a future version of the PHP client. To understand why, we recommend you to read this Medium post, we wrote on this special occasion.
Also, did you know that since the PIM 3.2 (or the 5.0 of the client), you can handle your assets thanks to the Asset Manager, the brand new efficient way to manage your product assets within the PIM.
Eager to know more about these new assets? It's right here!
#Get an asset
Available since client version: 2.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'bridge',
* 'localizable' => false,
* 'description' => 'Architectural bridge of a city, above water',
* 'end_of_use' => '2028-01-25T00:00:00+00:00',
* 'tags' => [
* 'cities',
* 'water',
* ],
* 'categories' => [
* 'faces',
* ],
* 'variation_files' => [
* [
* '_link' => [
* 'download' => [
* 'href' => 'http://akeneo.com/api/rest/v1/assets/bridge/variation-files/mobile/no-locale/download',
* ],
* 'self' => [
* 'href' => 'http://akeneo.com/api/rest/v1/assets/bridge/variation-files/mobile/no-locale',
* ],
* ],
* 'locale' => null,
* 'scope' => 'mobile',
* 'code' => '0/7/2/1/07217eea32563821b46336d2dec696e4f69415ec_bridge_mobile.jpg',
* ],
* [
* '_link' => [
* 'download' => [
* 'href' => 'http://akeneo.com/api/rest/v1/assets/bridge/variation-files/ecommerce/no-locale/download',
* ],
* 'self' => [
* 'href' => 'http://akeneo.com/api/rest/v1/assets/bridge/variation-files/ecommerce/no-locale',
* ],
* ],
* 'locale' => null,
* 'scope' => 'ecommerce',
* 'code' => 'a/e/1/0/ae104d0b8cd2111380029240630008a01585d7ed_bridge_ecommerce.jpg',
* ],
* ],
* 'reference_files' => [
* [
* '_link' => [
* 'download' => [
* 'href' => 'http://akeneo.com/api/rest/v1/assets/bridge/reference-files/no-locale/download',
* ],
* 'self' => [
* 'href' => 'http://akeneo.com/api/rest/v1/assets/bridge/reference-files/no-locale',
* ],
* ],
* 'locale' => null,
* 'code' => 'b/7/b/e/b7be03a438ace1d9ea782440f735a72fff2a3f3c_bridge.jpg',
* ],
* ],
* ]
*/
$asset = $client->getAssetApi()->get('bridge');
#Get a list of assets
Available since client version: 2.0 | Only available for PIM EE
There are two ways of getting assets.
By getting pages
This method allows to get assets page per page, as a classical pagination. It's possible to get the total number of assets with this method.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$firstPage = $client->getAssetApi()->listPerPage(50, true);
You can get more information about this method here.
With a cursor
This method allows to iterate the assets. It will automatically get the next pages for you.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$assets = $client->getAssetApi()->all(50);
You can get more information about this method here.
#Create an asset
Available since client version: 2.0 | Only available for PIM EE
If the asset does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/', 'client_id', 'secret', 'admin', 'admin')->build()
$client->getAssetApi()->create('unicorn', [
'localizable' => false,
'description' => 'The wonderful unicorn',
'end_of_use' => '2042-11-21',
'tags' => ['colored', 'flowers'],
'categories' => ['face', 'pack'],
]);
#Upsert an asset
Available since client version: 2.0 | Only available for PIM EE
If the asset does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetApi()->upsert('bridge', [
'localizable' => false,
'description' => 'Architectural bridge of a city, above water',
'end_of_use' => null,
'tags' => ['water'],
'categories' => ['face', 'pack']
]);
#Upsert a list of assets
Available since client version: 2.0 | Only available for PIM EE
This method allows to create or update a list of assets.
It has the same behavior as the upsert
method for a single asset, except that the code must be specified in the data of each asset.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAssetApi()->upsertList([
[
'code' => 'unicorn',
'localizable' => false,
'description' => 'The wonderful unicorn',
'end_of_use' => '2042-11-21',
'tags' => ['colored', 'flowers'],
'categories' => ['face', 'pack'],
],
[
'code' => 'bridge',
'localizable' => false,
'description' => 'Architectural bridge of a city, above water',
'end_of_use' => null,
'tags' => ['water'],
'categories' => ['face', 'pack']
],
]);
There is a limit on the maximum number of assets that you can upsert in one time on server side. By default this limit is set to 100.
#Reference entities
#Reference entity
#Get a reference entity
Available since client version: 4.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'brand',
* 'labels' => [
* 'en_US' => 'Brand',
* 'fr_FR' => 'Marque',
* ],
* 'image' => '5/e/e/e/5eee4242ed8d2f1a5f5ff41d00457ecbe637b71e_brand.jpg',
* '_links' => [
* 'image_download' => [
* 'href' => 'http://localhost:8080/api/rest/v1/reference-entities-media-files/5/e/e/e/5eee4242ed8d2f1a5f5ff41d00457ecbe637b71e_brand.jpg',
* ],
* ],
* ]
*/
$referenceEntity = $client->getReferenceEntityApi()->get('brand');
#Get the list of the reference entities
Available since client version: 4.0 | Only available for PIM EE
You can get more information about the available query parameters here.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$referenceEntitiesCursor = $client->getReferenceEntityApi()->all();
#Upsert a reference entity
Available since client version: 4.0 | Only available for PIM EE
If the reference entity does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getReferenceEntityApi()->upsert('brand', [
'code' => 'brand',
'labels' => [
'en_US' => 'Brand',
'fr_FR' => 'Marque',
],
'image' => '5/e/e/e/5eee4242ed8d2f1a5f5ff41d00457ecbe637b71e_brand.jpg'
]);
#Reference entity attribute option
#Get an attribute option for a given attribute of a given reference entity
Available since client version: 4.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'red',
* 'labels' => [
* 'en_US' => 'Red',
* 'fr_FR' => 'Rouge',
* ]
* ]
*/
$referenceEntityAttributeOption = $client->getReferenceEntityAttributeOptionApi()->get('designer', 'favorite_color', 'red');
#Get the list of attribute options of a given attribute for a given reference entity
Available since client version: 4.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$referenceEntityAttributeOptions = $client->getReferenceEntityAttributeOptionApi()->all('designer', 'favorite_color');
#Upsert an attribute option for a given attribute of a given reference entity
Available since client version: 4.0 | Only available for PIM EE
If the attribute option does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getReferenceEntityAttributeOptionApi()->upsert('designer', 'favorite_color', 'blue', [
'code' => 'blue',
'labels' => [
'en_US' => 'Blue',
'fr_FR' => 'Bleu',
]
]);
#Reference entity attribute
#Get an attribute of a given reference entity
Available since client version: 4.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'description',
* 'labels' => [
* 'en_US' => 'Description',
* 'fr_FR' => 'Description',
* ],
* 'type' => 'text',
* 'localizable' => true,
* 'scopable' => true,
* 'is_required_for_completeness' => true,
* 'max_characters' => null,
* 'is_textarea' => true,
* 'is_rich_text_editor' => true,
* 'validation_rule' => 'none',
* 'validation_regexp' => null,
* ]
*/
$referenceEntityAttribute = $client->getReferenceEntityAttributeApi()->get('brand', 'description');
#Get the list of attributes of a given reference entity
Available since client version: 4.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$referenceEntityRecordsCursor = $client->getReferenceEntityAttributeApi()->all('brand');
#Upsert an attribute of a given reference entity
Available since client version: 4.0 | Only available for PIM EE
If the attribute does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getReferenceEntityAttributeApi()->upsert('brand', 'description', [
'code' => 'description',
'labels' => [
'en_US' => 'Description'
],
'type' => 'text',
'value_per_locale' => true,
'value_per_channel' => true,
'is_required_for_completeness' => false
]);
#Reference entity media file
#Download the media file associated to a reference entity or a record
Available since client version: 4.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$mediaFileResponse = $client->getReferenceEntityMediaFileApi()->download('images/kartell.png');
From the response, you can retrieve the file name in the header "Content-Disposition" and the mime type in the header "Content-Type".
#Create a new media file for a reference entity or a record
Available since client version: 4.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$mediaFileCode = $client->getReferenceEntityMediaFileApi()->create('/tmp/kartell.png');
#Reference entity record
#Get a record of a given reference entity
Available since client version: 4.0 | Only available for PIM EE
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like this:
* [
* 'code' => 'kartell',
* 'values' => [
* 'labels' => [
* [
* 'locale' => 'en_US',
* 'channel' => null,
* 'data' => 'Kartell',
* ],
* ],
* 'image' => [
* [
* 'locale' => null,
* 'channel' => null,
* 'data' => '0/c/b/0/0cb0c0e115dedba676f8d1ad8343ec207ab54c7b_image.jpg',
* ],
* ],
* 'description' => [
* [
* 'locale' => 'en_US',
* 'channel' => null,
* 'data' => 'Kartell, the Italian furniture company that sells modern and remarkable pieces of furnitures.',
* ],
* [
* 'locale' => 'fr_FR',
* 'channel' => null,
* 'data' => 'Kartell, l\'éditeur de meuble italien spécialisé dans la signature de belle pièces au design contemporain.',
* ],
* ],
* 'designer' => [
* [
* 'locale' => null,
* 'channel' => null,
* 'data' => 'starck',
* ],
* ],
* ],
* ];
*
*/
$referenceEntityRecord = $client->getReferenceEntityRecordApi()->get('brand', 'kartell');
#Get the list of the records of a reference entity
Available since client version: 4.0 | Only available for PIM EE
Records are automatically paginated and can be filtered.
You can get more information about the available query parameters here.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$referenceEntityRecordsCursor = $client->getReferenceEntityRecordApi()->all('brand');
#Upsert a record of a given reference entity
Available since client version: 4.0 | Only available for PIM EE
If the record does not exist yet, this method creates it, otherwise it updates it.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getReferenceEntityRecordApi()->upsert('brand', 'kartell', [
'code' => 'kartell',
'values' => [
'label' => [
[
'channel' => null,
'locale' => 'en_US',
'data' => 'Kartell'
],
],
'designer' => [
[
'locale' => null,
'channel' => null,
'data' => 'starck',
],
],
]
]);
#Upsert a list of records of a given reference entity
Available since client version: 4.0 | Only available for PIM EE
This method allows to create or update a list of records of a given reference entity.
It has the same behavior as the upsert
method for a single record.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getReferenceEntityRecordApi()->upsertList('brand', [
[
'code' => 'kartell',
'values' => [
'label' => [
[
'channel' => null,
'locale' => 'fr_FR',
'data' => 'Kartell'
],
]
]
],
[
'code' => 'lexon',
'values' => [
'label' => [
[
'channel' => null,
'locale' => 'en_US',
'data' => 'Lexon'
],
]
]
]
]);
#Catalogs for Apps
#App catalog
#Get the list of owned catalogs
Available since client version: 9.1
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('https://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like the following:
* [
* {
* "id": "12351d98-200e-4bbc-aa19-7fdda1bd14f2",
* "name": "Store FR",
* "enabled": true
* },
* {
* "id": "12351d98-200e-4bbc-aa19-7fdda1bd14f3",
* "name": "Store US",
* "enabled": true
* }
* ]
*/
$catalogs = $client->getAppCatalogApi()->all();
#Get a catalog
Available since client version: 9.1
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('https://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an object like the following :
* {
* "id": "12351d98-200e-4bbc-aa19-7fdda1bd14f2",
* "name": "Store FR",
* "enabled": true
* }
*/
$catalogs = $client->getAppCatalogApi()->get('12351d98-200e-4bbc-aa19-7fdda1bd14f2');
#Create a new catalog
Available since client version: 9.1
If the catalog does not exist yet, this method creates it, otherwise it throws an exception.
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAppCatalogApi()->create(['name' => 'A catalog name']);
#Update a catalog
Available since client version: 9.1
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAppCatalogApi()->upsert(['name' => 'A catalog name']);
#Delete a catalog
Available since client version: 9.1
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
$client->getAppCatalogApi()->delete('12351d98-200e-4bbc-aa19-7fdda1bd14f2');
#App catalog product
#Get the list of product uuids
Available since client version: 9.1
$client = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('https://akeneo.com/')->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
/*
* Returns an array like the following:
* [
* "844c736b-a19b-48a6-a354-6056044729f0",
* "b2a683ef-4a91-4ed3-b3fa-76dab065a8d5",
* "eddfbd2a-abc7-488d-b9e3-41289c824f80"
* ]
*/
$catalogs = $client->getAppCatalogProductApi()->all();