A simple PHP client to use the Akeneo PIM API.
- PHP >= 5.6
- Composer
We use HTTPPlug as the HTTP client abstraction layer. In this example, we will use Guzzle v6 as the HTTP client implementation.
api-php-client
uses Composer.
The first step to use api-php-client
is to download composer:
$ curl -s http://getcomposer.org/installer | php
Then, run the following command to require the library:
$ php composer.phar require akeneo/api-php-client php-http/guzzle6-adapter
If you want to use another HTTP client implementation, you can check here the full list of HTTP client implementations.
Full documentation is available on the API website.
You first need to initialise the client with your credentials client id/secret and with your user/password.
If you don't have any client id, let's take a look at this page to create it.
<?php
require_once __DIR__ . '/vendor/autoload.php';
$clientBuilder = new \Akeneo\Pim\ApiClient\AkeneoPimClientBuilder('http://localhost/');
$client = $clientBuilder->buildAuthenticatedByPassword('client_id', 'secret', 'admin', 'admin');
You can authenticate to the client with your token/refresh token as well.
$client = $clientBuilder->buildAuthenticatedByToken('client_id', 'secret', 'token', 'refresh_token');
Getting the token and refresh token is as simple as:
$client->getToken();
$client->getRefreshToken();
$product = $client->getProductApi()->get('top');
echo $product['identifier']; // display "top"
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder->addFilter('enabled', '=', true);
$searchFilters = $searchBuilder->getFilters();
$firstPage = $client->getProductApi()->listPerPage(50, true, ['search' => $searchFilters]);
echo $page->getCount();
foreach ($page->getItems() as $product) {
// do your stuff here
echo $product['identifier'];
}
$nextPage = $page->getNextPage();
$firstPage = $nextPage->getPreviousPage();
$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder->addFilter('enabled', '=', true);
$searchFilters = $searchBuilder->getFilters();
$products = $client->getProductApi()->all(50, ['search' => $searchFilters]);
foreach ($products as $product) {
// do your stuff here
echo $product['identifier'];
}
$client->getProductApi()->create('top', ['enabled' => true]);
$client->getProductApi()->upsert('top', ['family' => 'tshirt']);
$client->getProductApi()->upsertList([
[
'identifier' => 'top',
'family' => 'tshirt',
],
[
'identifier' => 'cap',
'categories' => ['hat'],
],
]);
If you find a bug or want to submit an improvement, don't hesitate to raise an issue on Github. Also, you can ask questions and discuss about the PHP client with the community in the Slack User Group.