Parcourir la documentation

Permissions (scopes)

Une clé ne fait que ce que vous avez coché. Les permissions se nomment ressource:accès. Un appel hors permission répond 403 API_SCOPE_MISSING:<scope>, et le suffixe nomme la permission à ajouter.

Le catalogue

PermissionRoutes ouvertes
account:readGET /me
account.notifications:readGET /account/notifications
account.access:readGET /account/access
account.ssh_keys:readGET /ssh-keys, GET /ssh-keys/{id}
account.ssh_keys:writePOST /ssh-keys, DELETE /ssh-keys/{id}
services:readGET /services, GET /services/{code}
services:writePATCH /services/{code} ; POST /services/{code}/renew avec billing.invoices:pay
services.metrics:readGET /services/{code}/status, GET /services/{code}/metrics/history
services.addons:readGET /services/{code}/addons
services.power:writePOST /services/{code}/power ; actions power, start_vps, stop_vps, reboot_vps
services.console:writePOST /services/{code}/console/command ; action send_console_command
services.backups:readGET /services/{code}/backups ; action backup_list
services.backups:writePOST /services/{code}/backups, DELETE /services/{code}/backups/{backupId}, POST /services/{code}/backups/restore ; actions backup_create, backup_delete, backup_restore
services.firewall:readaction firewall_list
services.firewall:writeactions firewall_create, firewall_update, firewall_move, firewall_delete
services.rdns:writeaction rdns, y compris op: "get"
services.reinstall:writePOST /services/{code}/reinstall
billing.invoices:readGET /invoices, GET /invoices/{code}, GET /invoices/{code}/pdf
billing.credit_notes:readGET /credit-notes, GET /credit-notes/{code}/pdf
billing.balance:readGET /balance, GET /balance/transactions
billing.payment_methods:readGET /payment-methods
billing.invoices:payPOST /invoices/{code}/pay, POST /orders/{orderNumber}/pay, POST /services/{code}/renew ; POST /orders quand il paie
billing.saved_methods:chargeles quatre routes ci-dessus quand le financement est saved_method ou account_default. Ne s'utilise jamais seul
catalog:readGET /catalog/products, GET /catalog/products/{shortname}
orders:readGET /orders, GET /orders/{orderNumber}
orders:writePOST /orders
tickets:readGET /tickets, GET /tickets/{ticketNumber}
tickets:writePOST /tickets, POST /tickets/{ticketNumber}/messages, POST /tickets/{ticketNumber}/close

Deux routes échappent au tableau : GET /me/key ne demande aucune permission, et GET /v1/openapi.json ne demande aucune clé.

POST /services/{code}/actions/{action} n'a pas de permission fixe. Elle dépend de l'action envoyée : voir la colonne « actions » ci-dessus et le tableau complet dans Gérer vos services.

Comment un :write implique un :read

Un :write implique le :read du même nom exact, rien de plus.

Vous avezVous obtenez aussi
services:writeservices:read
services.backups:writeservices.backups:read
services.firewall:writeservices.firewall:read
account.ssh_keys:writeaccount.ssh_keys:read
orders:writeorders:read
tickets:writetickets:read

Ce qui ne s'implique pas, malgré le préfixe commun :

  • services:write ne donne ni services.metrics:read, ni services.backups:read, ni services.addons:read, ni services.firewall:read.
  • billing.invoices:pay ne donne pas billing.invoices:read : payer une facture et la lire sont deux permissions.
  • services.rdns:write et services.reinstall:write n'ont pas de :read correspondant.

Ce que la permission ne suffit pas à obtenir

Les droits effectifs sont l'intersection de la permission, de la restriction de services de la clé, et de l'état du service.

CasRéponse
Service hors de la restriction de la clé404 SERVICE_NOT_FOUND
Service suspendu ou résilié, routes relayées (/power, /console/command, /actions/{action})409 SERVICE_NOT_ACTIVE
Service suspendu ou résilié, routes déléguées (sauvegardes, restauration, réinstallation)400 SERVICE_NOT_ACTIVE
Service en recouvrement, mêmes routes déléguées400 SERVICE_IN_DUNNING
Service sans instance provisionnée409 sur les routes relayées, 400 INSTANCE_NOT_PROVISIONED sur les déléguées
Action inconnue de la plateforme403 API_ACTION_NOT_ALLOWED:<action>

Choisir les permissions

  • Partez de ce que l'intégration fait aujourd'hui. Élargir une clé demande une confirmation d'identité, pas une nouvelle clé.
  • Une supervision ou un export comptable n'a besoin que de permissions :read.
  • billing.saved_methods:charge ne va que sur la clé qui doit débiter, avec un plafond à la mesure de la tâche. C'est la seule permission qui impose un plafond.
  • services.reinstall:write détruit le disque. Réservez-la à la clé qui réinstalle.