API de Digitra para partners (2026-10-01)

Download OpenAPI specification:

Soporte Digitra: soporte@digitra.rent

Crea reservas con tu propio identificador, obtén el enlace de registro del huésped, recibe webhooks de cada avance y consulta, modifica o cancela reservas.

La llave decide el ambiente: dgt_test_ (pruebas, TRA y SIRE simulados) o dgt_live_ (producción). Guía completa en guia-integracion.md; webhooks en webhooks.md.

Propiedades

Inventario de la llave y mapeo con el id de tu PMS

Listar las propiedades de la llave

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "properties": [
    ]
}

Asociar propiedades con el id de tu PMS (p. ej. listing_id de Guesty)

Todo o nada. external_id en null quita la asociación.

Authorizations:
bearerAuth
Request Body schema: application/json
required
required
Array of objects [ 1 .. 500 ] items

Responses

Request samples

Content type
application/json
{
  • "mappings": [
    ]
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "mappings": [
    ]
}

Reservas

Crear, modificar y cancelar reservas

Crear una reserva y obtener el enlace de registro

Idempotente por external_id: el mismo cuerpo devuelve 200 con la misma reserva; otro cuerpo con el mismo external_id devuelve 409 reservation_conflict.

Authorizations:
bearerAuth
Request Body schema: application/json
required
external_id
required
string <= 120 characters
source
string <= 50 characters
property_id
string <uuid>
property_external_id
string <= 120 characters
rnt_id
string
room_number
string <= 50 characters
check_in
required
string <date>
check_out
required
string <date>
guest_name
required
string <= 255 characters
guests_count
required
integer >= 1
expected_guests
integer >= 1
total_amount
number >= 0
currency
string
Enum: "COP" "USD"
guest_email
string <email>
guest_phone
string <= 30 characters
notes
string <= 2000 characters
object

Máx. 4 KB

sandbox_simulate
string
Enum: "tra_failed" "sire_failed"

Solo con llave de pruebas

Responses

Request samples

Content type
application/json
{
  • "external_id": "65a1b2c3d4e5f6a7b8c9d0e1",
  • "source": "guesty",
  • "property_external_id": "64f1a2b3c4d5e6f7a8b9c0d1",
  • "check_in": "2026-10-10",
  • "check_out": "2026-10-12",
  • "guest_name": "María Pérez",
  • "guests_count": 2,
  • "guest_email": "huesped@ejemplo.com",
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "reservation_id": "string",
  • "external_id": "string",
  • "status": "pending_checkin",
  • "reservation_status": "confirmed",
  • "sandbox": true,
  • "checkin_token": "string",
  • "checkin_status": "string",
  • "guests_registered": 0,
  • "tra": {
    },
  • "sire": {
    },
  • "source": "string",
  • "metadata": { },
  • "checkin_url": "http://example.com",
  • "created_at": "2019-08-24T14:15:22Z",
  • "idempotent_replay": true
}

Modificar una reserva

Con el TRA ya reportado (se reporta el día de llegada) solo se puede ampliar la salida; las noches nuevas se registran ante MinCIT automáticamente. Mover la llegada, acortar la estadía o cambiar fechas cuya entrada ya se reportó a SIRE responde 409 already_reported. Una reserva cancelada responde 409 reservation_cancelled.

Authorizations:
bearerAuth
Request Body schema: application/json
required
external_id
required
string
check_in
string <date>
check_out
string <date>
guests_count
integer [ 1 .. 50 ]
guest_name
string
guest_email
string or null <email>
guest_phone
string or null
notes
string or null
object

Responses

Request samples

Content type
application/json
{
  • "external_id": "65a1b2c3d4e5f6a7b8c9d0e1",
  • "check_out": "2026-10-13",
  • "guests_count": 3
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "reservation_id": "string",
  • "external_id": "string",
  • "status": "pending_checkin",
  • "reservation_status": "confirmed",
  • "sandbox": true,
  • "checkin_token": "string",
  • "checkin_status": "string",
  • "guests_registered": 0,
  • "tra": {
    },
  • "sire": {
    },
  • "source": "string",
  • "metadata": { },
  • "checkin_url": "http://example.com",
  • "created_at": "2019-08-24T14:15:22Z",
  • "idempotent_replay": true,
  • "changed": [
    ]
}

Cancelar una reserva

Una reserva cancelada no se reporta a TRA ni a SIRE. Idempotente. Si algo ya se había reportado, already_reported lo indica.

Authorizations:
bearerAuth
Request Body schema: application/json
required
external_id
required
string <= 120 characters
reason
string <= 500 characters

Responses

Request samples

Content type
application/json
{
  • "external_id": "65a1b2c3d4e5f6a7b8c9d0e1",
  • "reason": "Cancelada en Guesty"
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "reservation_id": "string",
  • "external_id": "string",
  • "status": "pending_checkin",
  • "reservation_status": "confirmed",
  • "sandbox": true,
  • "checkin_token": "string",
  • "checkin_status": "string",
  • "guests_registered": 0,
  • "tra": {
    },
  • "sire": {
    },
  • "already_cancelled": true,
  • "already_reported": {
    },
  • "warning": "string"
}

Registro

Estado del registro de huéspedes y de los reportes TRA y SIRE

Consultar el estado por external_id

Authorizations:
bearerAuth
query Parameters
external_id
required
string
include
string
Value: "guests"

guests agrega los datos de cada huésped registrado.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "reservation_id": "string",
  • "external_id": "string",
  • "status": "pending_checkin",
  • "reservation_status": "confirmed",
  • "sandbox": true,
  • "checkin_token": "string",
  • "checkin_status": "string",
  • "guests_registered": 0,
  • "tra": {
    },
  • "sire": {
    },
  • "source": "string",
  • "metadata": { },
  • "checkin_url": "http://example.com",
  • "created_at": "2019-08-24T14:15:22Z",
  • "idempotent_replay": true,
  • "property_id": "05003a8a-8f3c-454b-8884-a906ec46f5f5",
  • "check_in": "2019-08-24",
  • "check_out": "2019-08-24",
  • "guests_count": 0,
  • "completed_at": "2019-08-24T14:15:22Z",
  • "guests": [
    ]
}

Registrar huéspedes capturados en tu propio formulario

Flujo alternativo al enlace: tu sistema captura los datos de todos los huéspedes y los envía de una vez. Crea la reserva, cierra el registro y programa TRA y SIRE.

Authorizations:
bearerAuth
Request Body schema: application/json
required
external_id
required
string
source
string
property_id
string <uuid>
property_external_id
string
rnt_id
string
room_number
string
check_in
required
string <date>
check_out
required
string <date>
guest_name
required
string
guests_count
required
integer
expected_guests
integer
total_amount
number
currency
string
Enum: "COP" "USD"
motivo
required
string
Enum: "Vacaciones, recreo y ocio" "Trabajo" "Visita a familiares y a amigos" "Educación y formación" "Salud y atención médica" "Religión / peregrinaciones" "Compras" "Tránsito" "Otros motivos"
tipo_acomodacion
required
string
object
sandbox_simulate
string
Enum: "tra_failed" "sire_failed"
required
Array of objects (GuestInput) [ 1 .. 30 ] items

Responses

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "source": "string",
  • "property_id": "05003a8a-8f3c-454b-8884-a906ec46f5f5",
  • "property_external_id": "string",
  • "rnt_id": "string",
  • "room_number": "string",
  • "check_in": "2019-08-24",
  • "check_out": "2019-08-24",
  • "guest_name": "string",
  • "guests_count": 0,
  • "expected_guests": 0,
  • "total_amount": 0,
  • "currency": "COP",
  • "motivo": "Vacaciones, recreo y ocio",
  • "tipo_acomodacion": "Apartamento",
  • "metadata": { },
  • "sandbox_simulate": "tra_failed",
  • "guests": [
    ]
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "reservation_id": "string",
  • "external_id": "string",
  • "status": "pending_checkin",
  • "reservation_status": "confirmed",
  • "sandbox": true,
  • "checkin_token": "string",
  • "checkin_status": "string",
  • "guests_registered": 0,
  • "tra": {
    },
  • "sire": {
    }
}

Consultar el estado (id en la ruta)

Si tu id lleva /, usa la forma con ?external_id=.

Authorizations:
bearerAuth
path Parameters
external_id
required
string
query Parameters
include
string
Value: "guests"

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "reservation_id": "string",
  • "external_id": "string",
  • "status": "pending_checkin",
  • "reservation_status": "confirmed",
  • "sandbox": true,
  • "checkin_token": "string",
  • "checkin_status": "string",
  • "guests_registered": 0,
  • "tra": {
    },
  • "sire": {
    },
  • "source": "string",
  • "metadata": { },
  • "checkin_url": "http://example.com",
  • "created_at": "2019-08-24T14:15:22Z",
  • "idempotent_replay": true,
  • "property_id": "05003a8a-8f3c-454b-8884-a906ec46f5f5",
  • "check_in": "2019-08-24",
  • "check_out": "2019-08-24",
  • "guests_count": 0,
  • "completed_at": "2019-08-24T14:15:22Z",
  • "guests": [
    ]
}

Webhooks

Endpoints, secretos, pruebas e historial de entregas

Listar endpoints

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Registrar un endpoint

El secret se devuelve solo en esta respuesta.

Authorizations:
bearerAuth
Request Body schema: application/json
required
url
required
string <uri>

HTTPS pública

events
Array of strings (EventType)
Items Enum: "*" "reservation.created" "reservation.updated" "reservation.cancelled" "registration.updated" "registration.completed" "contract.signed" "tra.reported" "tra.failed" "sire.reported" "sire.failed" "ping"
include_guests
boolean
Default: false

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "events": [
    ],
  • "include_guests": true,
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "secret_rotated_at": "2019-08-24T14:15:22Z",
  • "secret": "whsec_xxxxxxxxxxxxxxxxxxxxxxxx"
}

Modificar un endpoint

Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
url
string <uri>
events
Array of strings (EventType)
Items Enum: "*" "reservation.created" "reservation.updated" "reservation.cancelled" "registration.updated" "registration.completed" "contract.signed" "tra.reported" "tra.failed" "sire.reported" "sire.failed" "ping"
include_guests
boolean

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "events": [
    ],
  • "include_guests": true,
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "secret_rotated_at": "2019-08-24T14:15:22Z"
}

Desactivar un endpoint

Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "id": "string",
  • "is_active": true
}

Rotar el secreto de firma

Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "secret": "string"
}

Enviar un evento ping firmado ahora mismo

Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "event_id": "string",
  • "delivered": true,
  • "http_status": 0,
  • "duration_ms": 0,
  • "error": "string"
}

Historial de entregas

Authorizations:
bearerAuth
query Parameters
status
string
Enum: "pending" "delivered" "failed"
event
string
external_id
string
limit
integer [ 1 .. 200 ]
Default: 50

Responses

Response samples

Content type
application/json
{
  • "deliveries": [
    ]
}

Reenviar un evento (mismo event_id, ciclo de reintentos nuevo)

Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "id": "string",
  • "event_id": "string",
  • "status": "pending"
}