Funciones de jugadores

A continuación se describen las operaciones que pueden realizar los jugadores a través del portal en línea o de la aplicación móvil.

Gestión de credenciales

Inicio de sesión

Flujo

El inicio de sesión se lleva a cabo como se indica en Offsite: POST /players/login.

Cierre de sesión

Flujo

El cierre de sesión se lleva a cabo como se indica en Offsite: POST /players/logout.

Cambio de contraseña

Flujo

Se hace uso de la siguiente ruta para solicitar el cambio de contraseña de un jugador:

Offsite: PUT /players/password

Autorización: Player

Mediante esta ruta se proporciona la contraseña actual del jugador, así como la nueva contraseña que reeemplazará la anterior. El cuerpo de la petición es el siguiente:

password: lUH65
newPassword: hjfLU5

Como consecuencia de la invocación a la petición, el servidor Offsite realiza el cambio en la contraseña del jugador. Sin embargo, el Access Key del jugador permance sin alteraciones para evitar un nuevo inicio se sesión.

Esta ruta responde con el estado 200 OK indicando que el cambio en la contraseña fue correcto. Si la longitud de la nueva contraseña es menor a 6 caracteres, se responde con el estado 422 Unprocessable Entity. Si la contraseña ingresada en password no coincide con la actual, se responde con el estado 409 Conflict.

Recuperación de contraseña

Flujo

Offsite: POST /templates/player_password

Mediante esta ruta se solicita el envío de un correo de recuperación de contraseña para el jugador indicado en el cuerpo de la petición, renovando así el Access Key del jugador.

Con los valores subject y secret se envía un correo al jugador con una liga para el restablecimiento. La nueva fecha de expiración del Access Key será de 3 días a partir de la fecha de creación.

La ruta responde con el estado 200 OK indicando así que se envió un correo al jugador para que este pueda restablecer su contraseña. Si ya se ha solicitado un restablecimiento de contraseña (la fecha de solicitud es no nula), se establece el campo requested_password_recovery_at como la fecha de recepción de la última petición.

Si no se encuentra el jugador indicado en la petición, se responde con el estado 404 Not Found.

Para finalizar el flujo, el restablecimiento de contraseña se lleva a cabo mediante la ruta siguiente ruta.

Offsite: POST /players/password

Autorización: Player

Mediante esta ruta, se solicita el establecimiento de contraseña del jugador que lleva a cabo la petición. El cuerpo de la petición contiene únicamente el campo de contraseña a establecer.

Al recibir esta petición, se marca como expirado el Access Key del jugador cuyo secret se recibe en la petición. Esto con el objetivo de que el Key generado para el restablecimiento de contraseña sea de un solo uso. Adicionalmente, se elimina el campo requestPasswordRecoveryAt.

La ruta responde con el estado 200 OK como resultado de la modificación de la contraseña. Si el usuario no solicitó restablecimiento de contraseña, se responde con el estado 403 Forbidden.

Gestión de perfil

Registro de jugador

A continuación se indica la ruta empleada para dar de alta a un nuevo jugador desde el portal web.

Flujo

Offsite: POST /players

Mediante esta ruta se solicita al servidor Offsite la creación de jugadores. El cuerpo de la petición es el siguiente

name: Macarena
lastName: Buendía Gallegos
birthday: 1987-04-23
email: macarena@domain.com
phone: 5514141414
nick: macamaca
password: YouShallNotPass
gender: 0
avatarId: 3

Como consecuencia, se crea el jugador en el servidor Offsite con los campos que se proporcionan. Si la creación es exitosa se responde con el estado 201 Created.

Si el nick contiene a guest (ignorando mayúsculas y minúsculas) como subcadena, no posee una longitud entre los 4 y los 25 caracteres, o contiene un símbolo no alfanumérico, _ o -, se responde con el estado 409 Conflict. Si el nick o la cuenta del jugador ya existen en el sistema (en caso del correo, para cualquier entidad), o si la fecha de nacimiento no está en el pasado, si la longitud de la contraseña es menor a 6 caracteres, o si la longitud de la cadena de teléfono es mayor a 10 caracteres, se responde con el estado 422 Unprocessable entity. Si no se encuentra el avatar indicado, se responde con el estado 404 Not Found.

Si el género no es una valor de {0, 1}, se responde con el estado 400 Bad Request.

De resultar en un comportamiento exitoso, se envía un correo donde se notifica la creación de la cuenta al jugador.

Visualizar información

Un jugador puede consultar la información de su cuenta y perfil como se describe a continuación.

Flujo

Offsite: GET /player

Autorización: Player

Mediante esta ruta se obtiene la información del jugador que lleva a cabo la petición. La ruta responde con el estado 200 OK acompañado de la siguiente información

id: 212
nick: jajeji
email: jaja@domain.com
avatarId: 56
coinsPerCountry:
  - coinAmount: 0
    isoCode: USD
  - coinAmount: 350
    isoCode: MXN
profile:
  name: Lola
  lastNames: Caradura
  gender: 0
  birthday: 1469491719
defaultLocationId: 6
createdAt: 1469491719

Editar perfil

A continuación se define la ruta empleada por un jugador para editar los campos de su perfil.

Flujo

Offsite: PUT /players

Autorización: Player

Mediante esta ruta se edita la información de perfil de un jugador. El cuerpo aceptado por la petición es el siguiente

name: Macarena
lastNames: Buendía Gallegos
gender: 0
phone: 5543434343
defaultLocationId: 3
avatarId: 2

Como consecuencia de la recepción de la petición, Offsite actualiza la información del usuario con los campos incluidos en la petición.

Si la actualización fue correcta, se responde con el estado 200 OK. Si el local por defecto o el avatar no pudieron ser localizados, se responde con el estado 404 Not Found. Si el género no es un valor en {0, 1}, si los campos de cargo o dirección exceden los 100 caracteres de longitud, o si la longitud de la cadena de teléfono es mayor a 10 caracteres, se responde con el estado 422 Unprocessable entity.

Catálogo de productos

En esta sección se definen las rutas empleadas por el jugador para la consulta y compra de productos de recarga de moneda Arena.

Visualizar productos de recarga

A continuación se indica la ruta empleada en la obtención del listado de recargas posibles en Offsite.

Flujo

La lista de productos dados de alta en Offsite se obtiene mediante una consulta a la ruta Offsite: GET /recharges.

Visualizar productos de tiempo

Para la consulta de los productos de tiempo de un local, se invoca la ruta Onsite: GET /time_products del servidor Onsite donde se desea llevar a cabo la reservación.

Sucursales

Obtención de sucursales

A continuación se indica el flujo llevado a cabo para la obtención de sucursales y su información asociada.

Flujo

Offsite: GET /locations/info

Mediante esta ruta se obtiene el listado de sucursales dadas de alta en el Sistema Arena, con información de relevante para los clientes no autenticados.

Se tienen los siguientes parámetros de consulta:

Parámetro Tipo Función
id integer
Filtra la búsqueda por la sucursal
cuyo identificador coincide con el
proporcionado.

La ruta responde con el estado 200 OK acompañado de la siguiente información

- id: 1
  name: Antara
  domain: antara.onsite.arena.mx
  locationInfo:
    address: Plateros 32. Colonia Metales
    city: Ciudad de México
    state: Distrito Federal
    phone1: 56129726
    phone2: 76109234
    phone3: 87422932
  country:
    id: 1
    name: México
    currency: Pesos mexicanos
    isoCode: MXN
- id: 2
  name: Cuernavaca
  domain: cuernavaca.onsite.arena.mx
  locationInfo:
    address: Ahuehuetes 45. Col. Santos
    city: Cuernavaca
    state: Morelos
    phone1: 23798777
    phone2: 87687665
    phone3: 08767657
  country:
    id: 1
    name: México
    currency: Pesos mexicanos
    isoCode: MXN

Catálogo de juegos

El listado de juegos disponibles en una sucursal debe ser visible por el público a través de la web. En consecuencia, se habilita el siguiente comportamiento de consulta hacia la sucursal.

Obtención de juegos

Flujo

Onsite: GET /games/catalog

Este endpoint permite acceder a la lista de copias disponibles de juegos en el establecimiento. Es decir, si un juego está disponible para tres sistemas de entretenimiento, el título aparecerá tres veces en el listado de este endpoint. Es importante notar que en caso de que un juego sea destacado, se devuelve además la liga a una imagen con dimensiones especiales del mismo.

La ruta responde con el estado 200 OK acompañado de la siguiente información:

- gameSystemId: 1234
  name: Killing Floor 2
  system:
    id: 6
    name: PC
  pathToLauncher: /Games/KillingFloor2/kill2.exe
  isHighlight: false
  maxPlayers: 1
  esrb: M
  description: 6-player co-op Zed-slaughtering mayhem. And now, 12-player Versus Survival mode, too - now you can BE the Zeds!
  timesPlayed: 23
  tags:
    - multiplayer
    - gore
    - zombies
  cover: https://www.googleapis.com/storage/v1/b/arena-test-bucket/o/1475699580391_94721.jpg
  screenshots:
    - https://www.googleapis.com/storage/v1/b/arena-test-bucket/o/1475699580399_72512.jpg
    - https://www.googleapis.com/storage/v1/b/arena-test-bucket/o/1475699580408_99334.jpg
- gameSystemId: 28
  name: FIFA 16
  system:
    id: 4
    name: XBOX One
  isHighlight: true
  maxPlayers: 4
  esrb: PG13
  description: Get ready for the biggest season yet! FUT Champions and Squad Building Challenges give players new ways to compete and earn rewards in FIFA's most popular mode.
  timesPlayed: 127
  tags:
    - multiplayer
    - sports
    - soccer
  cover: https://www.googleapis.com/storage/v1/b/arena-test-bucket/o/1475699580323_82345.jpg
  screenshots:
    - https://www.googleapis.com/storage/v1/b/arena-test-bucket/o/1475699580465_90123.jpg
  highlight: https://www.googleapis.com/storage/v1/b/arena-test-bucket/o/1475699580391_94721.jpg
- gameSystemId: 29
  name: FIFA 16
  system:
    id: 5
    name: PS4
  isHighlight: false
  maxPlayers: 4
  esrb: PG13
  description: Get ready for the biggest season yet! FUT Champions and Squad Building Challenges give players new ways to compete and earn rewards in FIFA's most popular mode.
  timesPlayed: 86
  tags:
    - multiplayer
    - sports
    - soccer
  cover: https://www.googleapis.com/storage/v1/b/arena-test-bucket/o/1475699580576_17324.jpg
  screenshots:
    - []

Reservaciones

En esta sección se describen los procedimientos para gestionar reservaciones por parte del jugador. Se describen flujos para creación, consulta, y cancelación.

Creación de reservación

Flujo

Una reservación es creada mediante una invocación a la ruta Onsite: POST /reservations. Esta ruta es invocada con host siendo la sucursal donde se planea efectuar la reservación.

Ver reservaciones por local

Flujo

Las reservaciones de una sucursal para el jugador pueden consultarse mediante la invocación a la ruta Onsite: GET /reservations. Esta ruta es invocada con host siendo la sucursal donde se desea consultar las reservaciones del jugador.

Cancelar reservación

Una reservación en una sucursal de Arena es cancelada mediante una invocación a la ruta Onsite: DELETE /reservations/{id}. Esta ruta es invocada con host siendo la sucursal donde se desea cancelar la reservación del jugador.

Recargas

Obtención de productos de recarga

Los productos de recarga se obtienen como se indica en Offsite: GET /recharges.

Pago de recarga

Flujo

Offsite: POST /transactions/recharges

Autorización: Player

Mediante esta ruta, se solicita al servidor Offsite el procesamiento de los productos de recarga indicados en la petición. El cuerpo es el siguiente:

rechargeId: 2
paymentInfo:
  cardNumber: "4111111111111111"
  cardType: "VISA"
  cardExpiryMonth: "12"
  cardExpiryYear: "2020"
  cardCVC: "111"
rechargeId
Identificador del producto de recarga que se desea adquirir.
paymentInfo.cardNumber
Cadena con los 16 dígitos del frente de la tarjeta.
paymentInfo.cardType
Tipo de la tarjeta. Las cadenas válidas son VISA y MASTERCARD.
paymentInfo.cardExpiryMonth
Mes de expiración de la tarjeta.
paymentInfo.cardExpiryYear
Año de expiración de la tarjeta.
paymentInfo.cardCVC
Código de seguridad.

En consecuencia, Offsite valida que el jugador cuente con una sucursal por defecto, y que el producto de recarga cuente con un costo vinculado a la sucursal por defecto del jugador.

Posteriormente, Offsite arma una petición de compra y la envía a la ruta WS Cinemex: POST /wsVistaWebClient/RESTTicketing.svc/order/payment. En caso de recibir una respuesta exitosa del WS, se procede a recargar el saldo en Ares del jugador, para posteriormente responder con el estado 200 OK acompañado de la siguiente información:

receipt:
  folio: 6945
  transactionAt: 69879798798
  coinAmount: 200
  amountCents: 20000
  locationId: 4
  cinemaId: 3
playerBalance:
  coinAmount: 200
  isoCode: MXN
receipt.folio
Folio del recibo, el cual corresponde con el campo vistaTransNumber.
receipt.transactionAt
Fecha de aplicación de la operación.
receipt.coinAmount
Cantidad de monedas adquiridas en el recibo.
receipt.amountCents
Cantidad en centavos que que pagaron por el producto.
receipt.locationId
Sucursal donde se compró el producto de recarga.
receipt.cinemaId
Identificador del complejo del proveedor donde se registra la recarga.
playerBalance.coinAmount
Nuevo balance del jugador después de la recarga.
playerBalance.isoCode
Código de la divisa donde se actualizó el balance del jugador.

Consejo

Como parte del flujo exitoso, se envía un correo al jugador con un comprobante de la operación.

Si el pago es declinado (12), o si ocurre un error el el sistema de pagos (13), se responde con el estado 409 Conflict.

De ocurrir un error en el pago, se responde con el estado 409 Conflict. Si el jugador no cuenta con una sucursal por defecto, o si la recarga no cuenta con un costo en la sucursal por defecto del jugador, se responde con el estado 412 Precondition Failed.

Si el WS experimenta un error después de haberse autorizado el pago, se responde con el estado 502 Bad Gateway.

PlayCard

Bloqueo de tarjeta

Flujo

Offsite: DELETE /player/id_card

Autorización: Player

Solicita la desvinculación de la tarjeta activa de la cuenta del jugador que lleva a cabo la petición.

A continuación, se busca la tarjeta activa del jugador y se procede a suspenderse, para posteriormente desvincularla del jugador.

La ruta responde con el estado 204 No Content, indicando que el proceso fue exitoso.

Si el jugador no cuenta con una tarjeta vinculada, se responde con el estado 409 Conflict.

Torneos

Obtención de torneos

Flujo

Offsite: GET /tournaments/catalog

Obtiene el listado de torneos ofertados de los cuales se cuenta con registro ante el servidor Offsite. Todo torneo devuelto en el presente listado cuenta con una fecha de inicio (local a la zona horaria de la sucursal) en el futuro.

Se tienen los siguientes parámetros de consulta:

Parámetro Tipo Función
location_id integer
Filtra la búsqueda por la sucursal
donde tendrá lugar el torneo.
month integer
Valor numérico en el intervalo
[1, 12] que representa el mes
en que se jugará el torneo.
system integer
Id de la consola en la que se jugará el torneo.

La ruta responde con el estado 200 OK acompañado de la siguiente información:

- id: 3
  name: Torneo Doom
  cost: 150
  type: PRO
  scheduledAt: 1469491719
  maxTeams: 30
  minTeams: 2
  availablePlaces: 3
  systemName: PS4
  template:
    maxPlayersPerTeam: 30
    minPlayersPerTeam: 12
    gameName: Doom
    modeName: Desempate por duelo directo
  locationId: 4
  cover: https://www.googleapis.com/storage/v1/b/arena-offsite-bucket/o/1475281865163-0.9304038190748543
  banner: https://www.googleapis.com/storage/v1/b/arena-offsite-bucket/o/1475281865163-0.9304038190748543
  createdAt: 1469491364
  updatedAt: 1469491364
id
Identificador del torneo.
name
Nombre del torneo.
cost
Costo en Ares de la participación individual al torneo.
type
Tipo de entrada al torneo.
scheduledAt
Fecha, en hora local de la sucursal, para la cual está programado el torneo.
maxTeams
Número máximo de equipos permitidos en el torneo.
minTeams
Número mínimo de equipos requeridos en el torneo.
availablePlaces
Número de lugares disponibles para el torneo.
systemName
Nombre de la consola en la que se jugará el torneo.
template
Información de la plantilla a partir de la cual fue instanciado el torneo. Los valores de la plantilla aplican para el torneo en cuestión.
template.maxPlayersPerTeam
Número máximo de integrantes que pueden conformar un equipo.
template.minPlayersPerTeam
Número mínimo de integrantes que deben conformar un equipo.
template.gameName
Nombre del juego que aplica al torneo.
template.modeName
Nombre del modo de juego a seguir durante las partidas del torneo.
locationId
Identificador de la sucursal donde tendrá lugar el torneo.
cover
Liga a la imagen de portada del torneo.
banner
Liga al banner del torneo.
createdAt
Fecha de creación del torneo.
updatedAt
Fecha de la última actualización del torneo.