Aller au contenu principal
API SecuFile

Une API double : REST native + endpoint S3-compatible

Intégrez avec boto3, s3cmd, rclone, ou directement via REST. Webhooks signés, SDK Python/Go.

# Uploader un document chiffré côté client puis demander la signature
curl -X POST https://api.secuaas.com/v1/secufile/documents \
  -H "Authorization: Bearer $SECUFILE_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "filename": "promesse-achat-12345.pdf",
    "ciphertext_url": "https://blob.example.com/abc123",
    "key_wrap": "vault://kms/key/01HX...",
    "signers": [{"email":"client@example.com","role":"buyer"}]
  }'
# → { "document_id": "doc_01HX...", "signature_url": "https://..." }
bash

Auth Bearer

Tokens API avec scopes granulaires (documents:read, documents:write, signatures:create, audit:read…).

Idempotency-Key

Tous les POST acceptent un header Idempotency-Key (UUID v4) pour la sécurité de retry et la dédup en cas d'erreur réseau.

Webhooks signés HMAC

Header `X-Secufile-Signature` (SHA-256), payload immuable, replay protection via `X-Secufile-Timestamp`.

OpenAPI 3.1

Schéma complet, génération de clients automatique, Postman collection, examples curl/Python/Go.

Vérification webhook

Chaque webhook envoyé par SecuFile est signé. Vérifiez la signature côté serveur pour rejeter les payloads non authentiques.

webhook-verify.js
// Vérification HMAC-SHA256 d'un webhook SecuFile
import crypto from 'node:crypto';

function verify(signature, body, secret) {
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected),
  );
}

Endpoints principaux

  • POST /v1/documentsUploader un document chiffré
  • GET /v1/documents/{id}Métadonnées + clé wrappée
  • POST /v1/documents/{id}/signaturesDemander une signature
  • POST /v1/sharesCréer un lien signé à expiration
  • GET /v1/auditFlux d'audit immutable, filtres par utilisateur/bucket/action, export SIEM.
  • POST /v1/webhooksEnregistrer un webhook signé (object.uploaded, share.accessed, retention.expired).