Aller au contenu

SDK PHP

Le SDK PHP fournit un client pour l’intégration avec l’API Subnoto. Il gère le chiffrement tunnel Oak, l’authentification par signature HTTP, et inclut une extension PHP native pour l’attestation AMD SEV-SNP.

Téléchargez la dernière archive depuis GitLab Packages et extrayez-la dans votre projet :

Terminal window
tar xzf subnoto-api-client-php-*.tar.gz -C vendor/subnoto

Ajoutez l’entrée PSR-4 autoload dans votre composer.json :

{
"autoload": {
"psr-4": {
"Subnoto\\ApiClient\\": "vendor/subnoto/src/"
}
},
"require": {
"ext-oak_client_php": "*",
"guzzlehttp/guzzle": "^7.0"
}
}

Chargez l’extension native en ajoutant à votre php.ini :

extension=/path/to/vendor/subnoto/ext/oak_client_php.so

Définissez vos identifiants comme variables d’environnement — SubnotoConfig les récupère automatiquement.

Terminal window
export SUBNOTO_ACCESS_KEY="votre-cle-acces"
export SUBNOTO_SECRET_KEY="votre-cle-secrete-hex"
<?php
require_once 'vendor/autoload.php';
use Subnoto\ApiClient\SubnotoClient;
use Subnoto\ApiClient\SubnotoConfig;
$config = new SubnotoConfig();
$client = new SubnotoClient($config);
// Vérifier l'authentification
$whoami = $client->utils()->publicUtilsWhoamiPost();
echo "Authentifié en tant que : " . $whoami->getTeamName() . "\n";
// Lister les espaces de travail
$workspaces = $client->workspace()->publicWorkspaceListPost();
foreach ($workspaces as $ws) {
echo "Espace de travail : " . $ws->getName() . "\n";
}
use Subnoto\ApiClient\Model\PublicEnvelopeCreateFromFilePostRequest;
$request = new PublicEnvelopeCreateFromFilePostRequest([
'workspace_id' => 'votre-workspace-id',
'name' => 'Contrat à signer',
'document' => fopen('/chemin/vers/document.pdf', 'r'),
]);
$envelope = $client->envelope()->publicEnvelopeCreateFromFilePost(
workspace_id: $request->getWorkspaceId(),
name: $request->getName(),
document: $request->getDocument(),
);
echo "Enveloppe créée : " . $envelope->getId() . "\n";
use Subnoto\ApiClient\SubnotoError;
try {
$result = $client->workspace()->publicWorkspaceGetPost(
new \Subnoto\ApiClient\Model\PublicWorkspaceGetPostRequest([
'workspace_id' => 'id-inexistant',
])
);
} catch (SubnotoError $e) {
echo "Erreur API ({$e->getStatusCode()}) : {$e->getMessage()}\n";
}

Le SubnotoClient fournit des sous-clients typés pour chaque groupe d’API :

Sous-clientMéthode d’accèsDescription
Envelope$client->envelope()Créer, envoyer, signer des enveloppes et gérer les documents
Workspace$client->workspace()Lister et gérer les espaces de travail
Contact$client->contact()Créer et gérer les contacts
Template$client->template()Lister les modèles
Logs$client->logs()Consulter les journaux d’audit
Authentication$client->authentication()Créer des tokens iframe pour la signature intégrée
Utils$client->utils()Endpoints utilitaires (whoami)

SubnotoConfig accepte les paramètres suivants :

ParamètreVariable d’environnementDescription
accessKeySUBNOTO_ACCESS_KEYVotre clé d’accès API
secretKeySUBNOTO_SECRET_KEYVotre clé secrète API (encodée en hexadécimal)
$config = new SubnotoConfig(
accessKey: 'votre-cle-acces',
secretKey: 'votre-cle-secrete-hex',
);

Le SDK PHP utilise l’extension native oak_client_php pour établir un tunnel chiffré avec les enclaves AMD SEV-SNP de Subnoto. Cela garantit un chiffrement de bout en bout entre votre application et l’enclave, avec une attestation cryptographique que le serveur s’exécute dans une enclave sécurisée authentique.

Le tunnel est établi automatiquement lors de la création d’une instance SubnotoClient. La gestion des sessions (incluant la relance automatique en cas d’erreur de tunnel) est gérée de manière transparente.