Skip to content

Asignación de Tarjeta

PUT /api/clientes/card

Vincula un identificador físico de tarjeta (RFID) a un perfil de cliente ya creado. Es un paso independiente del alta: la tarjeta puede asignarse en cualquier momento posterior, y reemplazarse cuantas veces haga falta.

Sólo una tarjeta activa por cliente: asignar una nueva desactiva automáticamente la anterior.

Solicitud

Headers

HeaderValorRequerido
Content-Typeapplication/json
Acceptapplication/json

Endpoint Público

Acceso público. No requiere X-Client-Secret ni token. Protegido por rate limit (60 solicitudes por minuto por IP).

Parámetros del Body

ParámetroTipoRequeridoDescripción
idintegerIdentificador del cliente en nuestro sistema
playerIdintegerIdentificador del jugador en el sistema de la contraparte
cardstringUID físico de la tarjeta, tal como lo devuelve el lector RFID

Ejemplo de Solicitud

bash
curl -X PUT 'https://api.syssoft1.com/api/clientes/card' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "id": 1024,
    "playerId": 1,
    "card": "A0C2BBCA"
  }'

Ciclo de vida de la tarjeta

SituaciónResultado
El cliente no tenía tarjetaSe asigna y queda activa
El cliente tenía otra tarjetaLa anterior pasa a inactiva y la nueva queda activa
Se reenvía la tarjeta vigente del mismo clienteÉxito sin cambios (idempotente)
La tarjeta pertenece a otro perfil, activa o inactivaERR_CARD_ALREADY_ASSIGNED
La tarjeta es del mismo cliente pero ya fue reemplazadaERR_CARD_DISABLED

Una tarjeta retirada no se reutiliza

Una tarjeta que ya fue reemplazada alcanzó un estado terminal. No puede reactivarse por esta vía: emita una tarjeta nueva.

El PIN del cliente, si lo tenía, se conserva al cambiar de tarjeta: cambiarla no deja al jugador sin su forma de entrar por documento.

Respuestas

Asignación, Reemplazo o Reenvío — 200 OK

La respuesta hace eco de los mismos identificadores enviados, confirmando que el estado final es idéntico al solicitado.

json
{
  "id": 1024,
  "playerId": 1,
  "card": "A0C2BBCA"
}

Respuestas de Error

Ramifique por code, no por message

code es la parte estable del contrato: no cambia. message es informativo y puede reformularse sin previo aviso — de hecho ERR_MISSING_REQUIRED_FIELDS comparte un único texto en los tres endpoints. Cuando la respuesta trae errors, ahí está el detalle por campo.

HTTPcodeCuándo
400ERR_MISSING_REQUIRED_FIELDSFalta un campo o no cumple el formato
404ERR_CUSTOMER_NOT_FOUNDLos identificadores no corresponden a ningún perfil válido
409ERR_IDENTITY_COLLISIONEl id pertenece a un perfil y el playerId a otro
409ERR_CARD_ALREADY_ASSIGNEDLa tarjeta ya está vinculada a otro perfil
409ERR_CARD_DISABLEDLa tarjeta es del mismo perfil pero está inhabilitada
429Rate limit excedido
503El sistema no tiene configurado el operador destino
500Error interno

Ejemplo 409 Conflict

json
{
  "code": "ERR_CARD_ALREADY_ASSIGNED",
  "message": "La tarjeta ingresada ya se encuentra vinculada a otro perfil."
}

Pruébelo

API PlaygroundPUT

Cuerpo de la petición

URL de Petición

https://api.syssoft1.com/api/clientes/card

Notas para el Integrador

  • El valor de card debe ser el UID físico del lector. Es el mismo que el lobby enviará luego como cardIdentifier al autenticar al jugador en el terminal.
  • La unicidad de la tarjeta es global, no por cliente: un UID sólo puede pertenecer a un perfil, esté activo o no.
  • Reintentar tras un timeout de red es seguro: si la tarjeta ya quedó asignada y activa para ese mismo cliente, la petición responde 200 sin alterar nada.

Documentación de la API para Clientes