Référence API

API Importation d’horaires

Importation d’horaires : des feuilles de lignes d’horaire

Référence HTTP. Générée à partir du contrat backend. Parcourez les points de terminaison ci-dessous ou téléchargez OpenAPI.

Ce groupe compte 3 opérations, générées à partir de api/openapi.yaml. Filtrez par chemin, action ou authentification. Chaque point de terminaison liste ses entrées ; développez-le pour voir un modèle de requête et les codes de réponse. Les modèles demandent vos propres valeurs et un corps conforme au schéma.

Remplacez les espaces réservés en majuscules par vos valeurs. Pour une requête JSON, enregistrez un corps correspondant au schéma dans request.json. Les exemples de cookies utilisent un pot à cookies local issu d’une session authentifiée.

Importation d’horaires : des feuilles de lignes d’horaire

GET/api/schedule/imports/template

Obtenir le modèle d’importation d’horaires

Répond avec une feuille contenant les colonnes que lit une importation d’horaires et trois lignes d’exemple (un code d’écran, un dossier d’écrans et une étiquette), en CSV ou, avec format=xlsx, en classeur XLSX.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScheduleImportTemplate

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
formatrequêteoptionnel
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/schedule/imports/template'

Réponses

StatutSensCorps et en-têtes
200La feuille modèle.string (text/csv), string (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/schedule/imports/preview

Aperçu de l’importation d’horaires

Lit une feuille de lignes d’horaire par rapport au projet et répond à ce que ferait sa validation, sans rien écrire.

Chaque ligne nomme une cible (un écran par identifiant, par la valeur d’un champ d’écran comme un code de salle, ou par nom ; folder:NAME ; tag:NAME ; plusieurs séparées par ; ou |), un contenu (un nom de fichier multimédia, ou playlist:NAME ou un identifiant de liste de lecture), un début et une fin (une date seule comme fin ferme ce jour), et facultativement timezone, days (Mon-Fri), une plage quotidienne (daily_start, daily_end), priority de 0 à 100, un nom et des numéros d’affichage.

Les heures sont lues sur l’horloge propre à chaque écran ; une colonne timezone les convertit depuis un autre fuseau.

Chaque ligne est vérifiée et signale ses erreurs par colonne : écran, dossier ou étiquette inconnu ou ambigu, fichier manquant ou ambigu, fichier qui ne peut pas remplir un écran, heures invalides ou inversées, fin dans le passé, aucune indication de temps, écran sans fuseau horaire ni liste de lecture par défaut, deux lignes en vigueur en même temps sur un écran à la même priorité, et plus de niveaux que n’en contient un écran (32), ou plus de campagnes que n’en contient son organisation, tous projets confondus (100 ; chaque niveau partagé en compte une).

Les lignes qui s’accordent sur le contenu, les heures, la priorité et le nom forment un seul niveau : un écran donne une entrée de l’horaire propre à cet écran ; plusieurs écrans, un dossier ou une étiquette donnent un niveau partagé (une campagne), qui l’emporte sur les niveaux propres d’un écran.

La réponse liste les niveaux avec ce que fait une validation à chacun (create, update, unchanged), les niveaux qu’une exécution antérieure de la même importation a créés et que la feuille n’a plus (removals), les piles des écrans telles qu’elles seraient (calendar), et une empreinte à envoyer à la validation. La feuille est des lignes JSON, un CSV ou un XLSX, de 5 000 lignes au plus.

Non disponible pour un appelant limité aux écrans (outside_screen_scope). L’importation d’horaires fait partie du forfait Enterprise ; un projet dont le forfait n’inclut pas cette fonctionnalité est refusé avec feature_not_in_plan (402). Le modèle est ouvert à tous les forfaits.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScheduleImportRequest
ID d’opération
previewScheduleImport

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
namerequêteoptionnelLe nom de l’importation ; importer de nouveau sous le même nom met à jour les niveaux qu’elle a créés (default import). Envoyé avec un corps de fichier.
fuseau horairerequêteoptionnelLe fuseau IANA dans lequel les heures sont écrites quand une ligne n’a pas de timezone. Sans fuseau, les heures sont lues sur l’horloge propre à chaque écran.
sourcerequêteoptionnelLe nom du fichier, enregistré avec l’importation.
code_fieldrequêteoptionnelLire un code d’écran seulement dans ce champ d’écran (par exemple code ou room_id) ; sinon un code correspond à n’importe quel champ.

Champs du corps de la requête

ChampDescription
nom (optionnel, chaîne)Identifie l’importation ; le même nom met à jour les niveaux qu’elle a créés (default import). minLength: 1 maxLength: 80
source (facultatif, chaîne)Le fichier d’où viennent les lignes. maxLength: 200
fuseau horaire (optionnel, chaîne)Le fuseau IANA dans lequel les heures sont écrites quand une ligne n’a pas de timezone.
code_field (facultatif, chaîne)Lire un code d’écran seulement dans ce champ d’écran.
fingerprint (facultatif, chaîne)L’empreinte de l’aperçu ; requise par la validation.
rows (obligatoire, tableau)
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/schedule/imports/preview'

Réponses

StatutSensCorps et en-têtes
200L’aperçu. valid est false tant qu’une ligne a une erreur.ScheduleImportPreview (application/json)
402feature_not_in_plan — L’importation d’horaires fait partie du forfait Enterprise ; le problème nomme la fonctionnalité, le forfait du compte et required_plan.Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/schedule/imports

Valider l’importation d’horaires

Valide une importation prévisualisée : la même feuille et l’empreinte que son aperçu a renvoyée. Chaque niveau est créé, mis à jour ou supprimé, les horaires des écrans et les niveaux partagés sont écrits en une seule transaction, et l’événement d’importation schedule.imported est ajouté : toutes les lignes s’appliquent ou aucune.

Les listes de lecture à fichier unique dont les fichiers de la feuille ont besoin sont créées en premier (elles ne changent rien sur aucun écran). Une feuille dont les lignes ont des erreurs est refusée (schedule_import_invalid) ; un projet qui a changé depuis l’aperçu, ou des lignes qui se lisent autrement, est refusé (schedule_import_stale), et le client refait un aperçu.

Importer de nouveau la même feuille sous le même nom ne change rien ; une ligne modifiée met à jour son niveau et une ligne retirée supprime son niveau. Demande une personne qui peut approuver dans le tableau de bord et, pour un agent, des identifiants avec accès en écriture.

Une validation qui mettrait à jour ou supprimerait une campagne réservée répond reserved_item (403) et n’écrit rien, sauf si elle est validée par une personne qui peut approuver.

Une validation qui atteint un écran protégé est refusée en entier avec protected_target, même quand l’importation n’a aucun niveau mais retire les entrées d’importation d’un écran protégé ou supprime une campagne d’importation dont l’audience en atteint un.

Dans un projet avec des dossiers d’écrans protégés, une validation dont l’aperçu échoue à cause d’un service, et non de la feuille, répond dependency_unavailable et n’écrit rien : renvoyez la même requête après une courte attente. Une erreur de validation de feuille, de campagne ou d’écran répond comme la validation le ferait (invalid_request et les autres problèmes ci-dessus).

Non disponible pour un appelant limité aux écrans. L’importation d’horaires fait partie du forfait Enterprise ; un projet dont le forfait n’inclut pas cette fonctionnalité est refusé avec feature_not_in_plan (402). Le modèle est ouvert à tous les forfaits.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScheduleImportRequest
ID d’opération
commitScheduleImport

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
fingerprintrequêteoptionnelL’empreinte de l’aperçu, pour un corps CSV ou XLSX ; un corps JSON la porte comme membre.
namerequêteoptionnelLe nom de l’importation ; importer de nouveau sous le même nom met à jour les niveaux qu’elle a créés (default import). Envoyé avec un corps de fichier.
fuseau horairerequêteoptionnelLe fuseau IANA dans lequel les heures sont écrites quand une ligne n’a pas de timezone. Sans fuseau, les heures sont lues sur l’horloge propre à chaque écran.
sourcerequêteoptionnelLe nom du fichier, enregistré avec l’importation.
code_fieldrequêteoptionnelLire un code d’écran seulement dans ce champ d’écran (par exemple code ou room_id) ; sinon un code correspond à n’importe quel champ.

Champs du corps de la requête

ChampDescription
nom (optionnel, chaîne)Identifie l’importation ; le même nom met à jour les niveaux qu’elle a créés (default import). minLength: 1 maxLength: 80
source (facultatif, chaîne)Le fichier d’où viennent les lignes. maxLength: 200
fuseau horaire (optionnel, chaîne)Le fuseau IANA dans lequel les heures sont écrites quand une ligne n’a pas de timezone.
code_field (facultatif, chaîne)Lire un code d’écran seulement dans ce champ d’écran.
fingerprint (facultatif, chaîne)L’empreinte de l’aperçu ; requise par la validation.
rows (obligatoire, tableau)
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/schedule/imports'

Réponses

StatutSensCorps et en-têtes
200Ce que la validation a appliqué.ScheduleImportCommitted (application/json)
402feature_not_in_plan — L’importation d’horaires fait partie du forfait Enterprise ; le problème nomme la fonctionnalité, le forfait du compte et required_plan.Problème (application/problem+json)
403

outside_screen_scope ou approver_required comme sur ScreenScopePlays, ou reserved_item - une campagne réservée n’est modifiée, mise en pause, supprimée ni dé-réservée que par une personne qui peut approuver les révisions, jamais par un agent ou un client de service (docs/screen-scope.md).

Problème (application/problem+json)
409

protected_target - la modification atteint un écran d’un dossier d’écrans protégé et n’a aucune forme de révision (docs/screen-scope.md). Levez la protection du dossier au moyen d’une révision, effectuez la modification, puis protégez de nouveau le dossier.

Problème (application/problem+json)
500dependency_unavailable - la vérification des dossiers d’écrans protégés n’a pas pu s’exécuter ; renvoyez la même requête après une courte attente.Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)