API del Calendarizador

Las entradas de video de cada televisión en el sistema Arena son administradas por el sistema Gohner, el cual cuenta con funciones invocadas por puerto serial. A continuación se describe el API del servicio que tendrá por tarea la comunicación con Gohner para el manejo de señal de video en las estaciones del local.

Transmitir señal

Descripción general

_images/request_output_overview.svg
  1. Onsite solicita al calendarizador un cambio en la señal de salida de la estación proporcionada. Si no se proporciona una fecha para hacer el cambio, este se realiza de manera instantánea. Si la solicitud va acompañada de fecha, el cambio en la señal de salida se agenda para el tiempo indicado.
  2. El calendarizador responde con el resultado de agendar la petición.

Flujo

_images/request_output_sequence.svg

Scheduler: POST /schedules

Autorización: Onsite

Mediante esta ruta se solicita un cambio en la salida de video de la estación. Se proporcionan el nombre de la estación y la señal a la cual se hará la transición como sigue:

{
  "stationName" : "TV003",
  "outputName" : "PS4"
}

Desencadenado por esta petición, el calendarizador se comunicará con el servicio de Gohner y solicitará el cambio en la señal de video. Es posible que la petición del cambio no se lleve a cabo en el momento, sino en una fecha en el futuro especificada en el campo switchAt como sigue:

{
  "stationName" : "TV003",
  "outputName" : "PS4"
  "switchAt" : 1480971441
}

Mediante la cual se cambiará la señal cuando la fecha actual del calendarizador sea la especificada en la petición.

Si la solicitud pudo ser procesada se responde con el estado 200 OK. Si la estación o la salida de video solicitadas no existen, se responde con el estado 404 Not Found. Si la fecha para agendar el cambio no está en el futuro, la respuesta será 409 Conflict.

Como observación, una solicitud de transmisión de señal stand by invalida todas las solicitudes previas sobre una estación, es decir, una estación puede tener a lo más una solicitud de cambio a señal de apagado. Una solicitud de cambio de señal distinta a stand by es procesada inmediatamente y no invalida cualquier cambio agendado a stand by en caso de existir. Esto para respetar el horario de apagado de una estación a pesar de haber efectuado un cambio en la señal de video.

Nota

El cambio temporizado en la señal de video de una estación únicamente se lleva a cabo si esta tiene un valor no nulo en el campo screen. Si no existe el campo screen para una estación, esta es tratada como una PC.

Scheduler: POST /schedules/match_group

Autorización: Onsite

Mediante esta ruta se solicita un cambio en la salida de video de un grupo de estaciones. Para cada estación, se proporciona la señal a la cual se hará el cambio en la pantalla. Un ejemplo de esquema de petición aceptada es el siguiente:

{
  "matchGroupId": 4576,
  stations: [
    {
      "stationName" : "TV003",
      "outputName" : "PS4"
    },
    {
      "stationName" : "TV008",
      "outputName" : "XBOX"
    }
  ]
}

Desencadenado por esta petición, el calendarizador se comunicará con el servicio de Gohner y solicitará el cambio en la señal de video para cada una de las estaciones inicadas. Es posible que la petición del cambio no se lleve a cabo en el momento, sino en una fecha en el futuro especificada en el campo switchAt como sigue:

{
  "matchGroupId": 4576,
  "switchAt" : 1480971441,
  "stations": [
    {
      "stationName" : "TV003",
      "outputName" : "PS4"
    },
    {
      "stationName" : "TV008",
      "outputName" : "PS4"
    }
  ]
}

Mediante la cual se cambiarán las señales cuando la fecha actual del calendarizador sea la especificada en la petición.

Si la solicitud pudo ser procesada se responde con el estado 200 OK. Si alguna estación o salida de video solicitadas no existen, se responde con el estado 404 Not Found. Si la fecha para agendar el cambio no está en el futuro, la respuesta será 409 Conflict.

Como observación, una solicitud de transmisión de señal stand by invalida todas las solicitudes previas sobre una estación, es decir, una estación puede tener a lo más una solicitud de cambio a señal de apagado. Una solicitud de cambio de señal distinta a stand by es procesada inmediatamente y no invalida cualquier cambio agendado a stand by en caso de existir. Esto para respetar el horario de apagado de una estación a pesar de haber efectuado un cambio en la señal de video.

Nota

El cambio temporizado en la señal de video de una estación únicamente se lleva a cabo si ésta tiene un valor no nulo en el campo screen. Si no existe el campo screen para una estación, ésta es tratada como una PC.

Creación de estación

Al crear una estación por parte de un usuario del local, dicha estación debe crearse en la base del manejador de estaciones con el fin de permitir el envío de señales de video. El comportamiento de la creación se describe a continuación.

Flujo

Scheduler: POST /stations

Autorización: Onsite

Mediante esta ruta se solicita la creación de una estación en el registro del calendarizador. El cuerpo de la petición es el siguiente

name: Estación 2
screen: 3

Como consecuencia, se generará en el calendarizador un nuevo registro con los valores de la estación descritos. Para peticiones de cambio de señal futuras, el calendarizador hará uso del campo screen para la comunicación con el servicio de switch de señal.

La ruta responde con el estado 201 Created acompañado de la estación recién creada. Si ya existe otra estación con el nombre o la pantalla registrados, se reemplaza el registro existente en el calendarizador con el recién proporcionado.

Actualización de una estación

La actualización en nombre o identificador de pantalla en el servidor Onsite se notifica a su respectivo calendarizador como se describe en el siguiente flujo.

Flujo

Scheduler: PUT /stations/name

Autorización: Onsite

Mediante esta ruta se solicita la actualización de los campos en una estación. El cuerpo de la petición es el siguiente

name: Estación 2
screen: 3

Como consecuencia a la recepción de la petición, se actualiza la información de la estación con los campos que se proporcionan. Esta ruta responde con el estado 200 OK si la actualización de los campos fue exitosa. Si la estación no pudo ser encontrada se responde con el estado 404 Not Found. Si ya existe otra estación con el nombre o la pantalla proporcionados, se responde con el estado 409 Conflict.

Borrado de una estación

Al eliminar una estación de la sucursal, es necesario que se reporte el borrado al calendarizador con el objetivo de mantener los registros consistentes. A continuación se describe el flujo empleado.

Flujo

Scheduler: DELETE /stations/name

Autorización: Onsite

Mediante esta ruta se solicita el borrado de una estación en el registro del calendarizador. La ruta responde con el estado 200 OK acompañado de la estación eliminada. Si la estación a eliminar no se encuentra, se responde con el estado 404 Not Found. El borrado de la estación es hard delete.

Notificación de señal cambiada

Descripción general

_images/output_notification_overview.svg
  1. Cuando ocurre un cambio en la salida de video se notifica a Onsite para que este realice los ajustes de tiempo pertinentes a los jugadores en la estación. En caso de que el cambio en la salida no corresponda a una petición de cambio agendada para el futuro, no se envía la notificación.
  2. El servidor Onsite responde con el resultado de la recepción de la notificación.

Flujo

_images/output_notification_sequence.svg

En caso de que se lleve a cabo un cambio temporizado en la señal de video de una estación, se debe notificar a Onsite con el fin de que este tome medidas pertinentes sobre el tiempo de los jugadores. Esto se logra mediante la invocación a la ruta POST /stations/standby_status.