RDS
Digital Signage RDS — Documentación
ES EN CA FR PT

Introduction à l'API

L'API REST publique de Digital Signage RDS vous permet d'intégrer des tiers à votre compte, d'automatiser des tâches ou de construire votre propre tableau de bord.


1. Démarrer en 3 étapes

  1. Ouvrez votre Profil et allez sur l'onglet API.
  2. Créez une nouvelle clé en lui donnant un nom (p. ex. Zapier), choisissez l'expiration et les permissions (lecture seule ou lecture + écriture).
  3. Copiez le jeton (rds_live_…). Il ne sera plus affiché. Si vous le perdez, vous devrez en créer un autre.

2. Authentification

Passez le jeton dans l'en-tête Authorization comme Bearer token :

curl -H "Authorization: Bearer rds_live_xxxxx" \
     https://rds.digitalsignagerds.com/api/v1/me

Un bon premier test est GET /me : il vous renvoie la clé et le compte associé.

Permissions (scopes)

Chaque clé porte un ensemble de permissions :

Permission Ce qu'elle permet
read Lister et lire les ressources (GET)
write Téléverser du contenu et modifier des ressources (POST)

Les clés en lecture seule ne peuvent pas téléverser d'images/vidéos ni rien modifier. Elles renverront 403 insufficient_scope.

Expiration et révocation

Les clés peuvent expirer automatiquement (30 jours, 90 jours, 1 an ou "Pas d'expiration"). Vous pouvez aussi les révoquer manuellement depuis votre profil. Une clé expirée ou révoquée renvoie 401 Token has expired ou 401 Token has been revoked.


3. Limite de débit

60 requêtes par minute par jeton. Au-delà, vous obtenez un 429 Too Many Requests avec un en-tête Retry-After: <secondes> qui indique combien de temps attendre.


4. Réponses

Ressource unique

{
  "object": "device",
  "id": 1138,
  "code": "RDSDF25",
  "...": "..."
}

Listes (pagination par curseur)

{
  "object": "list",
  "url": "/api/v1/devices",
  "data": [ { ... }, { ... } ],
  "has_more": true,
  "next_cursor": "1142"
}

Pour obtenir la page suivante, passez next_cursor comme starting_after :

GET /api/v1/devices?starting_after=1142&limit=20

Paramètres acceptés dans les listes :

Paramètre Valeur Par défaut
limit 1–100 20
starting_after id entier 0 (premier résultat)

Erreurs

{
  "error": {
    "type": "unauthorized",
    "message": "Invalid token"
  }
}

Types d'erreur fréquents :

Code Type Quand
401 unauthorized Jeton absent, mal formé, inconnu, révoqué ou expiré
403 insufficient_scope La clé n'a pas la permission requise
403 quota_exceeded Quota de l'entreprise atteint (devices, images, videos)
404 not_found La ressource n'existe pas ou n'est pas visible pour votre compte
405 method_not_allowed Méthode HTTP non autorisée sur ce chemin
413 file_too_large Le fichier dépasse la limite
415 unsupported_media_type Extension ou contenu non pris en charge
429 rate_limited Plus de 60 requêtes par minute
500 server_error Erreur inattendue du serveur

5. Endpoints disponibles

Compte

Méthode Chemin Description
GET /me Données de la clé (test rapide d'auth)
GET /account Compte : adresse, contact, limites, usage et abonnement
GET /subscription Abonnement : cycle en cours, compteurs et prochain paiement
GET /invoices Factures (Stripe), plus récentes en premier

Appareils

Méthode Chemin Description
GET /devices Liste des appareils (les retirés sont exclus)
GET /devices/{id_ou_code} Un appareil (accepte id entier ou code RDSxxx)
GET /devices?code=RDSF8B8 Filtrer la liste par code exact

Chaque appareil expose is_online, last_seen_at, playlist_id + playlist_name, workspace_id + workspace_name (+ parent si sous-siège), kiosk_mode, kiosk_whitelist, branch_*, dates de contrat et plus.

Sièges (workspaces)

Méthode Chemin Description
GET /workspaces Liste (sièges et sous-sièges)
GET /workspaces/{id} Un siège avec étiquettes, contenu par défaut et carte

Playlists

Méthode Chemin Description
GET /playlists Liste des playlists
GET /playlists/{id} Playlist avec compteurs d'appareils / images / vidéos

Images

Méthode Chemin Description
GET /images Liste
GET /images/{id} Une image (inclut url pour télécharger le binaire)
POST /images Téléverser (requiert le scope write)

Vidéos

Méthode Chemin Description
GET /videos Liste
GET /videos/{id} Une vidéo (inclut url pour télécharger le binaire)
POST /videos Téléverser (requiert le scope write)

6. Téléverser du contenu

Les endpoints POST /images et POST /videos acceptent multipart/form-data avec deux parties : file (binaire, obligatoire) et name (texte optionnel, le titre visible côté client).

curl -X POST https://rds.digitalsignagerds.com/api/v1/images \
  -H "Authorization: Bearer rds_live_xxxxx" \
  -F "name=Affiche Noël" \
  -F "file=@/chemin/vers/affiche.png"

Contraintes images :

Contraintes vidéos :

La réponse d'un POST réussi est 201 Created avec la ressource nouvellement créée (incluant id, filename, url et crc).


7. Référence interactive

Pour tester chaque endpoint en direct, voir les schémas exacts de réponse et télécharger l'OpenAPI YAML, allez sur la page Référence (Swagger).