API · tenancy
tenancy operations in the OpenAPI contract that accept an API key.
Updated:
PATCH /workspace
Editar negocio (owner o manager; requiere X-Csrf-Token)
Bearer settings:write admite solo payments_enabled, completion_payment_required, chat_payment, pay_info y brand_accent, sin otros campos; cookie requiere CSRF. Solo owner cambia payments_enabled/completion_payment_required; chat_payment y pay_info requieren workspace:configure y payments:accounts_configure (owner/manager). PATCH atómico de identidad, apariencia, contacto, dirección y perfil fiscal. Solo owner modifica fiscal_data/fiscal_address; manager lee y edita los demás campos. Cambiar currency se rechaza con 409 future_bookings_conflict si existen cobros o valores financieros congelados. Cambiar currency se rechaza con 409 future_bookings_conflict si existen cobros o valores financieros congelados. Cambiar currency se rechaza con 409 future_bookings_conflict si existen cobros o valores financieros congelados. source_plan_id adopta un plan propio de Wagy en la misma transacción (se revalidan estado, expiración, huella y permisos). Timezone/moneda con reservas futuras activas devuelve 409 sin cambios parciales. Datos fiscales solo owner/manager; staff recibe null. Respuestas no-store; logo thumbnail PNG/JPEG inline menor de 5 MB, sin URL externa.
- Authentication: API key or dashboard session
- Scopes:
settings:write
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
X-Csrf-Token | header | No | string |
Request body (required)
application/json: WorkspaceSettingsPatch
Responses
| Status | Description |
|---|---|
200 | Actualizado (WorkspaceSettings) |
default | Error (RFC 9457) (Problem) |
GET /workspace/audit
Revisar mi configuración (puntaje de puesta a punto)
FIU-524. Reglas fijas sobre el proyecto real, sin IA y sin costo: devuelve un puntaje 0-100, solo lo que falta ordenado por impacto y, por cada ítem, la operación de API que lo arregla con sus parámetros sugeridos (fix.operation, fix.params) y, si hace falta un dato del dueño, la pregunta de una línea (fix.ask). Si no falta nada, all_good es true e items va vacío. Owner y manager; API key con config:read. El idioma sale de lang o del proyecto. Sin caché.
- Authentication: API key or dashboard session
- Scopes:
config:read
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
lang | query | No | string pt, es, en |
Responses
| Status | Description |
|---|---|
200 | Puntaje y lo que falta; Cache-Control no-store (SetupAudit) |
default | Error (RFC 9457) (Problem) |
GET /workspace/trait-catalog
Catálogo aprobado completo con versión, cambios y preguntas pt/es/en
Base versionada más revisiones inmutables aprobadas. API key config:read. No incluye propuestas.
- Authentication: API key or dashboard session
- Scopes:
config:read
Responses
| Status | Description |
|---|---|
200 | Catálogo exportable como catalog.json (TraitCatalog) |
default | Error (RFC 9457) (Problem) |
GET /workspace/trait-proposals
Propuestas y etiquetas propias del proyecto
Todos los roles; API key config:read. Hasta 200 por página, orden por UUID; cursor UUID de la última fila.
- Authentication: API key or dashboard session
- Scopes:
config:read
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
cursor | query | No | string (uuid) |
Responses
| Status | Description |
|---|---|
200 | Propuestas propias (TraitProposalPage) |
default | Error (RFC 9457) (Problem) |
POST /workspace/trait-proposals
Proponer un rasgo sin aplicarlo (confirm=true)
Permiso workspace:configure; API key settings:write. CSRF para cookie. Máximo 10 pendientes y 3 nuevas por día UTC por negocio; 429 al superar. Deduplicación local por clave o similitud >=0.88 en nombres normalizados pt/es/en; devuelve la propuesta existente sin consumir cupo. Una coincidencia en catálogo devuelve 409 trait_already_catalogued. No cambia rasgos, glosario, flujos ni bot.
- Authentication: API key or dashboard session
- Scopes:
settings:write
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
X-Csrf-Token | header | No | string |
Request body (required)
application/json: TraitProposalInput
Responses
| Status | Description |
|---|---|
200 | Propuesta pendiente o duplicado existente (TraitProposal) |
429 | Error (RFC 9457) (Problem) |
default | Error (RFC 9457) (Problem) |
GET /workspace/traits
Rasgos del negocio, etiqueta libre y ejemplos aplicados (todos los roles)
F3-407 (ADR 0036). traits son claves del catálogo versionado (catalog_version) en su orden; vacía = todavía no se preguntaron (los proyectos que ya existían arrancan así). business_label es una etiqueta libre de rubro, solo informativa. examples lista los ejemplos compuestos y sus partes. API key config:read.
- Authentication: API key or dashboard session
- Scopes:
config:read
Responses
| Status | Description |
|---|---|
200 | OK (TraitsState) |
default | Error (RFC 9457) (Problem) |
PUT /workspace/traits
Guardar rasgos y etiqueta libre (owner o manager; requiere X-Csrf-Token)
Reemplaza la lista completa (sin repetir, se guarda en el orden del catálogo) y la etiqueta (hasta 80 caracteres; vacía la borra). Un rasgo fuera del catálogo es 422 unknown_trait con valid_traits; proponer rasgos nuevos es otra operación (F3-565). Inicializa el glosario por rasgos y ejemplo parecido sin otra pregunta; mientras conserve el valor generado, acompaña cambios posteriores. Conserva ediciones propias. No cambia reglas del bot ni de la agenda. Audita workspace.traits_updated. Permiso workspace:configure; API key settings:write.
- Authentication: API key or dashboard session
- Scopes:
settings:write
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
X-Csrf-Token | header | No | string |
Request body (required)
application/json: TraitsInput
Responses
| Status | Description |
|---|---|
200 | Guardado (TraitsState) |
422 | Error (RFC 9457) (Problem) |
default | Error (RFC 9457) (Problem) |
GET /workspace/vocabulary
Vocabulario del proyecto (owner o manager)
Cómo se nombran Servicio, Tarea, Recurso y Cliente (singular, plural y género por idioma) y, opcionalmente, cada tipo de recurso (kinds, p. ej. «cancha» para las salas de un club). Es presentación; no cambia rutas, tablas ni permisos. Sin vocabulario guardado (is_default) todos los textos son los genéricos de siempre.
- Authentication: API key or dashboard session
- Scopes:
config:read
Responses
| Status | Description |
|---|---|
200 | OK (Vocabulary) |
default | Error (RFC 9457) (Problem) |
PATCH /workspace/vocabulary
Editar el vocabulario (owner o manager; requiere X-Csrf-Token)
Elegir preset sin terms/kinds descarta esas ediciones; terms y kinds (término por tipo de recurso, FIU-470) reemplazan cada uno sus ediciones anteriores. Términos de 1 a 40 caracteres, sin HTML ni llaves. Escribe auditoría workspace.vocabulary_updated.
- Authentication: API key or dashboard session
- Scopes:
settings:write
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
X-Csrf-Token | header | Yes | string |
Request body (required)
application/json: VocabularyPatch
Responses
| Status | Description |
|---|---|
200 | Actualizado (Vocabulary) |
default | Error (RFC 9457) (Problem) |