engeni / api-client
Engeni - API client
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.5
Requires (Dev)
- rector/rector: ^1.0
- dev-master
- v7.1.1
- v7.1.0
- V7.0.8
- v7.0.7
- v7.0.6
- v7.0.5
- v7.0.4
- v7.0.3
- v7.0.2
- v7.0.1
- v7.0.0
- V6.5.11
- V6.5.10
- v6.5.9
- v6.5.8
- V6.5.7
- v6.5.6
- v6.5.5
- v6.5.4
- v6.5.3
- v6.5.2
- v6.5.1
- v6.5
- v6.4.11
- v6.4.10
- v6.4.9
- v6.4.8
- v6.4.7
- v6.4.6
- v6.4.5
- v6.4.4
- v6.4.3
- v6.4.2
- v6.4.1
- v6.4.0
- v6.3.23
- v6.3.22
- v6.3.21
- v6.3.20
- v6.3.19
- v6.3.18
- v6.3.17
- v6.3.16
- v6.3.15
- v6.3.14
- v6.3.13
- v6.3.12
- v6.3.11
- v6.3.10
- v6.3.9
- v6.3.8
- v6.3.7
- v6.3.6
- v6.3.5
- v6.3.4
- v6.3.3
- v6.3.2
- v6.3.1
- v6.3.0
- v6.2.5
- v6.2.4
- v6.2.3
- v6.2.2
- v6.2.1
- v6.2.0
- v6.1.0
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- v5.13.0
- v5.12.0
- v5.11.9
- v5.11.8
- v5.11.7
- v5.11.6
- v5.11.5
- v5.11.4
- v5.11.3
- v5.11.2
- v5.11.1
- v5.11.0
- v5.10.18
- v5.10.17
- v5.10.16
- v5.10.15
- v5.10.14
- v5.10.13
- v5.10.12
- v5.10.11
- v5.10.10
- v5.10.9
- v5.10.8
- v5.10.7
- v5.10.6
- v5.10.5
- v5.10.4
- v5.10.3
- v5.10.2
- v5.10.0
- v5.9.6
- v5.8.9
- v5.7.5
- v5.7.0
- dev-release/v5.10
- dev-release/v5.7
This package is auto-updated.
Last update: 2025-03-13 12:19:10 UTC
README
A powerful PHP library for interacting with the Engeni API, providing an elegant and intuitive interface for managing Engeni's core resources.
Table of Contents
- Installation
- Configuration
- Basic Usage
- Core Resources
- Query Building
- Resource Management
- Advanced Features
Installation
Install the package via Composer:
composer require engeni/api-client
Configuration
Initialize the client with your API credentials:
use Engeni\ApiClient\Client;
$client = new Client([
'base_uri' => 'https://api.your-domain.com',
'debug' => true,
'auth_token' => 'your-bearer-token'
]);
// Set as global client instance
$client->setAsGlobal();
Basic Usage
Making Simple Requests
use Engeni\ApiClient\Query;
// Basic GET request
$query = (new Query)->setPath('/');
$response = (new Client)->get($query);
Working with Resources
use Engeni\ApiClient\Resource\Core\User\User;
// Fetch user by ID
$user = User::find($userId);
// Get user with related data
$user = User::with('profile')->find($userId);
// Update user settings
$user->saveSettings([
'language' => 'en',
'current_account_id' => 1,
'current_location_id' => 1,
]);
Core Resources
The library provides access to various core resources:
Users
use Engeni\ApiClient\Resource\Core\User\User;
// Get user by token
$user = User::getByToken($token, ['profile', 'language', 'accounts']);
// Paginate users
$users = User::paginate();
Accounts
use Engeni\ApiClient\Resource\Core\Account\Account;
// Find account
$account = Account::find($accountId);
// Query active accounts
$accounts = Account::where('active', '1')
->limit(2)
->get();
Messages
use Engeni\ApiClient\Resource\Core\Message;
$message = new Message();
$message->subscription = 'core';
$message->topic = 'api-client-test';
$message->account_id = 0;
$message->payload = [
'from' => 'no-reply@example.com',
'to' => 'recipient@example.com',
'subject' => 'Test Message',
'html_body' => '<p>Message content</p>',
];
$message->send();
Query Building
The Query class provides a fluent interface for building API requests:
use Engeni\ApiClient\Query;
$query = (new Query)
->select('id', 'name', 'email')
->where('active', true)
->whereIn('role', ['admin', 'manager'])
->with(['profile', 'permissions'])
->orderBy('created_at', 'DESC')
->limit(20);
Available Query Methods
select(...$columns)
where($field, $value)
whereIn($field, array $values)
limit($limit)
with($relations)
orderBy($field, $order = 'ASC')
get()
first()
firstOrFail()
find($id)
pluck($column, $key = null)
Resource Management
Resources extend the ResourceAbstract
class, providing consistent behavior across different types:
Creating Resources
$resource = Resource::create([
'name' => 'New Resource',
'type' => 'example'
]);
Updating Resources
$resource->fill([
'name' => 'Updated Name'
]);
$resource->save();
Deleting Resources
$resource->delete();
// or
Resource::destroy($id);
Advanced Features
Parent Resources
// Access child resources through parent
$childResources = ChildResource::fromParent($parentId)
->where('status', 'active')
->get();
Pagination
$paginator = Resource::paginate(20);
foreach ($paginator as $item) {
// Process each item
}
Custom Operations
// Perform custom operations on resources
Resource::do('custom-action', $options, $parameters);
Error Handling
The library throws exceptions for various error conditions:
ResourceNotFoundException
: When a requested resource is not foundValidationException
: When resource validation failsAuthenticationException
: When authentication failsApiException
: For general API errors
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the GNU GPLv3 License - see the LICENSE file for details.
Support
For support, please contact Engeni LLC or open an issue in the repository.
For more detailed information and examples, please refer to the official documentation or the source code.