A minimal and agnostic PHP SDK for Openapi, inspired by a clean client implementation. This SDK provides only the core HTTP primitives needed to interact with any Openapi service.
Before using the Openapi PHP Client, you will need an account at Openapi and an API key to the sandbox and/or production environment
- Agnostic Design: No API-specific classes, works with any OpenAPI service
- Minimal Dependencies: Only requires PHP 8.0+ and cURL
- OAuth Support: Built-in OAuth client for token management
- HTTP Primitives: GET, POST, PUT, DELETE, PATCH methods
- Clean Interface: Similar to the Rust SDK design
With the Openapi Rust Client, you can easily interact with a variety of services in the Openapi Marketplace. For example, you can:
- 📩 Send SMS messages with delivery reports and custom sender IDs
- 💸 Process bills and payments in real time via API
- 🧾 Send electronic invoices securely to the Italian Revenue Agency
- 📄 Generate PDFs from HTML content, including JavaScript rendering
- ✉️ Manage certified emails and legal communications via Italian Legalmail
For a complete list of all available services, check out the Openapi Marketplace 🌐
You can add the Openapi PHP Client to your project with the following command:
composer require openapi/openapi-sdkuse OpenApi\OauthClient;
$oauthClient = new OauthClient('username', 'apikey', true); // true for test environment
$scopes = [
'GET:test.imprese.openapi.it/advance',
'POST:test.postontarget.com/fields/country'
];
$result = $oauthClient->createToken($scopes, 3600);
$tokenData = json_decode($result, true);
$token = $tokenData['token'];use OpenApi\Client;
$client = new Client($token);
// GET request
$params = ['denominazione' => 'altravia', 'provincia' => 'RM'];
$response = $client->get('https://test.imprese.openapi.it/advance', $params);
// POST request
$payload = ['limit' => 10, 'query' => ['country_code' => 'IT']];
$response = $client->post('https://test.postontarget.com/fields/country', $payload);
// Other HTTP methods
$response = $client->put($url, $payload);
$response = $client->delete($url);
$response = $client->patch($url, $payload);This SDK follows a minimal approach with only essential components:
OauthClient: Handles OAuth authentication and token managementClient: Agnostic HTTP client for API callsException: Error handlingCache\CacheInterface: Optional caching interface
- PHP 8.0 or higher
- cURL extension
- JSON extension
You can find complete examples in the examples/ directory:
examples/token_generation.php- OAuth token generation exampleexamples/api_calls.php- HTTP API calls exampleexamples/complete_workflow.php- End-to-end workflow example
Run examples with:
composer run example:token
composer run example:api
composer run example:completeRun tests with:
# Run all tests
composer run test
# Run unit tests specifically
composer run test:unitContributions are always welcome! Whether you want to report bugs, suggest new features, improve documentation, or contribute code, your help is appreciated.
See docs/contributing.md for detailed instructions on how to get started. Please make sure to follow this project's docs/code-of-conduct.md to help maintain a welcoming and collaborative environment.
Meet the project authors:
- L. Paderi (@lpaderiAltravia)
- Openapi Team (@openapi-it)
Meet our partners using Openapi or contributing to this SDK:
- Blank
- Credit Safe
- Deliveroo
- Gruppo MOL
- Jakala
- Octotelematics
- OTOQI
- PWC
- QOMODO S.R.L.
- SOUNDREEF S.P.A.
This project is licensed under the MIT License.
The MIT License is a permissive open-source license that allows you to freely use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the software, provided that the original copyright notice and this permission notice are included in all copies or substantial portions of the software.
In short, you are free to use this SDK in your personal, academic, or commercial projects, with minimal restrictions. The project is provided "as-is", without any warranty of any kind, either expressed or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement.
For more details, see the full license text at the MIT License page.