ometra / proteus-client
Proteus API adapter
Package info
github.com/Ometra-Apollo/mx.ometra.apollo.proteus-sdk
pkg:composer/ometra/proteus-client
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.9
- illuminate/database: ^12.0
- illuminate/http: ^12.0
- illuminate/routing: ^12.0
- illuminate/support: ^12.0
- league/flysystem-aws-s3-v3: ^3.0
- ometra/caronte-sdk: ^4.0
Requires (Dev)
- phpunit/phpunit: 11.5.55
README
Cliente Laravel/PHP para consumir la API de Proteus usando la autenticacion de Caronte.
Instalacion
composer require ometra/proteus-client
Publica la configuracion si necesitas sobrescribirla:
php artisan vendor:publish --tag=proteus-config
Configuracion
PROTEUS_BASE_URL=https://proteus.example.com/api CARONTE_APP_CN=mi-aplicacion CARONTE_APP_SECRET=...
El SDK genera X-Application-Token con caronte-sdk. No usa PROTEUS_APP_TOKEN,
Bearer tokens ni uri_user.
Proteus requiere tenant en API. Antes de llamar al SDK, debe existir un
TenantContext activo:
use Equidna\BeeHive\Tenancy\TenantContext; $tenantContext = app(TenantContext::class); $tenantContext->set('tenant-id');
Las llamadas de usuario usan Caronte::getToken() y envian:
X-Application-TokenX-User-TokenX-Tenant-Id
Las llamadas de aplicacion envian:
X-Application-TokenX-Tenant-Id
Uso
use Ometra\Apollo\Proteus\Facades\Proteus; $directories = Proteus::directoriesIndex(); $media = Proteus::mediaUpload([ 'type' => 'image', 'directory_id' => $directoryId, 'media' => [$request->file('image')], 'metadata' => [ 'source' => 'apollo', ], ]); Proteus::mediaSetMetadata($mediaId, [ 'metadata' => [ 'title' => 'Hero image', ], ]);
Tambien puedes inyectar el cliente principal:
use Ometra\Apollo\Proteus\Proteus; public function __invoke(Proteus $proteus): array { return $proteus->media()->mediaIndex(['type' => 'image']); }
API
El contrato completo de wrappers esta en docs/api-contract.md.
Dominios cubiertos:
- Categories
- Directories
- Presets
- Media
- Metadata
Pruebas
composer test
La suite valida que los wrappers apunten a las rutas correctas y que el cliente envie los headers de Caronte, tenant y multipart para uploads.