ometra/proteus-client

Proteus API adapter

Maintainers

Package info

github.com/Ometra-Apollo/mx.ometra.apollo.proteus-sdk

pkg:composer/ometra/proteus-client

Statistics

Installs: 504

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

2.1.0 2026-05-22 18:57 UTC

This package is auto-updated.

Last update: 2026-05-22 19:00:40 UTC


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-Token
  • X-User-Token
  • X-Tenant-Id

Las llamadas de aplicacion envian:

  • X-Application-Token
  • X-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.