{
"type": "https://docs.craqui.com/errors/revoked_api_key",
"title": "La clave fue revocada",
"status": 401,
"code": "revoked_api_key",
"detail": "Crea una clave nueva en Configuración → Integraciones.",
"request_id": "req_01hzx8m4k2a7d9q3f5w6y8z0bc"
}
{
"type": "https://docs.craqui.com/errors/sandbox_unavailable",
"title": "Tu estudio de prueba no está listo",
"status": 409,
"code": "sandbox_unavailable",
"detail": "Restablece tus datos de prueba en Configuración → Integraciones y vuelve a intentar.",
"request_id": "req_01hzx8m4k2a7d9q3f5w6y8z0bc"
}
Vuelve a activo a un cliente dado de baja, igual que “Reactivar” en su ficha de Craqui: puede volver a
reservar, con sus datos como estaban. No le devuelve packs, membresías ni reservas que se cancelaron en la
baja, y no le avisa nada. Responde el cliente como queda, con su ETag.
Si el cliente ya está activo, responde 200 con el cliente y no cambia nada. Con dry_run=true responde
200 con la vista previa.
Rechazos (409): plan_client_limit_reached (el plan del estudio no admite más clientes). Un cliente que
no es de tu negocio responde 404 not_found.
Una escritura: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia
responde wrong_vertical), y solo si tu negocio tiene habilitada la escritura por la API
(write_access_disabled si no). Un campo que el cuerpo no declara responde validation_failed con
unknown_field. Cuenta para el límite de escrituras (30 por minuto).
{
"type": "https://docs.craqui.com/errors/revoked_api_key",
"title": "La clave fue revocada",
"status": 401,
"code": "revoked_api_key",
"detail": "Crea una clave nueva en Configuración → Integraciones.",
"request_id": "req_01hzx8m4k2a7d9q3f5w6y8z0bc"
}
{
"type": "https://docs.craqui.com/errors/sandbox_unavailable",
"title": "Tu estudio de prueba no está listo",
"status": 409,
"code": "sandbox_unavailable",
"detail": "Restablece tus datos de prueba en Configuración → Integraciones y vuelve a intentar.",
"request_id": "req_01hzx8m4k2a7d9q3f5w6y8z0bc"
}
Clave del negocio. sk es una clave completa (todo lo que el rol de quien la creó puede dar)
y rk una restringida a los permisos que se eligieron al crearla. Solo se usa desde un
servidor: un pedido desde un navegador se rechaza con browser_not_allowed.
Obligatorio en todo pedido que crea o cambia algo, salvo con dry_run=true. Un valor único por
operación (por ejemplo un UUID). Si repites el pedido con la misma clave y el mismo cuerpo dentro de 24
horas, recibes la misma respuesta (con el header Idempotent-Replayed: true) sin que se repita el efecto,
también la misma respuesta de error: para intentar de nuevo algo que se rechazó, usa una clave nueva.
Con un dry_run=true la clave se ignora y no se guarda: el pedido real puede usar la misma. Pasadas las 24
horas, repetir una reserva con la misma clave y el mismo cuerpo sigue devolviendo la reserva que se hizo
(como está ahora), y la misma clave con otro cuerpo responde idempotency_key_reused.
true para ver qué pasaría sin hacerlo: Craqui evalúa el pedido con las mismas reglas que el real y
responde 200 con un objeto preview, sin escribir nada ni avisarle a nadie. Cuenta para el límite de
escrituras. false (o sin el parámetro) hace el pedido real. Es el único parámetro de consulta de una
escritura.
Body
application/json
Sin campos (el cuerpo puede faltar); qué hacer está en la ruta.
Response
El cliente como quedó, o con dry_run=true la vista previa (object dice cuál).
Option 1
Option 2
Un cliente del estudio. Nunca trae fecha de nacimiento, dirección, documento, datos fiscales, de
salud, notas ni contacto de emergencia.
Un cliente deleted (el estudio lo dio de baja) responde solo por id o dentro de un expand,
porque una reserva o una cuota vieja sigue apuntando a su id: trae id, status y fechas, con
first_name y last_name en null, y nunca email ni phone, con ningún permiso.
Solo con el permiso clients.pii:read: sin él, el campo no viene. En formato E.164
(+59899123456); null si no tiene teléfono o si no se pudo leer como uno.
Solo en GET /v1/clients/{id} con expand[]=active_membership (pide memberships:read): la
membresía que tiene ahora (la active; si no hay, la más nueva paused, suspended o
pending_payment). null si no tiene ninguna.
Solo en GET /v1/clients/{id} con expand[]=credit_balance (pide credits:read).
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"API de Craqui","colors":{"primary":"#1F33C7","light":"#8E9CFF","dark":"#1F33C7"},"logo":{"light":"https://mintcdn.com/craqui/oYoj2lAgh2Jk1Qcv/logo/light.png?fit=max\u0026auto=format\u0026n=oYoj2lAgh2Jk1Qcv\u0026q=85\u0026s=e96edbf5621b5bc4068b5ad8dee910c7","dark":"https://mintcdn.com/craqui/oYoj2lAgh2Jk1Qcv/logo/dark.png?fit=max\u0026auto=format\u0026n=oYoj2lAgh2Jk1Qcv\u0026q=85\u0026s=119f3ccfb48eb398b9a41837114157f1","href":"https://docs.craqui.com"},"favicon":"https://mintcdn.com/craqui/oYoj2lAgh2Jk1Qcv/favicon.png?fit=max\u0026auto=format\u0026n=oYoj2lAgh2Jk1Qcv\u0026q=85\u0026s=9b21e70461f095f51069e525e11ed743","api":{"playground":{"display":"interactive"}},"footer":{"socials":{"website":"https://craqui.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"craqui","hasAudioNarration":false,"actualSubdomain":"craqui","customDomains":["docs.craqui.com"],"gitSource":{"type":"github","owner":"javicraqui-build","repo":"craqui-api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":"","_id":"6aee011a2f669b27f0303a49"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af22f0027110864ba94823c","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Guías","count":129},{"language":"default","tag":"Errores","count":108},{"language":"default","tag":"Referencia","count":57},{"language":"default","tag":"Apps de terceros","count":8},{"language":"default","tag":"webhook_endpoints","count":8},{"language":"default","tag":"Conceptos","count":7},{"language":"default","tag":"memberships","count":7},{"language":"default","tag":"clients","count":6},{"language":"default","tag":"Empezar","count":5},{"language":"default","tag":"bookings","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"estudios/api-reference/clients/reactivar-a-un-cliente","slug":"/estudios/api-reference/clients/reactivar-a-un-cliente","pageMetadata":{"title":"Reactivar a un cliente","description":"Vuelve a activo a un cliente dado de baja, igual que \"Reactivar\" en su ficha de Craqui: puede volver a\nreservar, con sus datos como estaban. No le devuelve packs, membresías ni reservas que se cancelaron en la\nbaja, y no le avisa nada. Responde el cliente como queda, con su `ETag`.\n\nSi el cliente ya está activo, responde `200` con el cliente y no cambia nada. Con `dry_run=true` responde\n`200` con la vista previa.\n\nRechazos (`409`): `plan_client_limit_reached` (el plan del estudio no admite más clientes). Un cliente que\nno es de tu negocio responde `404 not_found`.\n\nUna escritura: lleva `Idempotency-Key` (salvo con `dry_run=true`), solo para estudios (en una academia\nresponde `wrong_vertical`), y solo si tu negocio tiene habilitada la escritura por la API\n(`write_access_disabled` si no). Un campo que el cuerpo no declara responde `validation_failed` con\n`unknown_field`. Cuenta para el límite de escrituras (30 por minuto).\n","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /clients/{id}/reactivate","href":"/estudios/api-reference/clients/reactivar-a-un-cliente","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Vuelve a activo a un cliente dado de baja, igual que “Reactivar” en su ficha de Craqui: puede volver a\\nreservar, con sus datos como estaban. No le devuelve packs, membresías ni reservas que se cancelaron en la\\nbaja, y no le avisa nada. Responde el cliente como queda, con su \", _jsx(_components.code, {\n children: \"ETag\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Si el cliente ya está activo, responde \", _jsx(_components.code, {\n children: \"200\"\n }), \" con el cliente y no cambia nada. Con \", _jsx(_components.code, {\n children: \"dry_run=true\"\n }), \" responde\\n\", _jsx(_components.code, {\n children: \"200\"\n }), \" con la vista previa.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Rechazos (\", _jsx(_components.code, {\n children: \"409\"\n }), \"): \", _jsx(_components.code, {\n children: \"plan_client_limit_reached\"\n }), \" (el plan del estudio no admite más clientes). Un cliente que\\nno es de tu negocio responde \", _jsx(_components.code, {\n children: \"404 not_found\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Una escritura: lleva \", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \" (salvo con \", _jsx(_components.code, {\n children: \"dry_run=true\"\n }), \"), solo para estudios (en una academia\\nresponde \", _jsx(_components.code, {\n children: \"wrong_vertical\"\n }), \"), y solo si tu negocio tiene habilitada la escritura por la API\\n(\", _jsx(_components.code, {\n children: \"write_access_disabled\"\n }), \" si no). Un campo que el cuerpo no declara responde \", _jsx(_components.code, {\n children: \"validation_failed\"\n }), \" con\\n\", _jsx(_components.code, {\n children: \"unknown_field\"\n }), \". Cuenta para el límite de escrituras (30 por minuto).\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Reactivar a un cliente","description":"Vuelve a activo a un cliente dado de baja, igual que \"Reactivar\" en su ficha de Craqui: puede volver a\nreservar, con sus datos como estaban. No le devuelve packs, membresías ni reservas que se cancelaron en la\nbaja, y no le avisa nada. Responde el cliente como queda, con su `ETag`.\n\nSi el cliente ya está activo, responde `200` con el cliente y no cambia nada. Con `dry_run=true` responde\n`200` con la vista previa.\n\nRechazos (`409`): `plan_client_limit_reached` (el plan del estudio no admite más clientes). Un cliente que\nno es de tu negocio responde `404 not_found`.\n\nUna escritura: lleva `Idempotency-Key` (salvo con `dry_run=true`), solo para estudios (en una academia\nresponde `wrong_vertical`), y solo si tu negocio tiene habilitada la escritura por la API\n(`write_access_disabled` si no). Un campo que el cuerpo no declara responde `validation_failed` con\n`unknown_field`. Cuenta para el límite de escrituras (30 por minuto).\n","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /clients/{id}/reactivate","href":"/estudios/api-reference/clients/reactivar-a-un-cliente","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"reactivateClient","tags":["clients"],"summary":"Reactivar a un cliente","description":"Vuelve a activo a un cliente dado de baja, igual que \"Reactivar\" en su ficha de Craqui: puede volver a\nreservar, con sus datos como estaban. No le devuelve packs, membresías ni reservas que se cancelaron en la\nbaja, y no le avisa nada. Responde el cliente como queda, con su `ETag`.\n\nSi el cliente ya está activo, responde `200` con el cliente y no cambia nada. Con `dry_run=true` responde\n`200` con la vista previa.\n\nRechazos (`409`): `plan_client_limit_reached` (el plan del estudio no admite más clientes). Un cliente que\nno es de tu negocio responde `404 not_found`.\n\nUna escritura: lleva `Idempotency-Key` (salvo con `dry_run=true`), solo para estudios (en una academia\nresponde `wrong_vertical`), y solo si tu negocio tiene habilitada la escritura por la API\n(`write_access_disabled` si no). Un campo que el cuerpo no declara responde `validation_failed` con\n`unknown_field`. Cuenta para el límite de escrituras (30 por minuto).\n","x-craqui-scope":"clients:write","security":["6677469b-452e-4042-b799-fa556183558a","3c975ee9-c1e5-41e9-aff8-435adf0b68d1"],"x-craqui-capability":"api_clients_reactivate","x-craqui-effect-class":"internal","parameters":["49813d2e-780d-44cd-bff5-28433fa7c5ab","de0f70d5-c984-4d97-b4e9-9aa2233fac3a","fc468d8a-d2ff-4ea8-8ac9-9db1a5a3c35e","d017d07f-d37e-4c98-8b6a-8ea4f0bc3fc3"],"requestBody":"876aec0f-938e-4829-bf82-51d04332f4e6","responses":{"200":"57d9787e-0a12-47b9-848b-7e23aef71495","400":"5cc8c50f-33c3-4635-ab23-75cc1ac45a29","401":"3d8fc977-f6cc-479c-8913-2f63d53d05bc","403":"b3c3f125-4c59-4a4b-944a-bb0c7fee14d0","404":"d46227c7-e9d8-4434-848a-bdae27544265","409":"40583f8f-80db-43f9-a097-6b642a5f5fc6","422":"b66a27a5-5f80-4a4e-89f1-839c3e691076","429":"d7b639e2-9921-4f20-a367-5c8c69e921f6","500":"2c6b5811-d411-42bd-8a74-01e1447b2eac"},"method":"post","type":"path","servers":["bb48cfac-2655-4314-90fd-28cc11e87988"],"path":"/clients/{id}/reactivate","baseUrlOptions":["https://api.craqui.com/v1"],"title":"Reactivar a un cliente","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"49813d2e-780d-44cd-bff5-28433fa7c5ab":{"name":"Craqui-Version","in":"header","required":false,"description":"Versión de la API para este pedido (`YYYY-MM-DD`). Si no la mandas, se usa la versión fijada en\nla clave cuando se creó.\n","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","examples":["2026-12-01"],"isRequired":false,"description":"Versión de la API para este pedido (`YYYY-MM-DD`). Si no la mandas, se usa la versión fijada en\nla clave cuando se creó.\n","uniqueKey":"","typeLabel":"string"}},"de0f70d5-c984-4d97-b4e9-9aa2233fac3a":{"name":"id","in":"path","required":true,"description":"El id del cliente (`cli_…`).","schema":{"type":"string","description":"El id del cliente (`cli_…`).\nId de un cliente del estudio.","pattern":"^cli_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["cli_01jatfha5h4nkg77c3wfrvd3cw"],"isRequired":true,"uniqueKey":"","typeLabel":"string"}},"fc468d8a-d2ff-4ea8-8ac9-9db1a5a3c35e":{"name":"Idempotency-Key","in":"header","required":false,"description":"Obligatorio en todo pedido que crea o cambia algo, salvo con `dry_run=true`. Un valor único por\noperación (por ejemplo un UUID). Si repites el pedido con la misma clave y el mismo cuerpo dentro de 24\nhoras, recibes la misma respuesta (con el header `Idempotent-Replayed: true`) sin que se repita el efecto,\ntambién la misma respuesta de error: para intentar de nuevo algo que se rechazó, usa una clave nueva.\nCon un `dry_run=true` la clave se ignora y no se guarda: el pedido real puede usar la misma. Pasadas las 24\nhoras, repetir una reserva con la misma clave y el mismo cuerpo sigue devolviendo la reserva que se hizo\n(como está ahora), y la misma clave con otro cuerpo responde `idempotency_key_reused`.\n","schema":{"type":"string","minLength":1,"maxLength":255,"isRequired":false,"description":"Obligatorio en todo pedido que crea o cambia algo, salvo con `dry_run=true`. Un valor único por\noperación (por ejemplo un UUID). Si repites el pedido con la misma clave y el mismo cuerpo dentro de 24\nhoras, recibes la misma respuesta (con el header `Idempotent-Replayed: true`) sin que se repita el efecto,\ntambién la misma respuesta de error: para intentar de nuevo algo que se rechazó, usa una clave nueva.\nCon un `dry_run=true` la clave se ignora y no se guarda: el pedido real puede usar la misma. Pasadas las 24\nhoras, repetir una reserva con la misma clave y el mismo cuerpo sigue devolviendo la reserva que se hizo\n(como está ahora), y la misma clave con otro cuerpo responde `idempotency_key_reused`.\n","uniqueKey":"","typeLabel":"string"}},"d017d07f-d37e-4c98-8b6a-8ea4f0bc3fc3":{"name":"dry_run","in":"query","required":false,"description":"`true` para ver qué pasaría sin hacerlo: Craqui evalúa el pedido con las mismas reglas que el real y\nresponde `200` con un objeto `preview`, sin escribir nada ni avisarle a nadie. Cuenta para el límite de\nescrituras. `false` (o sin el parámetro) hace el pedido real. Es el único parámetro de consulta de una\nescritura.\n","schema":{"type":"boolean","isRequired":false,"description":"`true` para ver qué pasaría sin hacerlo: Craqui evalúa el pedido con las mismas reglas que el real y\nresponde `200` con un objeto `preview`, sin escribir nada ni avisarle a nadie. Cuenta para el límite de\nescrituras. `false` (o sin el parámetro) hace el pedido real. Es el único parámetro de consulta de una\nescritura.\n","uniqueKey":"","typeLabel":"boolean"}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Sin campos (el cuerpo puede faltar); qué hacer está en la ruta.","properties":{},"uniqueKey":"","typeLabel":"object"},"example":{},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"57d9787e-0a12-47b9-848b-7e23aef71495":{"description":"El cliente como quedó, o con `dry_run=true` la vista previa (`object` dice cuál).","headers":{"Request-Id":{"description":"Identificador del pedido. Aparece también en el cuerpo de los errores.","schema":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$"}},"Craqui-Version":{"description":"La versión de la API con la que se respondió.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"RateLimit":{"description":"Pedidos que quedan en la ventana actual y segundos hasta que se renueva (draft IETF httpapi-ratelimit-headers).","schema":{"type":"string","examples":["\"read\";r=97;t=42"]}},"RateLimit-Policy":{"description":"Límite de la clave por ventana (draft IETF httpapi-ratelimit-headers).","schema":{"type":"string","examples":["\"read\";q=100;w=60"]}},"ETag":{"description":"La versión del cliente que acabas de leer o escribir. Mándala en `If-Match` en un `PATCH` para que el cambio se\naplique solo si nadie lo cambió desde entonces. Una respuesta repetida (`Idempotent-Replayed: true`) no la trae:\npide `GET /v1/clients/{id}`.\n","schema":{"type":"string","examples":["\"5d41402abc4b2a76b9719d911017c592\""]}},"Idempotent-Replayed":{"description":"`true` cuando la respuesta es la guardada de un pedido anterior con la misma `Idempotency-Key`.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Un cliente del estudio. Nunca trae fecha de nacimiento, dirección, documento, datos fiscales, de\nsalud, notas ni contacto de emergencia.\n\nUn cliente `deleted` (el estudio lo dio de baja) responde solo por id o dentro de un `expand`,\nporque una reserva o una cuota vieja sigue apuntando a su id: trae `id`, `status` y fechas, con\n`first_name` y `last_name` en `null`, y nunca `email` ni `phone`, con ningún permiso.\n","required":["id","object","livemode","first_name","last_name","status","home_center_id","created_at","updated_at","metadata"],"properties":{"id":{"type":"string","description":"Id de un cliente del estudio.","pattern":"^cli_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["cli_01jatfha5h4nkg77c3wfrvd3cw"],"isRequired":true,"uniqueKey":"oneOf.0.id","typeLabel":"string"},"object":{"type":"string","const":"client","isRequired":true,"uniqueKey":"oneOf.0.object","typeLabel":"string"},"livemode":{"type":"boolean","description":"`false` si el objeto es de tu estudio de prueba (claves `crq_test_`); `true` con claves `crq_live_`.","isRequired":true,"uniqueKey":"oneOf.0.livemode","typeLabel":"boolean"},"first_name":{"oneOf":[{"type":"string","description":"`null` en un cliente `deleted`, o si el estudio no lo cargó.","examples":["Sofía"],"isRequired":true,"uniqueKey":"oneOf.0.first_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"`null` en un cliente `deleted`, o si el estudio no lo cargó.","examples":["Sofía"],"isRequired":true,"uniqueKey":"oneOf.0.first_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.first_name","typeLabel":"string | null"},"last_name":{"oneOf":[{"type":"string","description":"`null` en un cliente `deleted`, o si el estudio no lo cargó.","examples":["Pérez"],"isRequired":true,"uniqueKey":"oneOf.0.last_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"`null` en un cliente `deleted`, o si el estudio no lo cargó.","examples":["Pérez"],"isRequired":true,"uniqueKey":"oneOf.0.last_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.last_name","typeLabel":"string | null"},"status":{"type":"string","description":"`active`, `inactive` o `deleted`. Las listas traen solo `active` e `inactive`. La lista puede\ncrecer: trata un valor que no conoces como inactivo.\n","enum":["active","inactive","deleted"],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"oneOf.0.status","typeLabel":"enum\u003cstring>"},"home_center_id":{"oneOf":[{"type":"string","description":"La sede habitual del cliente, si el estudio le asignó una.","pattern":"^ctr_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"ctr_01j65pdnq74qvnh0953pzvtczg","isRequired":true,"uniqueKey":"oneOf.0.home_center_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"La sede habitual del cliente, si el estudio le asignó una.","isRequired":true,"uniqueKey":"oneOf.0.home_center_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.home_center_id","typeLabel":"string | null"},"created_at":{"type":"string","format":"date-time","description":"Cuándo pasó a ser cliente de este estudio.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.0.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","description":"La última vez que cambió algo del cliente, su metadata incluida.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.0.updated_at","typeLabel":"string\u003cdate-time>"},"metadata":{"type":"object","description":"Lo que tu sistema guardó sobre el cliente (`{}` si nada). Un cliente `deleted` trae `{}`.","maxProperties":20,"propertyNames":{"pattern":"^[a-z0-9_]{1,40}$"},"additionalProperties":{"type":"string","maxLength":500,"uniqueKey":"oneOf.0.metadata.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.0.metadata","typeLabel":"object"},"email":{"oneOf":[{"type":"string","description":"Solo con el permiso `clients.pii:read`: sin él, el campo no viene (no es `null`). `null` si el\ncliente no tiene email.\n","uniqueKey":"oneOf.0.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"Solo con el permiso `clients.pii:read`: sin él, el campo no viene (no es `null`). `null` si el\ncliente no tiene email.\n","uniqueKey":"oneOf.0.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.email","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","description":"Solo con el permiso `clients.pii:read`: sin él, el campo no viene. En formato E.164\n(`+59899123456`); `null` si no tiene teléfono o si no se pudo leer como uno.\n","pattern":"^\\+[1-9]\\d{6,14}$","examples":["+59899123456"],"uniqueKey":"oneOf.0.phone.oneOf.0","typeLabel":"string"},{"type":"null","description":"Solo con el permiso `clients.pii:read`: sin él, el campo no viene. En formato E.164\n(`+59899123456`); `null` si no tiene teléfono o si no se pudo leer como uno.\n","pattern":"^\\+[1-9]\\d{6,14}$","examples":["+59899123456"],"uniqueKey":"oneOf.0.phone.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.phone","typeLabel":"string | null"},"active_membership":{"oneOf":[{"type":"object","description":"Solo en `GET /v1/clients/{id}` con `expand[]=active_membership` (pide `memberships:read`): la\nmembresía que tiene ahora (la `active`; si no hay, la más nueva `paused`, `suspended` o\n`pending_payment`). `null` si no tiene ninguna.\n","required":["id","object","livemode","client_id","membership_plan_id","status","current_period_start","current_period_end","renews_at","next_credit_date","started_at","cancelled_at","suspension_reason","discount","active_freeze_id","created_at","updated_at"],"properties":{"id":{"type":"string","description":"Id de una membresía de un cliente.","pattern":"^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mem_01j1q27t44qvr6v2s50cv4rbvq"],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.id","typeLabel":"string"},"object":{"type":"string","const":"membership","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.object","typeLabel":"string"},"livemode":{"type":"boolean","description":"`false` si el objeto es de tu estudio de prueba (claves `crq_test_`); `true` con claves `crq_live_`.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.livemode","typeLabel":"boolean"},"client_id":{"oneOf":[{"type":"string","description":"El cliente. `null` si la membresía es de alguien que no es cliente del estudio.","pattern":"^cli_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"cli_01jatfha5h4nkg77c3wfrvd3cw","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.client_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"El cliente. `null` si la membresía es de alguien que no es cliente del estudio.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.client_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.client_id","typeLabel":"string | null"},"membership_plan_id":{"type":"string","description":"Id de un plan de membresía.","pattern":"^mpl_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mpl_01jt05nvk11xa1zm1pwve2qj7r"],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.membership_plan_id","typeLabel":"string"},"status":{"type":"string","description":"`active`, `paused` (congelada), `suspended`, `pending_payment`, `cancelled` o `expired`. La lista\npuede crecer: trata un valor que no conoces como una membresía que no da créditos.\n","enum":["active","paused","suspended","pending_payment","cancelled","expired"],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.status","typeLabel":"enum\u003cstring>"},"current_period_start":{"type":"string","format":"date-time","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.current_period_start","typeLabel":"string\u003cdate-time>"},"current_period_end":{"type":"string","format":"date-time","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.current_period_end","typeLabel":"string\u003cdate-time>"},"renews_at":{"oneOf":[{"type":"string","description":"Cuándo se renueva sola: el fin del período actual si la membresía está `active` y su plan se\nrenueva solo; si no, `null`.\n","format":"date-time","example":"2026-12-02T19:00:00-03:00","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.renews_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Cuándo se renueva sola: el fin del período actual si la membresía está `active` y su plan se\nrenueva solo; si no, `null`.\n","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.renews_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.renews_at","typeLabel":"string\u003cdate-time> | null"},"next_credit_date":{"oneOf":[{"type":"string","description":"La fecha local en que recibe los próximos créditos; `null` si no hay una prevista.","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-12-02","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.next_credit_date.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"La fecha local en que recibe los próximos créditos; `null` si no hay una prevista.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.next_credit_date.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.next_credit_date","typeLabel":"string\u003cdate> | null"},"started_at":{"type":"string","format":"date-time","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.started_at","typeLabel":"string\u003cdate-time>"},"cancelled_at":{"oneOf":[{"type":"string","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","format":"date-time","example":"2026-12-02T19:00:00-03:00","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.cancelled_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.cancelled_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.cancelled_at","typeLabel":"string\u003cdate-time> | null"},"suspension_reason":{"oneOf":[{"type":"string","description":"Por qué se suspendió, como texto; `null` si no está suspendida.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.suspension_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Por qué se suspendió, como texto; `null` si no está suspendida.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.suspension_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.suspension_reason","typeLabel":"string | null"},"discount":{"oneOf":[{"type":"object","description":"El descuento que tiene la membresía; `null` si no tiene.","required":["percent","fixed_amount","periods_remaining"],"properties":{"percent":{"oneOf":[{"type":"number","description":"El porcentaje de descuento (por ejemplo `15` es 15 %); `null` si es un monto fijo.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.percent.oneOf.0","typeLabel":"number"},{"type":"null","description":"El porcentaje de descuento (por ejemplo `15` es 15 %); `null` si es un monto fijo.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.percent.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.percent","typeLabel":"number | null"},"fixed_amount":{"oneOf":[{"type":"object","description":"El monto fijo que se descuenta de cada cuota; `null` si es un porcentaje.","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.fixed_amount.oneOf.0.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.fixed_amount.oneOf.0.currency","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.fixed_amount.oneOf.0","typeLabel":"object"},{"type":"null","description":"El monto fijo que se descuenta de cada cuota; `null` si es un porcentaje.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.fixed_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.fixed_amount","typeLabel":"object | null"},"periods_remaining":{"oneOf":[{"type":"integer","description":"Cuántos períodos más se aplica; `null` si se aplica siempre.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.periods_remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Cuántos períodos más se aplica; `null` si se aplica siempre.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.periods_remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0.periods_remaining","typeLabel":"integer | null"}},"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.0","typeLabel":"object"},{"type":"null","description":"El descuento que tiene la membresía; `null` si no tiene.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.discount","typeLabel":"object | null"},"active_freeze_id":{"oneOf":[{"type":"string","description":"El congelamiento en curso o programado; `null` si no hay. El detalle está en `GET /v1/memberships/{id}/freezes`.","pattern":"^frz_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"frz_01jtk6e3z2vm9ych2cc7kadyja","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.active_freeze_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"El congelamiento en curso o programado; `null` si no hay. El detalle está en `GET /v1/memberships/{id}/freezes`.","isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.active_freeze_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.active_freeze_id","typeLabel":"string | null"},"created_at":{"type":"string","format":"date-time","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.0.active_membership.oneOf.0.updated_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"oneOf.0.active_membership.oneOf.0","typeLabel":"object"},{"type":"null","description":"Solo en `GET /v1/clients/{id}` con `expand[]=active_membership` (pide `memberships:read`): la\nmembresía que tiene ahora (la `active`; si no hay, la más nueva `paused`, `suspended` o\n`pending_payment`). `null` si no tiene ninguna.\n","uniqueKey":"oneOf.0.active_membership.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.active_membership","typeLabel":"object | null"},"credit_balance":{"type":"object","description":"Solo en `GET /v1/clients/{id}` con `expand[]=credit_balance` (pide `credits:read`).","required":["object","livemode","client_id","total_credits","grants","grants_has_more"],"properties":{"object":{"type":"string","const":"credit_balance","isRequired":true,"uniqueKey":"oneOf.0.credit_balance.object","typeLabel":"string"},"livemode":{"type":"boolean","description":"`false` si el objeto es de tu estudio de prueba (claves `crq_test_`); `true` con claves `crq_live_`.","isRequired":true,"uniqueKey":"oneOf.0.credit_balance.livemode","typeLabel":"boolean"},"client_id":{"type":"string","description":"Id de un cliente del estudio.","pattern":"^cli_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["cli_01jatfha5h4nkg77c3wfrvd3cw"],"isRequired":true,"uniqueKey":"oneOf.0.credit_balance.client_id","typeLabel":"string"},"total_credits":{"type":"integer","description":"El saldo del cliente; `0` si nunca tuvo créditos.","isRequired":true,"uniqueKey":"oneOf.0.credit_balance.total_credits","typeLabel":"integer"},"grants":{"type":"array","description":"Los lotes que se pueden usar (sin anular, con créditos y sin vencer), del que vence primero al último. Como mucho 100.","items":{"type":"object","required":["credit_grant_id","kind","credits_remaining","expires_at","course_ids"],"properties":{"credit_grant_id":{"type":"string","description":"Id de un lote de créditos (un pack, una oferta o el período de una membresía).","pattern":"^cgr_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["cgr_01jdwsxvjgc7y12y0h12f43149"],"isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].credit_grant_id","typeLabel":"string"},"kind":{"oneOf":[{"type":"string","description":"`pack`, `intro_offer` o `membership_period`. La lista puede crecer.","enum":["pack","intro_offer","membership_period",null],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].kind.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"`pack`, `intro_offer` o `membership_period`. La lista puede crecer.","enum":["pack","intro_offer","membership_period",null],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].kind.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].kind","typeLabel":"enum\u003cstring> | null"},"credits_remaining":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].credits_remaining","typeLabel":"integer"},"expires_at":{"oneOf":[{"type":"string","description":"Cuándo vencen; `null` si no vencen.","format":"date-time","example":"2026-12-02T19:00:00-03:00","isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].expires_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Cuándo vencen; `null` si no vencen.","isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].expires_at","typeLabel":"string\u003cdate-time> | null"},"course_ids":{"oneOf":[{"description":"Las disciplinas en las que sirven; `null` si sirven en todas.","type":"array","items":{"type":"string","description":"Id de una disciplina.","pattern":"^crs_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["crs_01jff81dk7rxtacmye5nanfp0h"],"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].course_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].course_ids.oneOf.0","typeLabel":"string[]"},{"description":"Las disciplinas en las que sirven; `null` si sirven en todas.","type":"null","items":{"type":"string","description":"Id de una disciplina.","pattern":"^crs_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["crs_01jff81dk7rxtacmye5nanfp0h"]},"isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].course_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX].course_ids","typeLabel":"string[] | null"}},"uniqueKey":"oneOf.0.credit_balance.grants.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants","typeLabel":"object[]"},"grants_has_more":{"type":"boolean","description":"`true` si el cliente tiene más de 100 lotes vivos; la lista completa está en `GET /v1/credit_grants?client_id=…\u0026status=active`.","isRequired":true,"uniqueKey":"oneOf.0.credit_balance.grants_has_more","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.credit_balance","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Lo que haría reactivar a un cliente, sin hacerlo. Craqui la evalúa con las mismas reglas que el pedido real\n(entre ellas, el límite de clientes del plan): si el real se rechazaría, la vista previa responde el mismo error.\n","required":["object","livemode","action","result","effects","warnings","summary"],"properties":{"object":{"type":"string","const":"preview","isRequired":true,"uniqueKey":"oneOf.1.object","typeLabel":"string"},"livemode":{"type":"boolean","description":"`false` si la vista previa es de tu estudio de prueba (claves `crq_test_`); `true` con claves `crq_live_`.","isRequired":true,"uniqueKey":"oneOf.1.livemode","typeLabel":"boolean"},"action":{"type":"string","description":"`client.reactivate`. La lista puede crecer.","enum":["client.reactivate"],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"oneOf.1.action","typeLabel":"enum\u003cstring>"},"result":{"type":"object","description":"Un cliente del estudio. Nunca trae fecha de nacimiento, dirección, documento, datos fiscales, de\nsalud, notas ni contacto de emergencia.\n\nUn cliente `deleted` (el estudio lo dio de baja) responde solo por id o dentro de un `expand`,\nporque una reserva o una cuota vieja sigue apuntando a su id: trae `id`, `status` y fechas, con\n`first_name` y `last_name` en `null`, y nunca `email` ni `phone`, con ningún permiso.\n","required":["id","object","livemode","first_name","last_name","status","home_center_id","created_at","updated_at","metadata"],"properties":{"id":{"type":"string","description":"Id de un cliente del estudio.","pattern":"^cli_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["cli_01jatfha5h4nkg77c3wfrvd3cw"],"isRequired":true,"uniqueKey":"oneOf.1.result.id","typeLabel":"string"},"object":{"type":"string","const":"client","isRequired":true,"uniqueKey":"oneOf.1.result.object","typeLabel":"string"},"livemode":{"type":"boolean","description":"`false` si el objeto es de tu estudio de prueba (claves `crq_test_`); `true` con claves `crq_live_`.","isRequired":true,"uniqueKey":"oneOf.1.result.livemode","typeLabel":"boolean"},"first_name":{"oneOf":[{"type":"string","description":"`null` en un cliente `deleted`, o si el estudio no lo cargó.","examples":["Sofía"],"isRequired":true,"uniqueKey":"oneOf.1.result.first_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"`null` en un cliente `deleted`, o si el estudio no lo cargó.","examples":["Sofía"],"isRequired":true,"uniqueKey":"oneOf.1.result.first_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.first_name","typeLabel":"string | null"},"last_name":{"oneOf":[{"type":"string","description":"`null` en un cliente `deleted`, o si el estudio no lo cargó.","examples":["Pérez"],"isRequired":true,"uniqueKey":"oneOf.1.result.last_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"`null` en un cliente `deleted`, o si el estudio no lo cargó.","examples":["Pérez"],"isRequired":true,"uniqueKey":"oneOf.1.result.last_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.last_name","typeLabel":"string | null"},"status":{"type":"string","description":"`active`, `inactive` o `deleted`. Las listas traen solo `active` e `inactive`. La lista puede\ncrecer: trata un valor que no conoces como inactivo.\n","enum":["active","inactive","deleted"],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"oneOf.1.result.status","typeLabel":"enum\u003cstring>"},"home_center_id":{"oneOf":[{"type":"string","description":"La sede habitual del cliente, si el estudio le asignó una.","pattern":"^ctr_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"ctr_01j65pdnq74qvnh0953pzvtczg","isRequired":true,"uniqueKey":"oneOf.1.result.home_center_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"La sede habitual del cliente, si el estudio le asignó una.","isRequired":true,"uniqueKey":"oneOf.1.result.home_center_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.home_center_id","typeLabel":"string | null"},"created_at":{"type":"string","format":"date-time","description":"Cuándo pasó a ser cliente de este estudio.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.1.result.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","description":"La última vez que cambió algo del cliente, su metadata incluida.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.1.result.updated_at","typeLabel":"string\u003cdate-time>"},"metadata":{"type":"object","description":"Lo que tu sistema guardó sobre el cliente (`{}` si nada). Un cliente `deleted` trae `{}`.","maxProperties":20,"propertyNames":{"pattern":"^[a-z0-9_]{1,40}$"},"additionalProperties":{"type":"string","maxLength":500,"uniqueKey":"oneOf.1.result.metadata.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.1.result.metadata","typeLabel":"object"},"email":{"oneOf":[{"type":"string","description":"Solo con el permiso `clients.pii:read`: sin él, el campo no viene (no es `null`). `null` si el\ncliente no tiene email.\n","uniqueKey":"oneOf.1.result.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"Solo con el permiso `clients.pii:read`: sin él, el campo no viene (no es `null`). `null` si el\ncliente no tiene email.\n","uniqueKey":"oneOf.1.result.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.result.email","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","description":"Solo con el permiso `clients.pii:read`: sin él, el campo no viene. En formato E.164\n(`+59899123456`); `null` si no tiene teléfono o si no se pudo leer como uno.\n","pattern":"^\\+[1-9]\\d{6,14}$","examples":["+59899123456"],"uniqueKey":"oneOf.1.result.phone.oneOf.0","typeLabel":"string"},{"type":"null","description":"Solo con el permiso `clients.pii:read`: sin él, el campo no viene. En formato E.164\n(`+59899123456`); `null` si no tiene teléfono o si no se pudo leer como uno.\n","pattern":"^\\+[1-9]\\d{6,14}$","examples":["+59899123456"],"uniqueKey":"oneOf.1.result.phone.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.result.phone","typeLabel":"string | null"},"active_membership":{"oneOf":[{"type":"object","description":"Solo en `GET /v1/clients/{id}` con `expand[]=active_membership` (pide `memberships:read`): la\nmembresía que tiene ahora (la `active`; si no hay, la más nueva `paused`, `suspended` o\n`pending_payment`). `null` si no tiene ninguna.\n","required":["id","object","livemode","client_id","membership_plan_id","status","current_period_start","current_period_end","renews_at","next_credit_date","started_at","cancelled_at","suspension_reason","discount","active_freeze_id","created_at","updated_at"],"properties":{"id":{"type":"string","description":"Id de una membresía de un cliente.","pattern":"^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mem_01j1q27t44qvr6v2s50cv4rbvq"],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.id","typeLabel":"string"},"object":{"type":"string","const":"membership","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.object","typeLabel":"string"},"livemode":{"type":"boolean","description":"`false` si el objeto es de tu estudio de prueba (claves `crq_test_`); `true` con claves `crq_live_`.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.livemode","typeLabel":"boolean"},"client_id":{"oneOf":[{"type":"string","description":"El cliente. `null` si la membresía es de alguien que no es cliente del estudio.","pattern":"^cli_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"cli_01jatfha5h4nkg77c3wfrvd3cw","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.client_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"El cliente. `null` si la membresía es de alguien que no es cliente del estudio.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.client_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.client_id","typeLabel":"string | null"},"membership_plan_id":{"type":"string","description":"Id de un plan de membresía.","pattern":"^mpl_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mpl_01jt05nvk11xa1zm1pwve2qj7r"],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.membership_plan_id","typeLabel":"string"},"status":{"type":"string","description":"`active`, `paused` (congelada), `suspended`, `pending_payment`, `cancelled` o `expired`. La lista\npuede crecer: trata un valor que no conoces como una membresía que no da créditos.\n","enum":["active","paused","suspended","pending_payment","cancelled","expired"],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.status","typeLabel":"enum\u003cstring>"},"current_period_start":{"type":"string","format":"date-time","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.current_period_start","typeLabel":"string\u003cdate-time>"},"current_period_end":{"type":"string","format":"date-time","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.current_period_end","typeLabel":"string\u003cdate-time>"},"renews_at":{"oneOf":[{"type":"string","description":"Cuándo se renueva sola: el fin del período actual si la membresía está `active` y su plan se\nrenueva solo; si no, `null`.\n","format":"date-time","example":"2026-12-02T19:00:00-03:00","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.renews_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Cuándo se renueva sola: el fin del período actual si la membresía está `active` y su plan se\nrenueva solo; si no, `null`.\n","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.renews_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.renews_at","typeLabel":"string\u003cdate-time> | null"},"next_credit_date":{"oneOf":[{"type":"string","description":"La fecha local en que recibe los próximos créditos; `null` si no hay una prevista.","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-12-02","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.next_credit_date.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"La fecha local en que recibe los próximos créditos; `null` si no hay una prevista.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.next_credit_date.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.next_credit_date","typeLabel":"string\u003cdate> | null"},"started_at":{"type":"string","format":"date-time","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.started_at","typeLabel":"string\u003cdate-time>"},"cancelled_at":{"oneOf":[{"type":"string","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","format":"date-time","example":"2026-12-02T19:00:00-03:00","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.cancelled_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.cancelled_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.cancelled_at","typeLabel":"string\u003cdate-time> | null"},"suspension_reason":{"oneOf":[{"type":"string","description":"Por qué se suspendió, como texto; `null` si no está suspendida.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.suspension_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Por qué se suspendió, como texto; `null` si no está suspendida.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.suspension_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.suspension_reason","typeLabel":"string | null"},"discount":{"oneOf":[{"type":"object","description":"El descuento que tiene la membresía; `null` si no tiene.","required":["percent","fixed_amount","periods_remaining"],"properties":{"percent":{"oneOf":[{"type":"number","description":"El porcentaje de descuento (por ejemplo `15` es 15 %); `null` si es un monto fijo.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.percent.oneOf.0","typeLabel":"number"},{"type":"null","description":"El porcentaje de descuento (por ejemplo `15` es 15 %); `null` si es un monto fijo.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.percent.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.percent","typeLabel":"number | null"},"fixed_amount":{"oneOf":[{"type":"object","description":"El monto fijo que se descuenta de cada cuota; `null` si es un porcentaje.","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.fixed_amount.oneOf.0.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.fixed_amount.oneOf.0.currency","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.fixed_amount.oneOf.0","typeLabel":"object"},{"type":"null","description":"El monto fijo que se descuenta de cada cuota; `null` si es un porcentaje.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.fixed_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.fixed_amount","typeLabel":"object | null"},"periods_remaining":{"oneOf":[{"type":"integer","description":"Cuántos períodos más se aplica; `null` si se aplica siempre.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.periods_remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Cuántos períodos más se aplica; `null` si se aplica siempre.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.periods_remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0.periods_remaining","typeLabel":"integer | null"}},"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.0","typeLabel":"object"},{"type":"null","description":"El descuento que tiene la membresía; `null` si no tiene.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.discount","typeLabel":"object | null"},"active_freeze_id":{"oneOf":[{"type":"string","description":"El congelamiento en curso o programado; `null` si no hay. El detalle está en `GET /v1/memberships/{id}/freezes`.","pattern":"^frz_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"frz_01jtk6e3z2vm9ych2cc7kadyja","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.active_freeze_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"El congelamiento en curso o programado; `null` si no hay. El detalle está en `GET /v1/memberships/{id}/freezes`.","isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.active_freeze_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.active_freeze_id","typeLabel":"string | null"},"created_at":{"type":"string","format":"date-time","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","description":"Instante en RFC 3339 con el offset del negocio en ese momento.","examples":["2026-12-02T19:00:00-03:00"],"isRequired":true,"uniqueKey":"oneOf.1.result.active_membership.oneOf.0.updated_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"oneOf.1.result.active_membership.oneOf.0","typeLabel":"object"},{"type":"null","description":"Solo en `GET /v1/clients/{id}` con `expand[]=active_membership` (pide `memberships:read`): la\nmembresía que tiene ahora (la `active`; si no hay, la más nueva `paused`, `suspended` o\n`pending_payment`). `null` si no tiene ninguna.\n","uniqueKey":"oneOf.1.result.active_membership.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.result.active_membership","typeLabel":"object | null"},"credit_balance":{"type":"object","description":"Solo en `GET /v1/clients/{id}` con `expand[]=credit_balance` (pide `credits:read`).","required":["object","livemode","client_id","total_credits","grants","grants_has_more"],"properties":{"object":{"type":"string","const":"credit_balance","isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.object","typeLabel":"string"},"livemode":{"type":"boolean","description":"`false` si el objeto es de tu estudio de prueba (claves `crq_test_`); `true` con claves `crq_live_`.","isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.livemode","typeLabel":"boolean"},"client_id":{"type":"string","description":"Id de un cliente del estudio.","pattern":"^cli_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["cli_01jatfha5h4nkg77c3wfrvd3cw"],"isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.client_id","typeLabel":"string"},"total_credits":{"type":"integer","description":"El saldo del cliente; `0` si nunca tuvo créditos.","isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.total_credits","typeLabel":"integer"},"grants":{"type":"array","description":"Los lotes que se pueden usar (sin anular, con créditos y sin vencer), del que vence primero al último. Como mucho 100.","items":{"type":"object","required":["credit_grant_id","kind","credits_remaining","expires_at","course_ids"],"properties":{"credit_grant_id":{"type":"string","description":"Id de un lote de créditos (un pack, una oferta o el período de una membresía).","pattern":"^cgr_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["cgr_01jdwsxvjgc7y12y0h12f43149"],"isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].credit_grant_id","typeLabel":"string"},"kind":{"oneOf":[{"type":"string","description":"`pack`, `intro_offer` o `membership_period`. La lista puede crecer.","enum":["pack","intro_offer","membership_period",null],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].kind.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"`pack`, `intro_offer` o `membership_period`. La lista puede crecer.","enum":["pack","intro_offer","membership_period",null],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].kind.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].kind","typeLabel":"enum\u003cstring> | null"},"credits_remaining":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].credits_remaining","typeLabel":"integer"},"expires_at":{"oneOf":[{"type":"string","description":"Cuándo vencen; `null` si no vencen.","format":"date-time","example":"2026-12-02T19:00:00-03:00","isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].expires_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Cuándo vencen; `null` si no vencen.","isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].expires_at","typeLabel":"string\u003cdate-time> | null"},"course_ids":{"oneOf":[{"description":"Las disciplinas en las que sirven; `null` si sirven en todas.","type":"array","items":{"type":"string","description":"Id de una disciplina.","pattern":"^crs_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["crs_01jff81dk7rxtacmye5nanfp0h"],"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].course_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].course_ids.oneOf.0","typeLabel":"string[]"},{"description":"Las disciplinas en las que sirven; `null` si sirven en todas.","type":"null","items":{"type":"string","description":"Id de una disciplina.","pattern":"^crs_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["crs_01jff81dk7rxtacmye5nanfp0h"]},"isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].course_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX].course_ids","typeLabel":"string[] | null"}},"uniqueKey":"oneOf.1.result.credit_balance.grants.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants","typeLabel":"object[]"},"grants_has_more":{"type":"boolean","description":"`true` si el cliente tiene más de 100 lotes vivos; la lista completa está en `GET /v1/credit_grants?client_id=…\u0026status=active`.","isRequired":true,"uniqueKey":"oneOf.1.result.credit_balance.grants_has_more","typeLabel":"boolean"}},"uniqueKey":"oneOf.1.result.credit_balance","typeLabel":"object"}},"isRequired":true,"uniqueKey":"oneOf.1.result","typeLabel":"object"},"effects":{"type":"object","description":"Lo que la reactivación haría.","required":["client_reactivated","notifies_client"],"properties":{"client_reactivated":{"type":"boolean","description":"`true` si el cliente pasaría de dado de baja a activo.","isRequired":true,"uniqueKey":"oneOf.1.effects.client_reactivated","typeLabel":"boolean"},"notifies_client":{"type":"boolean","description":"Siempre `false`: reactivar a un cliente no le avisa nada.","isRequired":true,"uniqueKey":"oneOf.1.effects.notifies_client","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"oneOf.1.effects","typeLabel":"object"},"warnings":{"type":"array","description":"`no_change` (el cliente ya está activo: el pedido real no cambia nada). La lista puede crecer.","items":{"type":"string","enum":["no_change"],"x-extensible-enum":true,"uniqueKey":"oneOf.1.warnings.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"oneOf.1.warnings","typeLabel":"enum\u003cstring>[]"},"summary":{"type":"string","description":"Lo mismo en una frase en español, para mostrarle a una persona. No nombra al cliente.","isRequired":true,"uniqueKey":"oneOf.1.summary","typeLabel":"string"}},"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"example":{"id":"cli_01je0mdfx4f3gr5peqyzsj0v2g","object":"client","livemode":true,"first_name":"Camila","last_name":"Núñez","status":"active","home_center_id":"ctr_01j16rq65fme4r990anbaxvxfq","created_at":"2026-11-26T12:05:00-03:00","updated_at":"2026-12-02T11:30:15-03:00","email":"camila.nunez@example.com","phone":null,"metadata":{}},"examples":{"Example":{"title":"Example","value":{"id":"cli_01je0mdfx4f3gr5peqyzsj0v2g","object":"client","livemode":true,"first_name":"Camila","last_name":"Núñez","status":"active","home_center_id":"ctr_01j16rq65fme4r990anbaxvxfq","created_at":"2026-11-26T12:05:00-03:00","updated_at":"2026-12-02T11:30:15-03:00","email":"camila.nunez@example.com","phone":null,"metadata":{}}}},"exampleType":"examples"}},"exampleType":"examples"},"5cc8c50f-33c3-4635-ab23-75cc1ac45a29":{"description":"El pedido está mal formado. Códigos posibles: `invalid_api_version`, `idempotency_key_required`,\n`validation_failed` (con un elemento de `errors` por parámetro: `unknown_parameter`,\n`invalid_prefix`, `invalid_id`, `invalid_date`, `invalid_boolean`, `invalid_enum`,\n`invalid_limit`, `duplicate_parameter`, `expand_not_supported`…) e `invalid_cursor` (un\n`starting_after` de otra búsqueda: repite la primera página con los mismos filtros). En las URLs de\navisos, `webhook_url_invalid` (en `errors`, la causa: `not_https`, `port_not_allowed`,\n`credentials_in_url`, `ip_literal`, `internal_hostname`, `private_address`, `craqui_host` o `too_long`).\nAl cancelar una sesión, `notify_not_supported` (esa escritura no lleva `notify`: siempre avisa); también al\nrevocar un pack y al congelar o descongelar una membresía (no le avisan nada al cliente). En las escrituras de\nplata, `fee_decision_required` y `current_fee_choice_required` (la API no decide sobre plata por ti).\nUn token en la URL o en un cuerpo de formulario responde `invalid_request`: va solo en el header\n`Authorization`. El detalle de un error nunca repite el valor que mandaste.\n","headers":{"Request-Id":{"description":"Identificador del pedido. Aparece también en el cuerpo de los errores.","schema":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"Un error. Programa contra `code`, que no cambia; `title` y `detail` son para mostrarle a una\npersona y pueden cambiar de redacción.\n","required":["type","title","status","code","request_id"],"properties":{"type":{"type":"string","format":"uri","description":"URL de la página de la documentación de este error.","examples":["https://docs.craqui.com/errors/invalid_api_key"],"isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Resumen corto, en español.","examples":["La clave no es válida"],"isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"El mismo código HTTP de la respuesta.","examples":[401],"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Código estable del error. La lista puede crecer: trata un `code` que no conoces como un\nerror genérico de su `status`.\n","examples":["invalid_api_key"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$","description":"Identificador del pedido. Búscalo en Configuración → Integraciones → Actividad de la API.","examples":["req_01hzx8m4k2a7d9q3f5w6y8z0bc"],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"Qué pasó y qué hacer, en español.","examples":["Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_)."],"uniqueKey":"detail","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","description":"Igual a `type`, por compatibilidad con clientes que buscan este campo.","uniqueKey":"doc_url","typeLabel":"string\u003curi>"},"required_scope":{"type":"string","description":"Solo en `scope_required` y `event_type_not_permitted`. El permiso que le falta a la clave.","examples":["business:read"],"uniqueKey":"required_scope","typeLabel":"string"},"errors":{"type":"array","description":"Solo en errores de validación. Un elemento por campo con problemas.","items":{"type":"object","required":["field","code"],"properties":{"field":{"type":"string","description":"El campo, como lo mandaste (por ejemplo `limit`).","examples":["limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Qué tiene mal el campo.","examples":["invalid_limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Explicación en español.","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"current_price":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"current_price.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"current_price.currency","typeLabel":"string"}},"description":"Solo en `price_changed`. El precio de hoy, en centésimos y con su moneda.","uniqueKey":"current_price","typeLabel":"object"},"expected_amount":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"expected_amount.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"expected_amount.currency","typeLabel":"string"}},"description":"Solo en `amount_mismatch`. El saldo de hoy de la cuota, en centésimos y con su moneda.","uniqueKey":"expected_amount","typeLabel":"object"},"amount_at_stake":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"amount_at_stake.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"amount_at_stake.currency","typeLabel":"string"}},"description":"Solo en `advance_payment_choice_required`. Lo que falta cobrar del pago por adelantado.","uniqueKey":"amount_at_stake","typeLabel":"object"},"existing_membership_id":{"type":"string","description":"Solo en `active_membership_exists`, `membership_suspended`, `membership_paused` y `membership_scheduled` al\nasignar una membresía: la que el cliente ya tiene.\n","pattern":"^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mem_01j1q27t44qvr6v2s50cv4rbvq"],"uniqueKey":"existing_membership_id","typeLabel":"string"},"booking_ids":{"type":"array","description":"Solo en `bookings_in_freeze_window` y `bookings_changed`. Las reservas en esas fechas.","items":{"type":"string","description":"Id de una reserva.","pattern":"^bkg_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["bkg_01jx9eak0437zdf0yw0atg7g0r"],"uniqueKey":"booking_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"booking_ids","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.craqui.com/errors/invalid_api_key","title":"La clave no es válida","status":401,"code":"invalid_api_key","request_id":"req_01hzx8m4k2a7d9q3f5w6y8z0bc","detail":"Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_).","doc_url":"\u003cstring>","required_scope":"business:read","errors":[{"field":"limit","code":"invalid_limit","detail":"\u003cstring>"}],"current_price":{"amount_cents":250000,"currency":"UYU"},"expected_amount":{"amount_cents":250000,"currency":"UYU"},"amount_at_stake":{"amount_cents":250000,"currency":"UYU"},"existing_membership_id":"mem_01j1q27t44qvr6v2s50cv4rbvq","booking_ids":["bkg_01jx9eak0437zdf0yw0atg7g0r"]}}},"exampleType":"generated"}},"exampleType":"generated"},"3d8fc977-f6cc-479c-8913-2f63d53d05bc":{"description":"Falta la clave o no sirve. Códigos posibles: `missing_api_key`, `invalid_api_key`,\n`revoked_api_key`, `expired_api_key`, `legacy_api_key`. Con el token de una app: `invalid_access_token` (no\nes válido o venció: pide otro con el refresh token) y `app_connection_revoked` (el propietario desconectó la\napp); los dos llevan el header `WWW-Authenticate: Bearer error=\"invalid_token\"`.\n","headers":{"Request-Id":{"description":"Identificador del pedido. Aparece también en el cuerpo de los errores.","schema":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"Un error. Programa contra `code`, que no cambia; `title` y `detail` son para mostrarle a una\npersona y pueden cambiar de redacción.\n","required":["type","title","status","code","request_id"],"properties":{"type":{"type":"string","format":"uri","description":"URL de la página de la documentación de este error.","examples":["https://docs.craqui.com/errors/invalid_api_key"],"isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Resumen corto, en español.","examples":["La clave no es válida"],"isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"El mismo código HTTP de la respuesta.","examples":[401],"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Código estable del error. La lista puede crecer: trata un `code` que no conoces como un\nerror genérico de su `status`.\n","examples":["invalid_api_key"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$","description":"Identificador del pedido. Búscalo en Configuración → Integraciones → Actividad de la API.","examples":["req_01hzx8m4k2a7d9q3f5w6y8z0bc"],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"Qué pasó y qué hacer, en español.","examples":["Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_)."],"uniqueKey":"detail","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","description":"Igual a `type`, por compatibilidad con clientes que buscan este campo.","uniqueKey":"doc_url","typeLabel":"string\u003curi>"},"required_scope":{"type":"string","description":"Solo en `scope_required` y `event_type_not_permitted`. El permiso que le falta a la clave.","examples":["business:read"],"uniqueKey":"required_scope","typeLabel":"string"},"errors":{"type":"array","description":"Solo en errores de validación. Un elemento por campo con problemas.","items":{"type":"object","required":["field","code"],"properties":{"field":{"type":"string","description":"El campo, como lo mandaste (por ejemplo `limit`).","examples":["limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Qué tiene mal el campo.","examples":["invalid_limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Explicación en español.","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"current_price":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"current_price.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"current_price.currency","typeLabel":"string"}},"description":"Solo en `price_changed`. El precio de hoy, en centésimos y con su moneda.","uniqueKey":"current_price","typeLabel":"object"},"expected_amount":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"expected_amount.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"expected_amount.currency","typeLabel":"string"}},"description":"Solo en `amount_mismatch`. El saldo de hoy de la cuota, en centésimos y con su moneda.","uniqueKey":"expected_amount","typeLabel":"object"},"amount_at_stake":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"amount_at_stake.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"amount_at_stake.currency","typeLabel":"string"}},"description":"Solo en `advance_payment_choice_required`. Lo que falta cobrar del pago por adelantado.","uniqueKey":"amount_at_stake","typeLabel":"object"},"existing_membership_id":{"type":"string","description":"Solo en `active_membership_exists`, `membership_suspended`, `membership_paused` y `membership_scheduled` al\nasignar una membresía: la que el cliente ya tiene.\n","pattern":"^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mem_01j1q27t44qvr6v2s50cv4rbvq"],"uniqueKey":"existing_membership_id","typeLabel":"string"},"booking_ids":{"type":"array","description":"Solo en `bookings_in_freeze_window` y `bookings_changed`. Las reservas en esas fechas.","items":{"type":"string","description":"Id de una reserva.","pattern":"^bkg_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["bkg_01jx9eak0437zdf0yw0atg7g0r"],"uniqueKey":"booking_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"booking_ids","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"revoked":{"title":"revoked","value":{"type":"https://docs.craqui.com/errors/revoked_api_key","title":"La clave fue revocada","status":401,"code":"revoked_api_key","detail":"Crea una clave nueva en Configuración → Integraciones.","request_id":"req_01hzx8m4k2a7d9q3f5w6y8z0bc"}}},"exampleType":"examples"}},"exampleType":"examples"},"b3c3f125-4c59-4a4b-944a-bb0c7fee14d0":{"description":"La clave es válida pero no puede hacer esto. Códigos posibles: `scope_required`,\n`plan_required`, `api_key_suspended`, `browser_not_allowed`, `wrong_vertical`,\n`event_type_not_permitted` (eventos de un recurso que la clave no puede leer; `required_scope` dice cuál) y\n`write_access_disabled` (en una ruta que crea o cambia datos, si tu negocio no tiene habilitada la escritura por\nla API) y `money_writes_not_enabled` (en una ruta de packs, membresías o pagos, si tu negocio no tiene\nhabilitadas las escrituras de plata). Con el token de una app, además: `app_suspended` (Craqui suspendió la\napp) y `app_connection_suspended` (quien conectó la app ya no es propietario del negocio).\n","headers":{"Request-Id":{"description":"Identificador del pedido. Aparece también en el cuerpo de los errores.","schema":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"Un error. Programa contra `code`, que no cambia; `title` y `detail` son para mostrarle a una\npersona y pueden cambiar de redacción.\n","required":["type","title","status","code","request_id"],"properties":{"type":{"type":"string","format":"uri","description":"URL de la página de la documentación de este error.","examples":["https://docs.craqui.com/errors/invalid_api_key"],"isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Resumen corto, en español.","examples":["La clave no es válida"],"isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"El mismo código HTTP de la respuesta.","examples":[401],"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Código estable del error. La lista puede crecer: trata un `code` que no conoces como un\nerror genérico de su `status`.\n","examples":["invalid_api_key"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$","description":"Identificador del pedido. Búscalo en Configuración → Integraciones → Actividad de la API.","examples":["req_01hzx8m4k2a7d9q3f5w6y8z0bc"],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"Qué pasó y qué hacer, en español.","examples":["Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_)."],"uniqueKey":"detail","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","description":"Igual a `type`, por compatibilidad con clientes que buscan este campo.","uniqueKey":"doc_url","typeLabel":"string\u003curi>"},"required_scope":{"type":"string","description":"Solo en `scope_required` y `event_type_not_permitted`. El permiso que le falta a la clave.","examples":["business:read"],"uniqueKey":"required_scope","typeLabel":"string"},"errors":{"type":"array","description":"Solo en errores de validación. Un elemento por campo con problemas.","items":{"type":"object","required":["field","code"],"properties":{"field":{"type":"string","description":"El campo, como lo mandaste (por ejemplo `limit`).","examples":["limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Qué tiene mal el campo.","examples":["invalid_limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Explicación en español.","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"current_price":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"current_price.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"current_price.currency","typeLabel":"string"}},"description":"Solo en `price_changed`. El precio de hoy, en centésimos y con su moneda.","uniqueKey":"current_price","typeLabel":"object"},"expected_amount":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"expected_amount.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"expected_amount.currency","typeLabel":"string"}},"description":"Solo en `amount_mismatch`. El saldo de hoy de la cuota, en centésimos y con su moneda.","uniqueKey":"expected_amount","typeLabel":"object"},"amount_at_stake":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"amount_at_stake.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"amount_at_stake.currency","typeLabel":"string"}},"description":"Solo en `advance_payment_choice_required`. Lo que falta cobrar del pago por adelantado.","uniqueKey":"amount_at_stake","typeLabel":"object"},"existing_membership_id":{"type":"string","description":"Solo en `active_membership_exists`, `membership_suspended`, `membership_paused` y `membership_scheduled` al\nasignar una membresía: la que el cliente ya tiene.\n","pattern":"^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mem_01j1q27t44qvr6v2s50cv4rbvq"],"uniqueKey":"existing_membership_id","typeLabel":"string"},"booking_ids":{"type":"array","description":"Solo en `bookings_in_freeze_window` y `bookings_changed`. Las reservas en esas fechas.","items":{"type":"string","description":"Id de una reserva.","pattern":"^bkg_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["bkg_01jx9eak0437zdf0yw0atg7g0r"],"uniqueKey":"booking_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"booking_ids","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.craqui.com/errors/invalid_api_key","title":"La clave no es válida","status":401,"code":"invalid_api_key","request_id":"req_01hzx8m4k2a7d9q3f5w6y8z0bc","detail":"Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_).","doc_url":"\u003cstring>","required_scope":"business:read","errors":[{"field":"limit","code":"invalid_limit","detail":"\u003cstring>"}],"current_price":{"amount_cents":250000,"currency":"UYU"},"expected_amount":{"amount_cents":250000,"currency":"UYU"},"amount_at_stake":{"amount_cents":250000,"currency":"UYU"},"existing_membership_id":"mem_01j1q27t44qvr6v2s50cv4rbvq","booking_ids":["bkg_01jx9eak0437zdf0yw0atg7g0r"]}}},"exampleType":"generated"}},"exampleType":"generated"},"d46227c7-e9d8-4434-848a-bdae27544265":{"description":"No existe, o no es de tu negocio. Código `not_found` o `route_not_found`.","headers":{"Request-Id":{"description":"Identificador del pedido. Aparece también en el cuerpo de los errores.","schema":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"Un error. Programa contra `code`, que no cambia; `title` y `detail` son para mostrarle a una\npersona y pueden cambiar de redacción.\n","required":["type","title","status","code","request_id"],"properties":{"type":{"type":"string","format":"uri","description":"URL de la página de la documentación de este error.","examples":["https://docs.craqui.com/errors/invalid_api_key"],"isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Resumen corto, en español.","examples":["La clave no es válida"],"isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"El mismo código HTTP de la respuesta.","examples":[401],"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Código estable del error. La lista puede crecer: trata un `code` que no conoces como un\nerror genérico de su `status`.\n","examples":["invalid_api_key"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$","description":"Identificador del pedido. Búscalo en Configuración → Integraciones → Actividad de la API.","examples":["req_01hzx8m4k2a7d9q3f5w6y8z0bc"],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"Qué pasó y qué hacer, en español.","examples":["Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_)."],"uniqueKey":"detail","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","description":"Igual a `type`, por compatibilidad con clientes que buscan este campo.","uniqueKey":"doc_url","typeLabel":"string\u003curi>"},"required_scope":{"type":"string","description":"Solo en `scope_required` y `event_type_not_permitted`. El permiso que le falta a la clave.","examples":["business:read"],"uniqueKey":"required_scope","typeLabel":"string"},"errors":{"type":"array","description":"Solo en errores de validación. Un elemento por campo con problemas.","items":{"type":"object","required":["field","code"],"properties":{"field":{"type":"string","description":"El campo, como lo mandaste (por ejemplo `limit`).","examples":["limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Qué tiene mal el campo.","examples":["invalid_limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Explicación en español.","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"current_price":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"current_price.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"current_price.currency","typeLabel":"string"}},"description":"Solo en `price_changed`. El precio de hoy, en centésimos y con su moneda.","uniqueKey":"current_price","typeLabel":"object"},"expected_amount":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"expected_amount.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"expected_amount.currency","typeLabel":"string"}},"description":"Solo en `amount_mismatch`. El saldo de hoy de la cuota, en centésimos y con su moneda.","uniqueKey":"expected_amount","typeLabel":"object"},"amount_at_stake":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"amount_at_stake.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"amount_at_stake.currency","typeLabel":"string"}},"description":"Solo en `advance_payment_choice_required`. Lo que falta cobrar del pago por adelantado.","uniqueKey":"amount_at_stake","typeLabel":"object"},"existing_membership_id":{"type":"string","description":"Solo en `active_membership_exists`, `membership_suspended`, `membership_paused` y `membership_scheduled` al\nasignar una membresía: la que el cliente ya tiene.\n","pattern":"^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mem_01j1q27t44qvr6v2s50cv4rbvq"],"uniqueKey":"existing_membership_id","typeLabel":"string"},"booking_ids":{"type":"array","description":"Solo en `bookings_in_freeze_window` y `bookings_changed`. Las reservas en esas fechas.","items":{"type":"string","description":"Id de una reserva.","pattern":"^bkg_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["bkg_01jx9eak0437zdf0yw0atg7g0r"],"uniqueKey":"booking_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"booking_ids","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.craqui.com/errors/invalid_api_key","title":"La clave no es válida","status":401,"code":"invalid_api_key","request_id":"req_01hzx8m4k2a7d9q3f5w6y8z0bc","detail":"Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_).","doc_url":"\u003cstring>","required_scope":"business:read","errors":[{"field":"limit","code":"invalid_limit","detail":"\u003cstring>"}],"current_price":{"amount_cents":250000,"currency":"UYU"},"expected_amount":{"amount_cents":250000,"currency":"UYU"},"amount_at_stake":{"amount_cents":250000,"currency":"UYU"},"existing_membership_id":"mem_01j1q27t44qvr6v2s50cv4rbvq","booking_ids":["bkg_01jx9eak0437zdf0yw0atg7g0r"]}}},"exampleType":"generated"}},"exampleType":"generated"},"40583f8f-80db-43f9-a097-6b642a5f5fc6":{"description":"Solo con una clave `crq_test_`: tu estudio de prueba no está listo. Código\n`sandbox_unavailable`. Restablece tus datos de prueba en Configuración → Integraciones y vuelve\na intentar. Una clave de prueba nunca responde con los datos reales del negocio. En los pedidos que\ncrean o modifican algo, también `idempotency_in_progress` (el mismo pedido todavía se está procesando) y,\nal crear una URL de avisos, `webhook_endpoint_limit_reached` (ya hay 10). En una ruta que crea o cambia datos\ndel estudio, además, sus reglas no dejan hacerlo: la descripción de cada ruta lista sus códigos.\n","headers":{"Request-Id":{"description":"Identificador del pedido. Aparece también en el cuerpo de los errores.","schema":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"Un error. Programa contra `code`, que no cambia; `title` y `detail` son para mostrarle a una\npersona y pueden cambiar de redacción.\n","required":["type","title","status","code","request_id"],"properties":{"type":{"type":"string","format":"uri","description":"URL de la página de la documentación de este error.","examples":["https://docs.craqui.com/errors/invalid_api_key"],"isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Resumen corto, en español.","examples":["La clave no es válida"],"isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"El mismo código HTTP de la respuesta.","examples":[401],"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Código estable del error. La lista puede crecer: trata un `code` que no conoces como un\nerror genérico de su `status`.\n","examples":["invalid_api_key"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$","description":"Identificador del pedido. Búscalo en Configuración → Integraciones → Actividad de la API.","examples":["req_01hzx8m4k2a7d9q3f5w6y8z0bc"],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"Qué pasó y qué hacer, en español.","examples":["Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_)."],"uniqueKey":"detail","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","description":"Igual a `type`, por compatibilidad con clientes que buscan este campo.","uniqueKey":"doc_url","typeLabel":"string\u003curi>"},"required_scope":{"type":"string","description":"Solo en `scope_required` y `event_type_not_permitted`. El permiso que le falta a la clave.","examples":["business:read"],"uniqueKey":"required_scope","typeLabel":"string"},"errors":{"type":"array","description":"Solo en errores de validación. Un elemento por campo con problemas.","items":{"type":"object","required":["field","code"],"properties":{"field":{"type":"string","description":"El campo, como lo mandaste (por ejemplo `limit`).","examples":["limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Qué tiene mal el campo.","examples":["invalid_limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Explicación en español.","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"current_price":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"current_price.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"current_price.currency","typeLabel":"string"}},"description":"Solo en `price_changed`. El precio de hoy, en centésimos y con su moneda.","uniqueKey":"current_price","typeLabel":"object"},"expected_amount":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"expected_amount.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"expected_amount.currency","typeLabel":"string"}},"description":"Solo en `amount_mismatch`. El saldo de hoy de la cuota, en centésimos y con su moneda.","uniqueKey":"expected_amount","typeLabel":"object"},"amount_at_stake":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"amount_at_stake.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"amount_at_stake.currency","typeLabel":"string"}},"description":"Solo en `advance_payment_choice_required`. Lo que falta cobrar del pago por adelantado.","uniqueKey":"amount_at_stake","typeLabel":"object"},"existing_membership_id":{"type":"string","description":"Solo en `active_membership_exists`, `membership_suspended`, `membership_paused` y `membership_scheduled` al\nasignar una membresía: la que el cliente ya tiene.\n","pattern":"^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mem_01j1q27t44qvr6v2s50cv4rbvq"],"uniqueKey":"existing_membership_id","typeLabel":"string"},"booking_ids":{"type":"array","description":"Solo en `bookings_in_freeze_window` y `bookings_changed`. Las reservas en esas fechas.","items":{"type":"string","description":"Id de una reserva.","pattern":"^bkg_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["bkg_01jx9eak0437zdf0yw0atg7g0r"],"uniqueKey":"booking_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"booking_ids","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sandbox_unavailable":{"title":"sandbox_unavailable","value":{"type":"https://docs.craqui.com/errors/sandbox_unavailable","title":"Tu estudio de prueba no está listo","status":409,"code":"sandbox_unavailable","detail":"Restablece tus datos de prueba en Configuración → Integraciones y vuelve a intentar.","request_id":"req_01hzx8m4k2a7d9q3f5w6y8z0bc"}}},"exampleType":"examples"}},"exampleType":"examples"},"b66a27a5-5f80-4a4e-89f1-839c3e691076":{"description":"El pedido se entendió pero no se puede aplicar así. Códigos posibles: `idempotency_key_reused` (esa\n`Idempotency-Key` ya se usó con otro pedido: genera una nueva), `sandbox_contact_not_allowed` y\n`sandbox_account_reserved` (en tu estudio de prueba, un contacto que no es ficticio). En las escrituras de\nplata, además: `currency_mismatch`, `fee_decision_mismatch`, `fee_action_not_available`,\n`start_option_not_applicable` y `paid_on_out_of_range`.\n","headers":{"Request-Id":{"description":"Identificador del pedido. Aparece también en el cuerpo de los errores.","schema":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"Un error. Programa contra `code`, que no cambia; `title` y `detail` son para mostrarle a una\npersona y pueden cambiar de redacción.\n","required":["type","title","status","code","request_id"],"properties":{"type":{"type":"string","format":"uri","description":"URL de la página de la documentación de este error.","examples":["https://docs.craqui.com/errors/invalid_api_key"],"isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Resumen corto, en español.","examples":["La clave no es válida"],"isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"El mismo código HTTP de la respuesta.","examples":[401],"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Código estable del error. La lista puede crecer: trata un `code` que no conoces como un\nerror genérico de su `status`.\n","examples":["invalid_api_key"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$","description":"Identificador del pedido. Búscalo en Configuración → Integraciones → Actividad de la API.","examples":["req_01hzx8m4k2a7d9q3f5w6y8z0bc"],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"Qué pasó y qué hacer, en español.","examples":["Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_)."],"uniqueKey":"detail","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","description":"Igual a `type`, por compatibilidad con clientes que buscan este campo.","uniqueKey":"doc_url","typeLabel":"string\u003curi>"},"required_scope":{"type":"string","description":"Solo en `scope_required` y `event_type_not_permitted`. El permiso que le falta a la clave.","examples":["business:read"],"uniqueKey":"required_scope","typeLabel":"string"},"errors":{"type":"array","description":"Solo en errores de validación. Un elemento por campo con problemas.","items":{"type":"object","required":["field","code"],"properties":{"field":{"type":"string","description":"El campo, como lo mandaste (por ejemplo `limit`).","examples":["limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Qué tiene mal el campo.","examples":["invalid_limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Explicación en español.","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"current_price":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"current_price.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"current_price.currency","typeLabel":"string"}},"description":"Solo en `price_changed`. El precio de hoy, en centésimos y con su moneda.","uniqueKey":"current_price","typeLabel":"object"},"expected_amount":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"expected_amount.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"expected_amount.currency","typeLabel":"string"}},"description":"Solo en `amount_mismatch`. El saldo de hoy de la cuota, en centésimos y con su moneda.","uniqueKey":"expected_amount","typeLabel":"object"},"amount_at_stake":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"amount_at_stake.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"amount_at_stake.currency","typeLabel":"string"}},"description":"Solo en `advance_payment_choice_required`. Lo que falta cobrar del pago por adelantado.","uniqueKey":"amount_at_stake","typeLabel":"object"},"existing_membership_id":{"type":"string","description":"Solo en `active_membership_exists`, `membership_suspended`, `membership_paused` y `membership_scheduled` al\nasignar una membresía: la que el cliente ya tiene.\n","pattern":"^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mem_01j1q27t44qvr6v2s50cv4rbvq"],"uniqueKey":"existing_membership_id","typeLabel":"string"},"booking_ids":{"type":"array","description":"Solo en `bookings_in_freeze_window` y `bookings_changed`. Las reservas en esas fechas.","items":{"type":"string","description":"Id de una reserva.","pattern":"^bkg_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["bkg_01jx9eak0437zdf0yw0atg7g0r"],"uniqueKey":"booking_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"booking_ids","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.craqui.com/errors/invalid_api_key","title":"La clave no es válida","status":401,"code":"invalid_api_key","request_id":"req_01hzx8m4k2a7d9q3f5w6y8z0bc","detail":"Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_).","doc_url":"\u003cstring>","required_scope":"business:read","errors":[{"field":"limit","code":"invalid_limit","detail":"\u003cstring>"}],"current_price":{"amount_cents":250000,"currency":"UYU"},"expected_amount":{"amount_cents":250000,"currency":"UYU"},"amount_at_stake":{"amount_cents":250000,"currency":"UYU"},"existing_membership_id":"mem_01j1q27t44qvr6v2s50cv4rbvq","booking_ids":["bkg_01jx9eak0437zdf0yw0atg7g0r"]}}},"exampleType":"generated"}},"exampleType":"generated"},"d7b639e2-9921-4f20-a367-5c8c69e921f6":{"description":"Se pasó el límite de pedidos por minuto de la clave. Código `rate_limited`.","headers":{"Request-Id":{"description":"Identificador del pedido. Aparece también en el cuerpo de los errores.","schema":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$"}},"Retry-After":{"description":"Segundos que hay que esperar antes de reintentar.","schema":{"type":"integer","minimum":0}},"RateLimit":{"description":"Pedidos que quedan en la ventana actual y segundos hasta que se renueva (draft IETF httpapi-ratelimit-headers).","schema":{"type":"string","examples":["\"read\";r=97;t=42"]}},"RateLimit-Policy":{"description":"Límite de la clave por ventana (draft IETF httpapi-ratelimit-headers).","schema":{"type":"string","examples":["\"read\";q=100;w=60"]}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"Un error. Programa contra `code`, que no cambia; `title` y `detail` son para mostrarle a una\npersona y pueden cambiar de redacción.\n","required":["type","title","status","code","request_id"],"properties":{"type":{"type":"string","format":"uri","description":"URL de la página de la documentación de este error.","examples":["https://docs.craqui.com/errors/invalid_api_key"],"isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Resumen corto, en español.","examples":["La clave no es válida"],"isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"El mismo código HTTP de la respuesta.","examples":[401],"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Código estable del error. La lista puede crecer: trata un `code` que no conoces como un\nerror genérico de su `status`.\n","examples":["invalid_api_key"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$","description":"Identificador del pedido. Búscalo en Configuración → Integraciones → Actividad de la API.","examples":["req_01hzx8m4k2a7d9q3f5w6y8z0bc"],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"Qué pasó y qué hacer, en español.","examples":["Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_)."],"uniqueKey":"detail","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","description":"Igual a `type`, por compatibilidad con clientes que buscan este campo.","uniqueKey":"doc_url","typeLabel":"string\u003curi>"},"required_scope":{"type":"string","description":"Solo en `scope_required` y `event_type_not_permitted`. El permiso que le falta a la clave.","examples":["business:read"],"uniqueKey":"required_scope","typeLabel":"string"},"errors":{"type":"array","description":"Solo en errores de validación. Un elemento por campo con problemas.","items":{"type":"object","required":["field","code"],"properties":{"field":{"type":"string","description":"El campo, como lo mandaste (por ejemplo `limit`).","examples":["limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Qué tiene mal el campo.","examples":["invalid_limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Explicación en español.","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"current_price":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"current_price.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"current_price.currency","typeLabel":"string"}},"description":"Solo en `price_changed`. El precio de hoy, en centésimos y con su moneda.","uniqueKey":"current_price","typeLabel":"object"},"expected_amount":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"expected_amount.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"expected_amount.currency","typeLabel":"string"}},"description":"Solo en `amount_mismatch`. El saldo de hoy de la cuota, en centésimos y con su moneda.","uniqueKey":"expected_amount","typeLabel":"object"},"amount_at_stake":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"amount_at_stake.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"amount_at_stake.currency","typeLabel":"string"}},"description":"Solo en `advance_payment_choice_required`. Lo que falta cobrar del pago por adelantado.","uniqueKey":"amount_at_stake","typeLabel":"object"},"existing_membership_id":{"type":"string","description":"Solo en `active_membership_exists`, `membership_suspended`, `membership_paused` y `membership_scheduled` al\nasignar una membresía: la que el cliente ya tiene.\n","pattern":"^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mem_01j1q27t44qvr6v2s50cv4rbvq"],"uniqueKey":"existing_membership_id","typeLabel":"string"},"booking_ids":{"type":"array","description":"Solo en `bookings_in_freeze_window` y `bookings_changed`. Las reservas en esas fechas.","items":{"type":"string","description":"Id de una reserva.","pattern":"^bkg_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["bkg_01jx9eak0437zdf0yw0atg7g0r"],"uniqueKey":"booking_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"booking_ids","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.craqui.com/errors/invalid_api_key","title":"La clave no es válida","status":401,"code":"invalid_api_key","request_id":"req_01hzx8m4k2a7d9q3f5w6y8z0bc","detail":"Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_).","doc_url":"\u003cstring>","required_scope":"business:read","errors":[{"field":"limit","code":"invalid_limit","detail":"\u003cstring>"}],"current_price":{"amount_cents":250000,"currency":"UYU"},"expected_amount":{"amount_cents":250000,"currency":"UYU"},"amount_at_stake":{"amount_cents":250000,"currency":"UYU"},"existing_membership_id":"mem_01j1q27t44qvr6v2s50cv4rbvq","booking_ids":["bkg_01jx9eak0437zdf0yw0atg7g0r"]}}},"exampleType":"generated"}},"exampleType":"generated"},"2c6b5811-d411-42bd-8a74-01e1447b2eac":{"description":"Falló algo de nuestro lado. Código `internal_error`. Reintenta; si sigue, escríbenos con el `request_id`.","headers":{"Request-Id":{"description":"Identificador del pedido. Aparece también en el cuerpo de los errores.","schema":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"Un error. Programa contra `code`, que no cambia; `title` y `detail` son para mostrarle a una\npersona y pueden cambiar de redacción.\n","required":["type","title","status","code","request_id"],"properties":{"type":{"type":"string","format":"uri","description":"URL de la página de la documentación de este error.","examples":["https://docs.craqui.com/errors/invalid_api_key"],"isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Resumen corto, en español.","examples":["La clave no es válida"],"isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"El mismo código HTTP de la respuesta.","examples":[401],"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Código estable del error. La lista puede crecer: trata un `code` que no conoces como un\nerror genérico de su `status`.\n","examples":["invalid_api_key"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","pattern":"^req_[0-9a-hjkmnp-tv-z]{26}$","description":"Identificador del pedido. Búscalo en Configuración → Integraciones → Actividad de la API.","examples":["req_01hzx8m4k2a7d9q3f5w6y8z0bc"],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"Qué pasó y qué hacer, en español.","examples":["Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_)."],"uniqueKey":"detail","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","description":"Igual a `type`, por compatibilidad con clientes que buscan este campo.","uniqueKey":"doc_url","typeLabel":"string\u003curi>"},"required_scope":{"type":"string","description":"Solo en `scope_required` y `event_type_not_permitted`. El permiso que le falta a la clave.","examples":["business:read"],"uniqueKey":"required_scope","typeLabel":"string"},"errors":{"type":"array","description":"Solo en errores de validación. Un elemento por campo con problemas.","items":{"type":"object","required":["field","code"],"properties":{"field":{"type":"string","description":"El campo, como lo mandaste (por ejemplo `limit`).","examples":["limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Qué tiene mal el campo.","examples":["invalid_limit"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"detail":{"type":"string","description":"Explicación en español.","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"current_price":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"current_price.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"current_price.currency","typeLabel":"string"}},"description":"Solo en `price_changed`. El precio de hoy, en centésimos y con su moneda.","uniqueKey":"current_price","typeLabel":"object"},"expected_amount":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"expected_amount.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"expected_amount.currency","typeLabel":"string"}},"description":"Solo en `amount_mismatch`. El saldo de hoy de la cuota, en centésimos y con su moneda.","uniqueKey":"expected_amount","typeLabel":"object"},"amount_at_stake":{"type":"object","required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","description":"El monto multiplicado por 100. `250000` con `UYU` es $ 2.500,00. Un entero: `250000.5` o `\"250000\"` es\n`validation_failed` (`250000.0` es el mismo número que `250000`).\n","examples":[250000],"isRequired":true,"uniqueKey":"amount_at_stake.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"amount_at_stake.currency","typeLabel":"string"}},"description":"Solo en `advance_payment_choice_required`. Lo que falta cobrar del pago por adelantado.","uniqueKey":"amount_at_stake","typeLabel":"object"},"existing_membership_id":{"type":"string","description":"Solo en `active_membership_exists`, `membership_suspended`, `membership_paused` y `membership_scheduled` al\nasignar una membresía: la que el cliente ya tiene.\n","pattern":"^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["mem_01j1q27t44qvr6v2s50cv4rbvq"],"uniqueKey":"existing_membership_id","typeLabel":"string"},"booking_ids":{"type":"array","description":"Solo en `bookings_in_freeze_window` y `bookings_changed`. Las reservas en esas fechas.","items":{"type":"string","description":"Id de una reserva.","pattern":"^bkg_[0-7][0-9a-hjkmnp-tv-z]{25}$","examples":["bkg_01jx9eak0437zdf0yw0atg7g0r"],"uniqueKey":"booking_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"booking_ids","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.craqui.com/errors/invalid_api_key","title":"La clave no es válida","status":401,"code":"invalid_api_key","request_id":"req_01hzx8m4k2a7d9q3f5w6y8z0bc","detail":"Revisa que copiaste la clave completa, incluido el prefijo (crq_live_ o crq_test_).","doc_url":"\u003cstring>","required_scope":"business:read","errors":[{"field":"limit","code":"invalid_limit","detail":"\u003cstring>"}],"current_price":{"amount_cents":250000,"currency":"UYU"},"expected_amount":{"amount_cents":250000,"currency":"UYU"},"amount_at_stake":{"amount_cents":250000,"currency":"UYU"},"existing_membership_id":"mem_01j1q27t44qvr6v2s50cv4rbvq","booking_ids":["bkg_01jx9eak0437zdf0yw0atg7g0r"]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"6677469b-452e-4042-b799-fa556183558a":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"crq_live_sk_… / crq_live_rk_…","description":"Clave del negocio. `sk` es una clave completa (todo lo que el rol de quien la creó puede dar)\ny `rk` una restringida a los permisos que se eligieron al crearla. Solo se usa desde un\nservidor: un pedido desde un navegador se rechaza con `browser_not_allowed`.\n","scopes":[],"schemeName":"bearerAuth"}},"3c975ee9-c1e5-41e9-aff8-435adf0b68d1":{"oauth2":{"type":"oauth2","description":"Una app de terceros conectada a un negocio por su propietario (OAuth 2.1, Authorization Code con PKCE). El\naccess token (`crq_oat_…`) vale 1 hora, va solo en el header `Authorization: Bearer` y es de un solo negocio.\nUna app nunca recibe `notifications:suppress` ni `webhooks:manage`. Ver https://docs.craqui.com/apps.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.craqui.com/oauth/authorize","tokenUrl":"https://api.craqui.com/oauth/token","refreshUrl":"https://api.craqui.com/oauth/token","scopes":{"business:read":"Ver los datos básicos del negocio (siempre incluido).","centers:read":"Ver las sedes.","rooms:read":"Ver los salones.","teachers:read":"Ver a quienes dan clases.","courses:read":"Ver las disciplinas.","classes:read":"Ver las clases y su horario.","sessions:read":"Ver el horario, sesión por sesión.","sessions:write":"Cancelar sesiones.","clients:read":"Ver los clientes.","clients.pii:read":"Ver el email y el teléfono de los clientes.","clients:write":"Crear, cambiar, dar de baja y reactivar clientes.","bookings:read":"Ver las reservas.","bookings:write":"Reservar, cancelar reservas y marcar asistencia.","credits:read":"Ver los créditos de los clientes.","credits:write":"Asignar y revocar packs de créditos.","memberships:read":"Ver las membresías.","memberships:write":"Asignar, cancelar, congelar y descongelar membresías.","fees:read":"Ver las cuotas.","payments:read":"Ver los pagos.","refunds:read":"Ver los reembolsos.","payments:write":"Registrar pagos.","events:read":"Ver la lista de cambios recientes."}}},"scopes":["clients:write"],"schemeName":"oauth2"}}},"servers":{"bb48cfac-2655-4314-90fd-28cc11e87988":{"url":"https://api.craqui.com/v1","description":"Producción"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"crq_live_sk_… / crq_live_rk_…","description":"Clave del negocio. `sk` es una clave completa (todo lo que el rol de quien la creó puede dar)\ny `rk` una restringida a los permisos que se eligieron al crearla. Solo se usa desde un\nservidor: un pedido desde un navegador se rechaza con `browser_not_allowed`.\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Clave del negocio. `sk` es una clave completa (todo lo que el rol de quien la creó puede dar)\ny `rk` una restringida a los permisos que se eligieron al crearla. Solo se usa desde un\nservidor: un pedido desde un navegador se rechaza con `browser_not_allowed`.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"},{"schemes":[{"scheme":{"type":"oauth2","description":"Una app de terceros conectada a un negocio por su propietario (OAuth 2.1, Authorization Code con PKCE). El\naccess token (`crq_oat_…`) vale 1 hora, va solo en el header `Authorization: Bearer` y es de un solo negocio.\nUna app nunca recibe `notifications:suppress` ni `webhooks:manage`. Ver https://docs.craqui.com/apps.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.craqui.com/oauth/authorize","tokenUrl":"https://api.craqui.com/oauth/token","refreshUrl":"https://api.craqui.com/oauth/token","scopes":{"business:read":"Ver los datos básicos del negocio (siempre incluido).","centers:read":"Ver las sedes.","rooms:read":"Ver los salones.","teachers:read":"Ver a quienes dan clases.","courses:read":"Ver las disciplinas.","classes:read":"Ver las clases y su horario.","sessions:read":"Ver el horario, sesión por sesión.","sessions:write":"Cancelar sesiones.","clients:read":"Ver los clientes.","clients.pii:read":"Ver el email y el teléfono de los clientes.","clients:write":"Crear, cambiar, dar de baja y reactivar clientes.","bookings:read":"Ver las reservas.","bookings:write":"Reservar, cancelar reservas y marcar asistencia.","credits:read":"Ver los créditos de los clientes.","credits:write":"Asignar y revocar packs de créditos.","memberships:read":"Ver las membresías.","memberships:write":"Asignar, cancelar, congelar y descongelar membresías.","fees:read":"Ver las cuotas.","payments:read":"Ver los pagos.","refunds:read":"Ver los reembolsos.","payments:write":"Registrar pagos.","events:read":"Ver la lista de cambios recientes."}}},"scopes":["clients:write"],"schemeName":"oauth2"},"schema":{"title":"OAuth2 Auth","type":"string","isRequired":true,"description":"Una app de terceros conectada a un negocio por su propietario (OAuth 2.1, Authorization Code con PKCE). El\naccess token (`crq_oat_…`) vale 1 hora, va solo en el header `Authorization: Bearer` y es de un solo negocio.\nUna app nunca recibe `notifications:suppress` ni `webhooks:manage`. Ver https://docs.craqui.com/apps.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"oauth2","name":"Authorization"}],"title":"oauth2"}]},"originalFileLocation":"estudios/openapi.yaml"},"subdomain":"craqui","siteName":"API de Craqui","title":"Reactivar a un cliente - API de Craqui","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T20:37:26.507Z","originalFileLocation":"estudios/api-reference/clients/reactivar-a-un-cliente.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Vuelve a activo a un cliente dado de baja, igual que \u0026quot;Reactivar\u0026quot; en su ficha de Craqui: puede volver a reservar, con sus datos como estaban. No le devuelve packs, membresías ni reservas que se cancelaron en la baja, y no le avisa nada. Responde el cliente como queda, con su ETag. Si el cliente ya está activo, responde 200 con el cliente y no cambia nada. Con dry_run=true responde 200 con la vista previa. Rechazos (409): plan_client_limit_reached (el plan del estudio no admite más clientes). Un cliente que no es de tu negocio responde 404 not_found. Una escritura: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia responde wrong_vertical), y solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled si no). Un campo que el cuerpo no declara responde validation_failed con unknown_field. Cuenta para el límite de escrituras (30 por minuto).\">\u003cmeta data-mint-head name=\"application-name\" content=\"API de Craqui\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/craqui/ptsKlgDyHJpLj3bc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/craqui/ptsKlgDyHJpLj3bc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/craqui/ptsKlgDyHJpLj3bc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/craqui/ptsKlgDyHJpLj3bc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/craqui/ptsKlgDyHJpLj3bc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/craqui/ptsKlgDyHJpLj3bc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/craqui/ptsKlgDyHJpLj3bc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/craqui/ptsKlgDyHJpLj3bc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/craqui/ptsKlgDyHJpLj3bc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Reactivar a un cliente - API de Craqui\">\u003cmeta data-mint-head property=\"og:description\" content=\"Vuelve a activo a un cliente dado de baja, igual que \u0026quot;Reactivar\u0026quot; en su ficha de Craqui: puede volver a reservar, con sus datos como estaban. No le devuelve packs, membresías ni reservas que se cancelaron en la baja, y no le avisa nada. Responde el cliente como queda, con su ETag. Si el cliente ya está activo, responde 200 con el cliente y no cambia nada. Con dry_run=true responde 200 con la vista previa. Rechazos (409): plan_client_limit_reached (el plan del estudio no admite más clientes). Un cliente que no es de tu negocio responde 404 not_found. Una escritura: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia responde wrong_vertical), y solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled si no). Un campo que el cuerpo no declara responde validation_failed con unknown_field. Cuenta para el límite de escrituras (30 por minuto).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"API de Craqui\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.craqui.com/estudios/api-reference/clients/reactivar-a-un-cliente\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://craqui.mintlify.site/_mintlify/api/og/v2?division=clients\u0026amp;title=Reactivar+a+un+cliente\u0026amp;description=Vuelve+a+activo+a+un+cliente+dado+de+baja%2C+igual+que+%22Reactivar%22+en+su+ficha+de+Craqui%3A+puede+volver+a%0Areservar%2C+con+sus+datos+como+estaban.+No+le+devuelve+pack\u0026amp;theme=176da6da42441ffcb9f627fc\u0026amp;signature=7f70f6c95476204b6377e63b037954e88cc0743686b01f615ac330dffe484570\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Reactivar a un cliente - API de Craqui\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Vuelve a activo a un cliente dado de baja, igual que \u0026quot;Reactivar\u0026quot; en su ficha de Craqui: puede volver a reservar, con sus datos como estaban. No le devuelve packs, membresías ni reservas que se cancelaron en la baja, y no le avisa nada. Responde el cliente como queda, con su ETag. Si el cliente ya está activo, responde 200 con el cliente y no cambia nada. Con dry_run=true responde 200 con la vista previa. Rechazos (409): plan_client_limit_reached (el plan del estudio no admite más clientes). Un cliente que no es de tu negocio responde 404 not_found. Una escritura: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia responde wrong_vertical), y solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled si no). Un campo que el cuerpo no declara responde validation_failed con unknown_field. Cuenta para el límite de escrituras (30 por minuto).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://craqui.mintlify.site/_mintlify/api/og/v2?division=clients\u0026amp;title=Reactivar+a+un+cliente\u0026amp;description=Vuelve+a+activo+a+un+cliente+dado+de+baja%2C+igual+que+%22Reactivar%22+en+su+ficha+de+Craqui%3A+puede+volver+a%0Areservar%2C+con+sus+datos+como+estaban.+No+le+devuelve+pack\u0026amp;theme=176da6da42441ffcb9f627fc\u0026amp;signature=7f70f6c95476204b6377e63b037954e88cc0743686b01f615ac330dffe484570\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/craqui/ptsKlgDyHJpLj3bc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"API de Craqui\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1F33C7\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.craqui.com/estudios/api-reference/clients/reactivar-a-un-cliente\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/estudios/api-reference/clients/reactivar-a-un-cliente.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.craqui.com/#organization\",\"name\":\"API de Craqui\",\"url\":\"https://docs.craqui.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/craqui/oYoj2lAgh2Jk1Qcv/logo/light.png?fit=max\u0026auto=format\u0026n=oYoj2lAgh2Jk1Qcv\u0026q=85\u0026s=e96edbf5621b5bc4068b5ad8dee910c7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.craqui.com#website\",\"name\":\"API de Craqui\",\"url\":\"https://docs.craqui.com\",\"publisher\":{\"@id\":\"https://docs.craqui.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.craqui.com/estudios/api-reference/clients/reactivar-a-un-cliente#webpage\",\"url\":\"https://docs.craqui.com/estudios/api-reference/clients/reactivar-a-un-cliente\",\"name\":\"Reactivar a un cliente\",\"description\":\"Vuelve a activo a un cliente dado de baja, igual que \\\"Reactivar\\\" en su ficha de Craqui: puede volver a reservar, con sus datos como estaban. No le devuelve packs, membresías ni reservas que se cancelaron en la baja, y no le avisa nada. Responde el cliente como queda, con su ETag. Si el cliente ya está activo, responde 200 con el cliente y no cambia nada. Con dry_run=true responde 200 con la vista previa. Rechazos (409): plan_client_limit_reached (el plan del estudio no admite más clientes). Un cliente que no es de tu negocio responde 404 not_found. Una escritura: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia responde wrong_vertical), y solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled si no). Un campo que el cuerpo no declara responde validation_failed con unknown_field. Cuenta para el límite de escrituras (30 por minuto).\",\"dateModified\":\"2026-11-09T20:37:26.507Z\",\"isPartOf\":{\"@id\":\"https://docs.craqui.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.craqui.com/estudios/api-reference/clients/reactivar-a-un-cliente#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.craqui.com/estudios/api-reference/clients/reactivar-a-un-cliente#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"clients\",\"item\":\"https://docs.craqui.com/estudios/api-reference/clients/listar-clientes\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reactivar a un cliente\",\"item\":\"https://docs.craqui.com/estudios/api-reference/clients/reactivar-a-un-cliente\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.craqui.com/estudios/api-reference/clients/reactivar-a-un-cliente#apireference\",\"headline\":\"Reactivar a un cliente\",\"name\":\"Reactivar a un cliente\",\"description\":\"Vuelve a activo a un cliente dado de baja, igual que \\\"Reactivar\\\" en su ficha de Craqui: puede volver a reservar, con sus datos como estaban. No le devuelve packs, membresías ni reservas que se cancelaron en la baja, y no le avisa nada. Responde el cliente como queda, con su ETag. Si el cliente ya está activo, responde 200 con el cliente y no cambia nada. Con dry_run=true responde 200 con la vista previa. Rechazos (409): plan_client_limit_reached (el plan del estudio no admite más clientes). Un cliente que no es de tu negocio responde 404 not_found. Una escritura: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia responde wrong_vertical), y solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled si no). Un campo que el cuerpo no declara responde validation_failed con unknown_field. Cuenta para el límite de escrituras (30 por minuto).\",\"url\":\"https://docs.craqui.com/estudios/api-reference/clients/reactivar-a-un-cliente\",\"mainEntityOfPage\":{\"@id\":\"https://docs.craqui.com/estudios/api-reference/clients/reactivar-a-un-cliente#webpage\"},\"dateModified\":\"2026-11-09T20:37:26.507Z\",\"publisher\":{\"@id\":\"https://docs.craqui.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.craqui.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"API de Craqui\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"API de Craqui","nav":{"global":null,"tabs":[{"tab":"Guías","pages":[{"title":"Guías","href":""}]},{"tab":"Referencia","groups":[{"group":"business","pages":[{"title":"Ver el negocio de la clave","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /business","href":"/estudios/api-reference/business/ver-el-negocio-de-la-clave"}]},{"group":"booking_policy","pages":[{"title":"Ver las reglas de reserva","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /booking_policy","href":"/estudios/api-reference/booking_policy/ver-las-reglas-de-reserva"}]},{"group":"centers","pages":[{"title":"Listar sedes","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /centers","href":"/estudios/api-reference/centers/listar-sedes"},{"title":"Ver una sede","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /centers/{id}","href":"/estudios/api-reference/centers/ver-una-sede"}]},{"group":"rooms","pages":[{"title":"Listar salones","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /rooms","href":"/estudios/api-reference/rooms/listar-salones"},{"title":"Ver un salón","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /rooms/{id}","href":"/estudios/api-reference/rooms/ver-un-salón"}]},{"group":"teachers","pages":[{"title":"Listar instructores","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /teachers","href":"/estudios/api-reference/teachers/listar-instructores"},{"title":"Ver un instructor","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /teachers/{id}","href":"/estudios/api-reference/teachers/ver-un-instructor"}]},{"group":"courses","pages":[{"title":"Listar disciplinas","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /courses","href":"/estudios/api-reference/courses/listar-disciplinas"}]},{"group":"classes","pages":[{"title":"Listar clases","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /classes","href":"/estudios/api-reference/classes/listar-clases"},{"title":"Ver una clase","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /classes/{id}","href":"/estudios/api-reference/classes/ver-una-clase"}]},{"group":"credit_packs","pages":[{"title":"Listar packs de créditos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /credit_packs","href":"/estudios/api-reference/credit_packs/listar-packs-de-créditos"}]},{"group":"membership_plans","pages":[{"title":"Listar planes de membresía","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /membership_plans","href":"/estudios/api-reference/membership_plans/listar-planes-de-membresía"}]},{"group":"intro_offers","pages":[{"title":"Listar ofertas de bienvenida","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /intro_offers","href":"/estudios/api-reference/intro_offers/listar-ofertas-de-bienvenida"}]},{"group":"sessions","pages":[{"title":"Listar sesiones","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /sessions","href":"/estudios/api-reference/sessions/listar-sesiones"},{"title":"Ver una sesión","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /sessions/{id}","href":"/estudios/api-reference/sessions/ver-una-sesión"},{"title":"Listar las reservas de una sesión","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /sessions/{id}/bookings","href":"/estudios/api-reference/sessions/listar-las-reservas-de-una-sesión"},{"title":"Cancelar una sesión","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /sessions/{id}/cancel","href":"/estudios/api-reference/sessions/cancelar-una-sesión"}]},{"group":"clients","pages":[{"title":"Listar clientes","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /clients","href":"/estudios/api-reference/clients/listar-clientes"},{"title":"Dar de alta a un cliente","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /clients","href":"/estudios/api-reference/clients/dar-de-alta-a-un-cliente"},{"title":"Ver un cliente","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /clients/{id}","href":"/estudios/api-reference/clients/ver-un-cliente"},{"title":"Cambiar los datos de un cliente","description":"Cambia solo los campos que mandas: `first_name`, `last_name`, `phone`, `phone_country_code`, `center_id` y\n`metadata` (que se combina con la guardada; una clave con `null` se borra). El email no se cambia por la API\n(`validation_failed` con `not_updatable`). Al cliente no le llega ningún aviso.\n\nCon `If-Match` (el `ETag` de tu última lectura), el cambio se aplica solo si nadie cambió el cliente desde\nentonces; si cambió, `412 precondition_failed` y no se cambia nada. Repetir el mismo cambio responde `200` sin\ncambiar nada. Responde el cliente como queda, con su `ETag` nuevo. Con `dry_run=true` responde `200` con la\nvista previa.\n\nRechazos (`409`): `profile_shared_with_other_business` (el cliente también está en otro negocio de Craqui:\nsu nombre y su teléfono no se cambian por la API; no se cambia nada), `client_is_staff` (también es del\nequipo del estudio: lo mismo), `client_unreachable` (quedaría sin email ni teléfono), `phone_in_use` (el\nteléfono nuevo de un cliente sin email ya es de otro cliente). Un cliente que no es de tu negocio, o un `center_id` de otro, responde `404 not_found`.\n\nUna escritura: lleva `Idempotency-Key` (salvo con `dry_run=true`), solo para estudios (en una academia\nresponde `wrong_vertical`), y solo si tu negocio tiene habilitada la escritura por la API\n(`write_access_disabled` si no). Un campo que el cuerpo no declara responde `validation_failed` con\n`unknown_field`. Cuenta para el límite de escrituras (30 por minuto).\n","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml patch /clients/{id}","href":"/estudios/api-reference/clients/cambiar-los-datos-de-un-cliente"},{"title":"Reactivar a un cliente","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /clients/{id}/reactivate","href":"/estudios/api-reference/clients/reactivar-a-un-cliente"},{"title":"Dar de baja a un cliente","description":"Da de baja a un cliente, igual que \"Dar de baja\" en su ficha de Craqui. Antes, da de baja en MercadoPago,\nconfirmado, cada débito automático que le pueda estar cobrando; si MercadoPago no lo confirma, no se da de baja\nal cliente. Después, en un solo paso: cancela sus reservas fijas y sus reservas futuras (los créditos vuelven\nsegún las reglas de cada clase), cierra su membresía, da de baja sus cuotas futuras sin pagar y sus compras sin\npagar de la web app, vence sus créditos y lo deja dado de baja. No devuelve plata: una cuota ya pagada sigue\npagada y una cuota vencida sin pagar sigue siendo deuda. No le avisa nada al cliente. Responde el cliente como\nqueda, con su `ETag`.\n\nSi la membresía del cliente tiene un pago por adelantado sin cobrar, decide qué pasa con él\n(`advance_payment_unpaid`): la API no aplica ningún valor por defecto sobre plata. Si el cliente ya está dado\nde baja, responde `200` con el cliente y no cambia nada. Con `dry_run=true` responde `200` con la vista previa:\nqué cancelaría, cuántos débitos daría de baja y la deuda que queda.\n\nRechazos (`409`): `advance_payment_choice_required` (con `amount_at_stake`), `client_has_automatic_debit`,\n`automatic_debit_not_cancellable` y `client_is_key_owner`; `502 automatic_debit_cancel_failed` (MercadoPago no\nconfirmó: reintenta con la misma `Idempotency-Key`). Un cliente que no es de tu negocio responde\n`404 not_found`.\n\nUna escritura de plata: lleva `Idempotency-Key` (salvo con `dry_run=true`), solo para estudios (en una academia\nresponde `wrong_vertical`), solo si tu negocio tiene habilitada la escritura por la API (`write_access_disabled`\nsi no) y además las escrituras de plata (`money_writes_not_enabled` si no), aunque la clave tenga\n`clients:write`. Cuenta para el límite de escrituras (30 por minuto) y para el de escrituras de plata (10 por\nminuto; una vista previa no cuenta para este). Un campo que el cuerpo no declara responde `validation_failed`\ncon `unknown_field`. Un reintento con la misma `Idempotency-Key`, también después de las 24 horas, responde lo\nque ya se hizo, con `Idempotent-Replayed: true`.\n","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /clients/{id}/deactivate","href":"/estudios/api-reference/clients/dar-de-baja-a-un-cliente"}]},{"group":"bookings","pages":[{"title":"Listar reservas","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /bookings","href":"/estudios/api-reference/bookings/listar-reservas"},{"title":"Reservar una sesión","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /bookings","href":"/estudios/api-reference/bookings/reservar-una-sesión"},{"title":"Ver una reserva","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /bookings/{id}","href":"/estudios/api-reference/bookings/ver-una-reserva"},{"title":"Cancelar una reserva","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /bookings/{id}/cancel","href":"/estudios/api-reference/bookings/cancelar-una-reserva"},{"title":"Marcar la asistencia","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /bookings/{id}/attendance","href":"/estudios/api-reference/bookings/marcar-la-asistencia"}]},{"group":"credits","pages":[{"title":"Ver el saldo de créditos de un cliente","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /clients/{id}/credit_balance","href":"/estudios/api-reference/credits/ver-el-saldo-de-créditos-de-un-cliente"},{"title":"Listar lotes de créditos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /credit_grants","href":"/estudios/api-reference/credits/listar-lotes-de-créditos"},{"title":"Asignar un pack ya vendido","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /credit_grants","href":"/estudios/api-reference/credits/asignar-un-pack-ya-vendido"},{"title":"Revocar un pack","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /credit_grants/{id}/revoke","href":"/estudios/api-reference/credits/revocar-un-pack"},{"title":"Listar movimientos de créditos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /credit_transactions","href":"/estudios/api-reference/credits/listar-movimientos-de-créditos"}]},{"group":"memberships","pages":[{"title":"Listar membresías","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /memberships","href":"/estudios/api-reference/memberships/listar-membresías"},{"title":"Asignar una membresía ya vendida","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /memberships","href":"/estudios/api-reference/memberships/asignar-una-membresía-ya-vendida"},{"title":"Ver una membresía","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /memberships/{id}","href":"/estudios/api-reference/memberships/ver-una-membresía"},{"title":"Listar los congelamientos de una membresía","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /memberships/{id}/freezes","href":"/estudios/api-reference/memberships/listar-los-congelamientos-de-una-membresía"},{"title":"Dar de baja una membresía","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /memberships/{id}/cancel","href":"/estudios/api-reference/memberships/dar-de-baja-una-membresía"},{"title":"Congelar una membresía","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /memberships/{id}/freeze","href":"/estudios/api-reference/memberships/congelar-una-membresía"},{"title":"Descongelar una membresía","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /memberships/{id}/unfreeze","href":"/estudios/api-reference/memberships/descongelar-una-membresía"}]},{"group":"fees","pages":[{"title":"Listar cuotas","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /fees","href":"/estudios/api-reference/fees/listar-cuotas"},{"title":"Ver una cuota","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /fees/{id}","href":"/estudios/api-reference/fees/ver-una-cuota"}]},{"group":"payments","pages":[{"title":"Listar pagos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /payments","href":"/estudios/api-reference/payments/listar-pagos"},{"title":"Registrar un pago","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /payments","href":"/estudios/api-reference/payments/registrar-un-pago"},{"title":"Ver un pago","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /payments/{id}","href":"/estudios/api-reference/payments/ver-un-pago"}]},{"group":"refunds","pages":[{"title":"Listar reembolsos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /refunds","href":"/estudios/api-reference/refunds/listar-reembolsos"}]},{"group":"events","pages":[{"title":"Listar eventos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /events","href":"/estudios/api-reference/events/listar-eventos"},{"title":"Ver un evento","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /events/{id}","href":"/estudios/api-reference/events/ver-un-evento"}]},{"group":"webhook_endpoints","pages":[{"title":"Listar URLs de avisos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /webhook_endpoints","href":"/estudios/api-reference/webhook_endpoints/listar-urls-de-avisos"},{"title":"Agregar una URL de avisos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /webhook_endpoints","href":"/estudios/api-reference/webhook_endpoints/agregar-una-url-de-avisos"},{"title":"Ver una URL de avisos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml get /webhook_endpoints/{id}","href":"/estudios/api-reference/webhook_endpoints/ver-una-url-de-avisos"},{"title":"Borrar una URL de avisos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml delete /webhook_endpoints/{id}","href":"/estudios/api-reference/webhook_endpoints/borrar-una-url-de-avisos"},{"title":"Editar una URL de avisos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml patch /webhook_endpoints/{id}","href":"/estudios/api-reference/webhook_endpoints/editar-una-url-de-avisos"},{"title":"Enviar un aviso de prueba","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /webhook_endpoints/{id}/test","href":"/estudios/api-reference/webhook_endpoints/enviar-un-aviso-de-prueba"},{"title":"Cambiar el secreto de una URL de avisos","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /webhook_endpoints/{id}/rotate_secret","href":"/estudios/api-reference/webhook_endpoints/cambiar-el-secreto-de-una-url-de-avisos"},{"title":"El aviso que recibe tu sistema","version":null,"deprecated":null,"openapi":"/estudios/openapi.yaml webhook event","href":"/estudios/api-reference/webhook_endpoints/el-aviso-que-recibe-tu-sistema"}]}]}]},"basePath":"","title":"Reactivar a un cliente - API de Craqui","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}