Documentación API
Base URL: https://gateway.comunidesk.com. Autenticación OAuth2 de tu app más el JWT de la cuenta Comunidesk. Tras el login, usa GET /v1/me/capabilities para saber qué módulos mostrar. Protocolos: REST, SOAP, GraphQL, OData y /v1/comunidesk.
Prueba llamadas en el Lab · Shell
Autenticación
Usa el mismo usuario de Comunidesk. El token OAuth identifica tu aplicación; el JWT de usuario autoriza qué puede hacer en cada edificio, igual que en la web.
# Token OAuth de tu aplicación Authorization: Bearer <oauth_access_token> # JWT de la cuenta Comunidesk del usuario x-comunidesk-user-authorization: Bearer <user_jwt>
Obtener token
POST https://gateway.comunidesk.com/oauth/token
import Foundation
let gateway = "https://gateway.comunidesk.com"
let clientId = "CLIENT_ID"
let clientSecret = "CLIENT_SECRET"
var req = URLRequest(url: URL(string: "\(gateway)/oauth/token")!)
req.httpMethod = "POST"
let basic = Data("\(clientId):\(clientSecret)".utf8).base64EncodedString()
req.setValue("Basic \(basic)", forHTTPHeaderField: "Authorization")
req.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
req.httpBody = "grant_type=client_credentials&scope=comunidesk:read%20comunidesk:write"
.data(using: .utf8)
let (data, _) = try await URLSession.shared.data(for: req)
struct TokenResponse: Decodable { let access_token: String }
let token = try JSONDecoder().decode(TokenResponse.self, from: data).access_tokenEntornos
Envía el header x-comunidesk-environment para enrutar la petición al backend del entorno (dev, rnd, stg, uat, qa, prod).
- dev Desarrollo — Pruebas locales / sandbox del integrador
- rnd I+D — Experimentos y spikes
- stg Staging — Pre-producción integrada
- uat UAT — Aceptación de usuario
- qa QA — Validación de calidad
- prod Producción — Datos reales de la cuenta
x-comunidesk-environment: stg
En entornos no-prod, prefija nombres de datos de prueba (p. ej. [STG] Mi edificio).
Protocolos
Elige el estilo de integración de tu stack. La taxonomía de entidades es la misma en REST, SOAP, GraphQL y OData.
- REST ·
/v1/rest/{EntitySet}·?$stream=true(Streaming) - SOAP ·
POST /v1/soap - GraphQL ·
POST /v1/graphql - OData v4 ·
/odata/v4/{EntitySet}?$filter=&$select=&$top=
Streaming de datos
Consume colecciones grandes en chunks sin esperar el JSON completo (ideal para apps móviles).
Por defecto GET /v1/rest/{EntitySet} devuelve un JSON con todo el array data. En módulos con muchos registros la app queda bloqueada hasta recibir la respuesta entera. Con modo stream el gateway pagina CouchDB en lotes de 50 y emite cada fila en cuanto la obtiene.
Activar streaming
Cualquiera de estas opciones en GET /v1/rest/{EntitySet} o GET /odata/v4/{EntitySet}:
• Query ?$stream=true o ?stream=true
• Header Accept: application/x-ndjson
• Header X-Comunidesk-Stream: ndjson Formato NDJSON (CouchDB)
Content-Type: application/x-ndjson. Cada línea es un objeto JSON: • {"type":"meta",...} — metadatos iniciales • {"type":"item","data":{...}} — un registro • {"type":"done"} — fin del stream • {"type":"error","error":"..."} — error durante el stream
import Foundation
let oauthToken = "OAUTH_TOKEN"
let userJwt = "USER_JWT"
var req = URLRequest(url: URL(string: "https://gateway.comunidesk.com/v1/rest/Edificios?$stream=true&edificioId=EDIFICIO_ID")!)
req.httpMethod = "GET"
req.setValue("Bearer \(oauthToken)", forHTTPHeaderField: "Authorization")
req.setValue("Bearer \(userJwt)", forHTTPHeaderField: "x-comunidesk-user-authorization")
req.setValue("application/x-ndjson", forHTTPHeaderField: "Accept")
req.setValue("ndjson", forHTTPHeaderField: "X-Comunidesk-Stream")
struct StreamEvent: Decodable {
let type: String
let error: String?
}
let (bytes, response) = try await URLSession.shared.bytes(for: req)
for try await line in bytes.lines {
guard !line.isEmpty, let row = line.data(using: .utf8) else { continue }
let event = try JSONDecoder().decode(StreamEvent.self, from: row)
switch event.type {
case "item": /* parse event.data JSON y añadir a la lista */ break
case "done": break
case "error": throw URLError(.badServerResponse)
default: break
}
}Passthrough sin buffer
GET/POST /v1/comunidesk/{ruta-backend} reenvía la respuesta upstream sin leer todo el body (chunked, SSE, descargas grandes). Útil cuando necesitas el endpoint tal cual existe en api.comunidesk.com.
GET https://gateway.comunidesk.com/v1/comunidesk/{ruta-backend}Apps nativas (iOS / Android)
Después del login, consulta /v1/me/capabilities y muestra solo los módulos disponibles para ese usuario.
import Foundation
let oauthToken = "OAUTH_TOKEN"
let userJwt = "USER_JWT"
var req = URLRequest(url: URL(string: "https://gateway.comunidesk.com/v1/me/capabilities")!)
req.httpMethod = "GET"
req.setValue("Bearer \(oauthToken)", forHTTPHeaderField: "Authorization")
req.setValue("Bearer \(userJwt)", forHTTPHeaderField: "x-comunidesk-user-authorization")
struct CapName: Decodable { let es: String; let en: String }
struct CapModule: Decodable {
let id: String
let entitySet: String
let canRead: Bool
let canWrite: Bool
let name: CapName
}
struct Capabilities: Decodable { let modules: [CapModule] }
let (data, _) = try await URLSession.shared.data(for: req)
let caps = try JSONDecoder().decode(Capabilities.self, from: data)
let menu = caps.modules.filter { $0.canRead }
// menu.forEach { print($0.name.es, $0.entitySet) }Google Sign-In móvil
Intercambia el id_token de Google Sign-In por JWT Comunidesk.
Host: gateway.comunidesk.com (no comunidesk.com). Body JSON con id_token. Si el usuario ya tiene cuenta Comunidesk con el mismo email, se vincula Google y se conservan edificios y permisos (isNewUser: false).
POST https://gateway.comunidesk.com/api/oauth/google/mobile
import Foundation
// id_token from Google Sign-In (iOS)
let idToken = googleUser.idToken?.tokenString ?? ""
var req = URLRequest(url: URL(string: "https://gateway.comunidesk.com/api/oauth/google/mobile")!)
req.httpMethod = "POST"
req.setValue("application/json", forHTTPHeaderField: "Content-Type")
req.httpBody = try JSONEncoder().encode(["id_token": idToken])
struct AuthResponse: Decodable {
let success: Bool
let isNewUser: Bool?
let access_token: String?
}
let (data, response) = try await URLSession.shared.data(for: req)
let auth = try JSONDecoder().decode(AuthResponse.self, from: data)
// auth.access_token → JWT users_app; auth.isNewUser == false si ya tenía cuentaParidad web ↔ API
GET /v1/me/capabilities incluye webParity
Cada módulo REST expone webParity.status (full|partial|missing|web_only). El objeto webParity resume brechas, rutas IA mapeadas y rutas Flex Pro. OpenAPI completo en /v1/openapi/full.json; catálogo de paridad en /v1/openapi/parity.json.
GET https://gateway.comunidesk.com/v1/me/capabilities GET https://gateway.comunidesk.com/v1/openapi/full.json GET https://gateway.comunidesk.com/v1/openapi/parity.json
Flex Pro
Runtime y marketplace vía /v1/flex-pro/*
Los flujos Flex Pro no tienen EntitySet REST único. El gateway proxea /api/flex-pro/* de comunidesk.com. Scopes: flex-pro:manage (módulos, sources, install), flex-pro:runtime (active, bundle), flex-pro:marketplace (publish, install, installs).
GET https://gateway.comunidesk.com/v1/flex-pro/runtime/active POST https://gateway.comunidesk.com/v1/flex-pro/marketplace/install
Catálogo de specs
OpenAPI completo y por módulo (JSON/YAML). WSDL SOAP completo y por módulo (XML).
Módulos
Módulos y productos del gateway.
Gestión
- Edificios Catálogo de edificios y configuración de cobro. /v1/rest/Edificios
- Departamentos / Unidades Unidades del edificio: departamento, bodega o estacionamiento. /v1/rest/Departamentos
- Áreas comunes Áreas comunes reservables del edificio. /v1/rest/AreasComunes
- Reservas Reservas de áreas comunes. /v1/rest/Reservas
- Proveedores Proveedores y contactos del edificio. /v1/rest/Proveedores
- Centro de datos Cargas e importaciones masivas de datos históricos del edificio. /v1/rest/CentroDatos
- Invitaciones Invitaciones pendientes a usuarios del edificio. /v1/rest/Invitaciones
Finanzas
- Finanzas Vista agregada del módulo Finanzas (egresos, ingresos y tesorería). /v1/rest/Finanzas
- Gastos comunes Periodos de gasto común y prorrateo por unidad. /v1/rest/GastosComunes
- Gastos por unidad Prorrateo de gasto común por departamento/unidad. /v1/rest/GastosDepartamento
- Pagos (gasto común) Pagos de gasto común por departamento. /v1/rest/Pagos
- Egresos Egresos y cuentas por pagar de la comunidad. /v1/rest/Egresos
- Ingresos (finanzas) Ingresos del módulo Finanzas del edificio. /v1/rest/Ingresos
- Pagos (finanzas) Pagos del módulo Finanzas del edificio. /v1/rest/PagosTesoreria
- Fondos de reserva Fondos de reserva de la comunidad. /v1/rest/FondosReserva
- Consumos Lecturas de luz, agua y gas por periodo. /v1/rest/Consumos
- Cotizaciones Cotizaciones de proveedores. /v1/rest/Cotizaciones
- Convenios de pago Convenios de pago por deuda. /v1/rest/Convenios
- Configuración finanzas Categorías y subcategorías de egresos e ingresos del módulo Finanzas. /v1/rest/FinanzasConfig
- Pagos a empleados Liquidaciones y pagos de personal. /v1/rest/PagosEmpleados
- Exclusiones GC Postergación de egresos/cuotas en el gasto común mensual. /v1/rest/EgresosExclusionGastoComun
- Conciliaciones bancarias Conciliación de movimientos bancarios con documentos financieros. /v1/rest/ConciliacionesBancarias
- Movimientos bancarios Movimientos de cartola y estado de conciliación. /v1/rest/MovimientosBancarios
- Cargas de cartola Historial de importaciones de cartola bancaria. /v1/rest/CargasCartola
Operaciones
- Empleados Personal del edificio. /v1/rest/Empleados
- Registro de horas Horas trabajadas por empleado y periodo. /v1/rest/RegistrosHoras
- Mantenciones Solicitudes y tickets de mantención. /v1/rest/Mantenciones
- Mantenciones periódicas Planes de mantención recurrentes del edificio. /v1/rest/MantencionesPeriodicas
- Inventario Inventario de bienes del edificio. /v1/rest/Inventario
- Multas Multas aplicadas por departamento. /v1/rest/Multas
- Siniestros Siniestros y reclamos de seguros. /v1/rest/Siniestros
- Procedimientos Procedimientos internos operativos. /v1/rest/Procedimientos
- Ejecuciones de procedimiento Instancias de ejecución de procedimientos internos. /v1/rest/ProcedimientosEjecucion
- Turnos y planificación Turnos de personal: fecha, horario y empleados asignados. /v1/rest/TurnosPlanificacion
- Tareas Tareas de planificación operativas, opcionales a un turno. /v1/rest/Tareas
- Miembros del comité Integrantes del comité de administración del edificio. /v1/rest/MiembrosComite
- Reuniones de comité Reuniones programadas del comité con orden del día. /v1/rest/ReunionesComite
- Actas de comité Actas formales asociadas a reuniones de comité. /v1/rest/ActasComite
Comunicación
- Diario mural Anuncios del diario mural. /v1/rest/AnunciosDiarioMural
- Comunicaciones Comunicaciones enviadas a residentes. /v1/rest/Comunicaciones
- Mensajes Chat entre residentes y administración (hilos y mensajes del edificio). /v1/rest/ChatThreads
- Visitas / Encomiendas Registro de visitas y encomiendas. /v1/rest/Visitas
Administración
- Reglamentos Reglamentos internos de la comunidad. /v1/rest/Reglamentos
- Documentos legales Documentos legales del edificio. /v1/rest/DocumentosLegales
- Grupos de unidades Grupos de unidades para prorrateo o cobro. /v1/rest/GruposUnidades
- Aprobaciones Solicitudes de aprobación internas. /v1/rest/Aprobaciones
- Configuración del edificio Parámetros de cobro, mora, notificaciones, firma y reglas del edificio. /v1/rest/ConfiguracionEdificio
- Tipos de multa Catálogo de tipos de multa configurables por edificio. /v1/rest/TiposMulta
- Asignaciones de usuario Vincula un usuario a un edificio/unidad con un rol. /v1/rest/UserAssignments
- Asignaciones de rol RBAC por edificio: rol, permisos extra y exclusiones. /v1/rest/RoleAssignments
- Grupos de permisos Grupos custom de permisos reutilizables por edificio. /v1/rest/PermissionGroups
- Permisos adicionales Permisos extra otorgados a un usuario en un edificio. /v1/rest/UserPermissions
- Reportes Reportes financieros, de morosidad, mantenciones y ocupación. /v1/rest/Reportes
- Reporte anual de gestión Reporte anual con checklist, slides, comentarios y exportación PPTX. /v1/rest/ReportesAnualesGestion
- Estacionamientos de visitas Reservas de estacionamiento para visitas. /v1/rest/ReservasEstacionamientoVisita
- Registro de actividad Auditoría de acciones de usuarios en el edificio. /v1/rest/ActivityLogs
- Monitoreo de equipos Configuración del agente de monitoreo en equipos del personal. /v1/rest/MonitoreoEquipos
- Gestión transversal — Banco de reservas Personal de reserva compartido entre edificios (comunidesk_transversal). /v1/rest/GestionTransversalPersonal
- Gestión transversal — Equipo de soporte Miembros del equipo de soporte transversal con permisos por rol. /v1/rest/GestionTransversalEquipo
- Gestión transversal — Asignaciones Asignaciones de personal titular y reemplazo entre edificios. /v1/rest/GestionTransversalAsignaciones
Seguros
Otros
- Tickets Tickets de soporte y atención. /v1/rest/Tickets
- Votaciones Votaciones y asambleas de la comunidad. /v1/rest/Votaciones
- Transparencia Portal de transparencia comunitaria (lectura agregada de finanzas, comité y seguros). /v1/rest/Transparencia
- Plusvalía (config) Factores y orientación para el índice de plusvalía del edificio. /v1/rest/PlusvaliaConfig
- Plusvalía (histórico) Snapshots periódicos del índice de plusvalía. /v1/rest/PlusvaliaSnapshots
Plataforma
- Tipo: protocols Protocolos de integración REST, SOAP, GraphQL u OData sobre los mismos módulos Comunidesk.
- Tipo: files Files (PDF / Excel) Extracción de PDF y parseo de Excel con autenticación y límites de uso.
- Tipo: ai Modelos de IA Modelos de IA del gateway con scopes y cuotas dedicadas.
- Tipo: flex-pro products.flex-pro.name products.flex-pro.summary
Lab y Shell
El Lab y el Comunidesk Shell permiten probar el gateway contra entornos controlados.
- Lab — colecciones, variables y entornos.
- Abre el Shell con el icono Terminal del header: help, env, whoami, get.
