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
VISAyMASTERCARD. 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 mesen 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.