Corddéveloppeurs

API Drivecord

L'API de référence. Elle ne manipule que des données chiffrées : le chiffrement se fait chez toi, avec le SDK.

Authentification

Deux types de jetons, tous deux en Authorization: Bearer … :

Envoyer un fichier

  1. POST /api/v2/uploads avec { fileId, size } : identifiant de 21 caractères généré chez toi, taille chiffrée.
  2. PUT /api/v2/uploads/:id/chunks/:i pour chaque morceau (application/octet-stream, 8 Mio + 16 octets, tous sauf le dernier).
  3. POST /api/v2/uploads/:id/complete avec { encMeta, fkWrapped, noncePrefix }.
curl -X POST https://drivecord.app/api/v2/uploads \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"fileId":"aBcDeFgHiJkLmNoPqRsTu","size":1048592}'

Conventions

Erreurs

Toujours { "error": { "code", "message", "requestId" } }. Le code est stable (insufficient_scope, rate_limited, chunk_mismatch…).

Idempotence

Envoie Idempotency-Key sur les POST : la même requête est rejouée pendant 24 h, une requête différente avec la même clé donne 422.

Limites

En-têtes RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset et Retry-After. Quota d'envoi quotidien par compte.

CORS

Jamais * sur les routes authentifiées : seules les origines enregistrées pour le jeton sont autorisées.

Pagination et synchronisation

GET /files et GET /folders utilisent un cursor. GET /changes?cursor= (jetons personnels) renvoie le journal des modifications du drive.

Fichiers publics

visibility: "public" à la création stocke le fichier en clair pour pouvoir le servir en lien direct (POST /files/:id/public). Un fichier chiffré ne peut jamais avoir de lien public.

Référence complète

Spécification OpenAPI 3.1 : openapi-v2.json.