API v2
L'API de référence. Elle ne manipule que des données chiffrées : le chiffrement se fait chez toi, avec le SDK.
Deprecation / Sunset). Migre vers la v2.Authentification
Deux types de jetons, tous deux en Authorization: Bearer … :
- Jeton d'application (
dvc_at_…) obtenu via OAuth 2.1 + PKCE: confiné au dossier de l'application. - Jeton personnel (
dvc_pat_…), créé dans Réglages → Jetons personnels, pour tes propres scripts : accès à tout le drive selon ses permissions (drive:read|write|delete|share).
@drivecord/node qui fait tout le chiffrement.Envoyer un fichier
POST /api/v2/uploadsavec{ fileId, size }(identifiant de 21 caractères généré chez toi, taille chiffrée).PUT /api/v2/uploads/:id/chunks/:ipour chaque morceau (application/octet-stream, 8 Mio + 16 octets, tous sauf le dernier).POST /api/v2/uploads/:id/completeavec{ 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/Remaining/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 & synchronisation
GET /files et /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.