Skip to content

VLT Client Registration

POST /api/clientes/register

Registers a client and binds an RFID card. If the client already exists, the active card is updated; if the card was registered before, the response is a duplicate.

Request

Headers

HeaderValueRequired
Content-Typeapplication/jsonYes
Acceptapplication/jsonYes

Public Endpoint

This endpoint is publicly accessible (AllowAnonymous). It does not require X-Client-Secret or any token. It is protected by rate limiting (60 requests per minute per IP).

Body Parameters

ParameterTypeRequiredDescription
codigoClienteVLTintegerYesInternal unique client identifier in the VLT system
correostringYesClient's email address
enviarWhatsAppbooleanYesConsent to receive WhatsApp communications
enviarCorreobooleanYesConsent to receive email communications
enviarSmsbooleanYesConsent to receive SMS communications
tarjetastringYesPhysical RFID card identifier
tipoDocumentointegerNoDocument type identifier
dnistringNoNational document number (max 20 chars)
nombrestringNoClient's first name(s)
apellidoPaternostringNoFather's last name
apellidoMaternostringNoMother's last name
fechaNacimientostring (ISO 8601)NoBirth date (YYYY-MM-DDTHH:mm:ss.sssZ)
direccionstringNoResidential address
telefonostringNoContact phone number
ubigeostringNoGeographic location code
sexointegerNoGender identifier

Request Example

bash
curl -X POST 'https://api.syssoft1.com/api/clientes/register' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "tipoDocumento": 1,
    "dni": "74658993",
    "nombre": "Brandon",
    "apellidoPaterno": "Mamani",
    "apellidoMaterno": "Ayala",
    "fechaNacimiento": "1995-04-23T13:47:04.200Z",
    "direccion": "Av. Bolognesi 123",
    "telefono": "928570056",
    "ubigeo": "230101",
    "sexo": 1,
    "codigoClienteVLT": 70,
    "correo": "cliente70@gmail.com",
    "enviarWhatsApp": true,
    "enviarCorreo": true,
    "enviarSms": true,
    "tarjeta": "A0C2BBCA"
  }'

Responses

The response always returns the same four fields. The status, mensaje and esDuplicado describe the outcome.

New Client — 201 Created

The client did not exist and the card had not been registered before.

json
{
  "id": 11,
  "tarjeta": "A0C2BBCA",
  "mensaje": "cliente nuevo",
  "esDuplicado": false
}

Card Added to Existing Client — 201 Created

The client already exists (matched by codigoClienteVLT or dni) and a new card is set as the active one.

json
{
  "id": 11,
  "tarjeta": "B1D3CCDB",
  "mensaje": "tarjeta agregada al cliente existente",
  "esDuplicado": false
}

Duplicate Registration — 200 OK

The submitted card had already been registered before.

json
{
  "id": 11,
  "tarjeta": "A0C2BBCA",
  "mensaje": "registro duplicado",
  "esDuplicado": true
}

Response Fields

FieldTypeDescription
idintegerIdentifier of the registered client
tarjetastringThe card identifier sent in the request
mensajestringResult description: "cliente nuevo", "tarjeta agregada al cliente existente", or "registro duplicado"
esDuplicadobooleantrue when the card had already been registered

Try It

API PlaygroundPOST

Request Body

Request URL

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

Error Responses

CodeDescription
422Validation failed. Check that required fields are present and properly typed.
429Rate limit exceeded (60 requests per minute per IP).
503The system has no destination client configured for VLT registrations. Contact support.
500Internal error processing the registration.

Example 422 Unprocessable Entity

json
{
  "message": "The codigoClienteVLT field is required. (and 5 more errors)",
  "errors": {
    "codigoClienteVLT": ["The codigoClienteVLT field is required."],
    "tarjeta": ["The tarjeta field is required."],
    "enviarWhatsApp": ["The enviarWhatsApp field is required."],
    "enviarCorreo": ["The enviarCorreo field is required."],
    "enviarSms": ["The enviarSms field is required."]
  }
}

Notes for the VLT Integrator

  • The endpoint is idempotent on the card: sending the same tarjeta twice neither creates nor modifies anything on the second call.
  • The tarjeta field must contain the physical UID returned by the RFID reader. It is the same value the lobby will later send as cardIdentifier to the authentication endpoint.

Client API Documentation