Saltar a contenido

Sesiones

Una sesión está definida por una fecha y hora, un contenido y, opcionalmente, el aforo disponible.

Según esta definición, se entiende que una misma sesión puede ser compartida por varios tickets. Los tickets "Entrada adulto", "Entrada niño", "Entrada junior", "Entrada senior" y "Entrada discapacitado" pueden tener asociadas las mismas sesiones durante el año en curso (por ejemplo, 10 sesiones al día durante los 365 días del año).

Como esta casuística puede ser habitual, se ha procurado separar lo máximo posible la estructura de sesiones del catálogo de productos. Siguiendo con el ejemplo anterior, si se definiesen las sesiones en el catálogo de productos tendríamos 10 sesiones x 365 días = 3650 sesiones para cada uno de los 5 tickets ("Entrada adulto, "Entrada niño", "Entrada junior", "Entrada senior" y "Entrada discapacitado").

Por lo tanto, se define la estructura de sesiones, para minimizar la carga de datos y jerarquizar lo mejor posible el catálogo de sesiones.

Método de acceso

POST activity/sessions

Estructura de la petición

Para obtener las sesiones podemos utilizar diferentes filtros en el cuerpo del método. Cada filtro se considerará un AND.

  • SessionsGroupProfileIds: (list). Array de perfiles de grupos de sesión.
    • (string): Identificador del perfil de grupo de sesión.
  • SessionsGroupIds: (list). Array de grupos de sesión.
    • (string): Identificador del grupo de sesión.
  • SessionContentProfileIds: (list). Array de perfiles de contenido de sesión.
    • (string): Identificador del perfil de contenido de sesión.
  • FromDate: (string). Filtrado por fecha de inicio. No permite valores menores al día de hoy. El valor por defecto es el día actual. Formato ISO 8601 (yyyy-MM-dd).
  • ToDate: (string). Filtrado por fecha de fin. Su valor por defecto es la fecha correnpondiente a dentro de un año. Formato ISO 8601 (yyyy-MM-dd).
  • Dates: (list). Array de fechas por las que filtrar. Formato ISO 8601 (yyyy-MM-dd).
    • (date): Identificador del proveedor.
  • LanguageCode: (string). Código del idioma de los contenidos.

Ejemplos de petición

{
    "SessionsGroupProfileIds": 
    [
        "dj48vjsyufvyu",
        "ajr7v0alt62hl"
    ]
}
{
    "SessionContentProfileIds": 
    [
        "xar5v1blt61h2",
        "z2rrv6alvb2hs"
    ]
}
{
    "SessionsGroupIds": 
    [
        "ajr7v0alt62hl"
    ]
}
{
    "FromDate": "2000-01-06",
    "ToDate": "2000-01-20"
}
{
    "Dates": 
    [
        "2000-01-06",
        "2000-05-12",
        "2000-07-21"
    ]
}
{
   "SessionsGroupProfileIds": 
   [
       "dj48vjsyufvyu"
   ],
   "SessionContentProfileIds": 
   [
        "xar5v1blt61h2"
   ],
   "FromDate": "2000-01-06",
   "ToDate": "2000-10-20"
}

Estructura de la respuesta

  • SessionsGroupProfiles: (list). Array de perfiles de grupos de sesión.
    • SessionsGroupProfileId: (string). Identificador del perfil de grupos de sesión.
    • SessionsGroupProfileName: (string). Nombre del perfil de grupos de sesión.
    • SessionTimeAvailabilityOffset: (int). Cantidad de minutos antes (si el valor es negativo) o después (si el valor es positivo) en la que la sesión puede estar a la venta con respecto a la hora de la sesión.
    • SessionStartTimeType: (int). Identificador numérico que indica el tipo de inicio de acceso de la sesión.
      • 0: (int): Acceso a la hora indicada.
      • 1: (int): Acceso a partir de la hora indicada.
    • SessionsGroups: (list). Array de grupos de sesiones.
      • SessionsGroupId: (string). Identificador del grupo de sesiones.
      • SessionsGroupName: (string). Nombre del grupo de sesiones.
      • Sessions: (list). Array de sesiones.
        • SessionId: (string). Identificador de la sesión.
        • SessionTime: (date). Fecha y hora de la sesión.
        • AvailableCapacity: (int). Valor que indica el aforo de la sesión. Si este campo no existe, es que no hay un aforo limitado. Si sólo se quiere consultar el aforo de una sesión, se puede utilizar el método descrito en Obtención del aforo disponible.
  • SessionContentProfiles: (list). Array de perfiles de contenidos de sesión.
    • SessionContentProfileId: (string). Identificador del perfil de contenidos de sesión.
    • SessionContentProfileName: (string). Nombre del perfil de contenidos de sesión.
    • SessionContents: (list). Array de contenidos de sesión.
      • SessionContentId: (string). Identificador del contenido de sesión.
      • SessionContentName: (string). Nombre del contenido de sesión.
      • SessionContentDescription: (string). Descripción del contenido de sesión.
  • Success (boolean): valor que indica si la llamada ha sido procesada correctamente o no.
  • Timestamp (dateTime): instante de tiempo en el que se procesó la petición. Formato ISO 8601 (yyyy-MM-ddThh:mm:ss.fffffff).
  • ErrorMessage (string): mensaje de error explicando por qué la petición no ha sido correcta. En caso que haya sido correcta, devolverá null.
  • ErrorCodes (string[]): lista de códigos que identifican los errores que se hayan producido en la llamada.
  • ErrorEntityBreakDown (list): Lista que contiene objetos con el nombre e ID en caso de error.
    • Id (string): Identificador
    • Name (string): Nombre relacionado del identificador.

Ejemplo de respuesta

Como ejemplo, supongamos que tenemos un perfil de grupos de sesión por defecto y un perfil de contenidos de sesión por defecto.

Dentro del perfil de grupos de sesión vemos que tenemos dos grupos de sesión:

  • Sesiones de mañana, que agrupa las sesiones de las 10:00h de la mañana.
  • Sesiones de tarde, que agrupa las sesiones de las 17:00h de la tarde.

En el perfil de contenidos de sesión tenemos tres contenidos de sesión, que definen películas (la 1, la 2 y la 3).

Observado desde un punto de vista inverso, las entidades más importantes son las sesiones por una parte y los contenidos por otra. Ambas entidades tienen agrupaciones superiores (grupos y perfiles), con el único objetivo de jerarquizar la estructura.

Importante

En este punto sólo se ha definido qué sesiones hay y qué contenidos existen, pero no sabemos qué relación hay entre sesiones y contenidos. Eso es responsabilidad del apartado de sesiones del catálogo de productos.

{
    "SessionsGroupProfiles": 
    [
        {
            "SessionsGroupProfileId": "cwj3q99xa8ara",
            "SessionsGroupProfileName": "Perfil de grupos por defecto",
            "SessionStartTimeType": 0,
            "SessionsGroups": 
            [
                {
                    "SessionsGroupId": "7q59grjg1tuxw",
                    "SessionsGroupName": "Sesiones de mañana",
                    "Sessions": 
                    [
                        {
                            "SessionId": "5b8qkqnmhdmk1",
                            "SessionTime": "2017-06-21T10:00:00",
                            "AvailableCapacity": 165
                        },
                        {
                            "SessionId": "5o3bwhx1ze1m1",
                            "SessionTime": "2017-09-06T10:00:00",
                            "AvailableCapacity": 230
                        }
                    ]
                },
                {
                    "SessionsGroupId": "gg5dfgrg1t12w",
                    "SessionsGroupName": "Sesiones de tarde",
                    "Sessions": 
                    [
                        {
                            "SessionId": "8qkqhdmknm5b1",
                            "SessionTime": "2017-06-21T17:00:00",
                            "AvailableCapacity": 165
                        },
                        {
                            "SessionId": "5hx1z3bowe1m1",
                            "SessionTime": "2017-09-06T17:00:00",
                            "AvailableCapacity": 230
                        }
                    ]
                }
            ]
        }
    ],
    "SessionContentProfiles": 
    [
        {
            "SessionContentProfileId": "5e8f65nherwpc",
            "SessionContentProfileName": "Perfil de contenidos por defecto",
            "SessionContents": 
            [
                {
                    "SessionContentId": "fiajih99h79ak",
                    "SessionContentName": "Película 1"
                },
                {
                    "SessionContentId": "m6noaxhzr33an",
                    "SessionContentName": "Película 2"
                },
                {
                    "SessionContentId": "suefs1zzn5ser",
                    "SessionContentName": "Película 3"
                }
            ]
        }
    ],
    "Success": true,
    "Timestamp": "2022-02-18T17:02:27.8165916"
}