All Projects → akeneo → Api Php Client

akeneo / Api Php Client

Licence: other
PHP client of Akeneo PIM API

Projects that are alternatives of or similar to Api Php Client

Js Client
A Open-API derived JS + Node.js API client for Netlify
Stars: ✭ 170 (+203.57%)
Mutual labels:  api, rest, api-client
Openapi Generator
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
Stars: ✭ 10,634 (+18889.29%)
Mutual labels:  api, rest, api-client
Httpie
As easy as /aitch-tee-tee-pie/ 🥧 Modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. https://twitter.com/httpie
Stars: ✭ 53,052 (+94635.71%)
Mutual labels:  api, rest, api-client
Mobx Rest
REST conventions for Mobx
Stars: ✭ 164 (+192.86%)
Mutual labels:  api, rest, api-client
Apipie
Transform api declaration to js object for frontend. Inspired by VueRouter, koa-middleware and axios.
Stars: ✭ 29 (-48.21%)
Mutual labels:  api, rest, api-client
Bear.resource
A hypermedia framework for object as a service
Stars: ✭ 43 (-23.21%)
Mutual labels:  api, rest
Dito
Dito.js is a declarative and modern web framework with a focus on API driven development, based on Objection.js, Koa.js and Vue.js – Released in 2018 under the MIT license, with support by Lineto.com
Stars: ✭ 44 (-21.43%)
Mutual labels:  api, rest
Go Restful Api
An idiomatic Go REST API starter kit (boilerplate) following SOLID principles and Clean Architecture
Stars: ✭ 1,043 (+1762.5%)
Mutual labels:  api, rest
Flask Restx
Fork of Flask-RESTPlus: Fully featured framework for fast, easy and documented API development with Flask
Stars: ✭ 1,050 (+1775%)
Mutual labels:  api, rest
Oas Generator
NodeJS RESTful APIs scaffolding based OpenAPI 3.x specs using oas-tools and express.
Stars: ✭ 32 (-42.86%)
Mutual labels:  api, rest
Devrant
Unofficial wrapper for the public devRant API.
Stars: ✭ 48 (-14.29%)
Mutual labels:  api, api-client
Api Strategy
Equinor API Strategy
Stars: ✭ 56 (+0%)
Mutual labels:  api, rest
Axios Rest
A simple axios wrapper to make rest api call delightful
Stars: ✭ 41 (-26.79%)
Mutual labels:  api, rest
Twitchcsharp
Twitch C# Wrapper for the Twitch v3 REST API
Stars: ✭ 36 (-35.71%)
Mutual labels:  api, rest
Yii2 Nested Rest
Nested routing support to the Yii RESTful API framework
Stars: ✭ 45 (-19.64%)
Mutual labels:  api, rest
Discord4j
Discord4J is a fast, powerful, unopinionated, reactive library to enable quick and easy development of Discord bots for Java, Kotlin, and other JVM languages using the official Discord Bot API.
Stars: ✭ 973 (+1637.5%)
Mutual labels:  api, rest
Generator Http Fake Backend
Yeoman generator for building a fake backend by providing the content of JSON files or JavaScript objects through configurable routes.
Stars: ✭ 49 (-12.5%)
Mutual labels:  api, rest
Rest Control
Framework for testing and validation REST services
Stars: ✭ 51 (-8.93%)
Mutual labels:  api, rest
Compojure Api
Sweet web apis with Compojure & Swagger
Stars: ✭ 1,056 (+1785.71%)
Mutual labels:  api, rest
Php Quandl
Easy access to the Quandl Data API using PHP
Stars: ✭ 51 (-8.93%)
Mutual labels:  api, api-client

PHP Akeneo PIM API

A simple PHP client to use the Akeneo PIM API.

Matrix compatibility:

PIM version(s) API PHP Client version End of life CI status
v2.0 v1.0 March 2019 Build Status
v2.1 - v2.2 v2.0 March 2019 Build Status
v2.3 v3.0 December 2019 Build Status
v3.0 v4.0 August 2020 Build Status
- master - Build Status

Note that our PHP client is backward compatible. For example, if your PIM is currently a v2.3, you can still use a 1.0 version of the PHP client. The new endpoints available in v2.3 will not be available in the v1.0 of the PHP client.

Requirements

  • PHP >= 7.1
  • Composer

Installation

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:^2.0 http-interop/http-factory-guzzle:^1.0

If you want to use another HTTP client implementation, you can check here the full list of HTTP client implementations.

Documentation

Full documentation is available on the API website.

Getting started

Initialise the client

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();

Get a product

$product = $client->getProductApi()->get('top');
echo $product['identifier']; // display "top"

Get a list of products

By getting pages

$searchBuilder = new \Akeneo\Pim\ApiClient\Search\SearchBuilder();
$searchBuilder->addFilter('enabled', '=', true);
$searchFilters = $searchBuilder->getFilters();

$firstPage = $client->getProductApi()->listPerPage(50, true, ['search' => $searchFilters]);

echo $firstPage->getCount();

foreach ($firstPage->getItems() as $product) {
    // do your stuff here
    echo $product['identifier'];
}

$nextPage = $firstPage->getNextPage();

$firstPage = $nextPage->getPreviousPage();

By getting a cursor

$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'];
}

Create a product

$client->getProductApi()->create('top', ['enabled' => true]);

Upsert a product

$client->getProductApi()->upsert('top', ['family' => 'tshirt']);

Upsert a list of of products

$client->getProductApi()->upsertList([
    [
        'identifier' => 'top',
        'family' => 'tshirt',
    ],
    [
        'identifier' => 'cap',
        'categories' => ['hat'],
    ],
]);

Testing

Do note that you have to delete the composer.lock because Doctrine dependencies are loaded. These dependencies are different in function of the PHP version running composer install.

cp docker-compose.yml.dist docker-compose.yml
rm -rf composer.lock vendor/
docker-compose run client_72 composer install
docker-compose run client_72 bin/phpunit -c phpunit.xml.dist
docker-compose run client_72 bin/phpspec run
docker-compose run client_72 bin/php-cs-fixer fix --diff --dry-run --config=.php_cs.php -vvv

Support

The support of this client is made in best effort by our Akeneo team.

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].