{
"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"
}
Asigna a un cliente una membresía que vendiste fuera de Craqui, igual que “Asignar membresía” desde Craqui: abre su
primer período, carga sus créditos y crea su primera cuota, para registrar el pago con POST /v1/payments. La
API no cobra y la membresía empieza hoy (o, en un estudio que renueva todas el mismo día, como diga
start_option).
first_fee es obligatorio aunque sea 0: tiene que ser la primera cuota que Craqui calcula hoy para ese plan, en
la moneda del estudio; si no, responde 409 price_changed con current_price y no asigna nada. Al cliente le
llega el aviso de siempre (notify: false lo silencia, con notifications:suppress). Responde 201 con la
membresía, su first_fee_id y, si el estudio emite por adelantado la cuota siguiente, su next_fee_id. Con
dry_run=true responde 200 con la vista previa: período, créditos y cuotas.
Rechazos (409): active_membership_exists, membership_suspended, membership_paused y
membership_scheduled (con existing_membership_id), membership_plan_inactive, client_inactive y
business_currency_missing; 422 start_option_not_applicable y 422 currency_mismatch. Un cliente o un plan que
no es de tu negocio responde 404 not_found. Un reintento con la misma Idempotency-Key nunca crea una segunda
membresía ni una segunda cuota, aunque la primera ya haya terminado.
Una escritura de plata: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia
responde wrong_vertical), solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled
si no) y además las escrituras de plata (money_writes_not_enabled si no). Cuenta para el límite de escrituras
(30 por minuto) y para el de escrituras de plata (10 por minuto; una vista previa no cuenta para este). Un campo
que el cuerpo no declara responde validation_failed con unknown_field. Un reintento con la misma
Idempotency-Key, también después de las 24 horas, responde lo que ya se hizo, con Idempotent-Replayed: true.
{
"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.
La primera cuota que cobraste, también si es 0: tiene que ser la que Craqui calcula hoy para ese plan y esa
opción de inicio (409 price_changed con current_price si no). Así una membresía nunca se asigna a un
precio que tu checkout no cobró.
Solo en un estudio que renueva todas las membresías el mismo día, para quien empieza a mitad de mes:
next_cycle (empieza el próximo día de renovación), prorate (paga los días que quedan) o full_credits
(todos los créditos ahora, precio completo). En cualquier otro estudio, null (422 start_option_not_applicable si no).
false para no enviarle al cliente los avisos de esta escritura (email, WhatsApp). Necesita el permiso
notifications:suppress; sin él, la respuesta es 403 scope_required. Nunca silencia el aviso a otra
persona: si una cancelación hace entrar a alguien de la lista de espera, esa persona se entera igual. Los
recordatorios posteriores salen igual. Por defecto true. Tu estudio de prueba no le avisa a nadie,
diga lo que diga este campo.
Response
Con dry_run=true, la vista previa (no se escribió nada).
Lo que haría la escritura de plata, sin hacerla: Craqui corre la misma operación que el pedido real y la
deshace, así que una vista previa que se rechazaría responde el mismo error (por ejemplo price_changed o
amount_mismatch, con el monto de hoy). No consume la Idempotency-Key ni cuenta para el límite de escrituras
de plata.
credit_grant.create, credit_grant.revoke, membership.create, membership.cancel, membership.freeze,
membership.unfreeze o payment.create. La lista puede crecer.
Lo mismo en una frase en español, para mostrarle a una persona. No nombra al cliente.
{"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/memberships/asignar-una-membresía-ya-vendida","slug":"/estudios/api-reference/memberships/asignar-una-membresía-ya-vendida","pageMetadata":{"title":"Asignar una membresía ya vendida","description":"Asigna a un cliente una membresía que vendiste fuera de Craqui, igual que \"Asignar membresía\" desde Craqui: abre su\nprimer período, carga sus créditos y crea su primera cuota, para registrar el pago con `POST /v1/payments`. La\nAPI no cobra y la membresía empieza hoy (o, en un estudio que renueva todas el mismo día, como diga\n`start_option`).\n\n`first_fee` es obligatorio aunque sea 0: tiene que ser la primera cuota que Craqui calcula hoy para ese plan, en\nla moneda del estudio; si no, responde `409 price_changed` con `current_price` y no asigna nada. Al cliente le\nllega el aviso de siempre (`notify: false` lo silencia, con `notifications:suppress`). Responde `201` con la\nmembresía, su `first_fee_id` y, si el estudio emite por adelantado la cuota siguiente, su `next_fee_id`. Con\n`dry_run=true` responde `200` con la vista previa: período, créditos y cuotas.\n\nRechazos (`409`): `active_membership_exists`, `membership_suspended`, `membership_paused` y\n`membership_scheduled` (con `existing_membership_id`), `membership_plan_inactive`, `client_inactive` y\n`business_currency_missing`; `422 start_option_not_applicable` y `422 currency_mismatch`. Un cliente o un plan que\nno es de tu negocio responde `404 not_found`. Un reintento con la misma `Idempotency-Key` nunca crea una segunda\nmembresía ni una segunda cuota, aunque la primera ya haya terminado.\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). Cuenta para el límite de escrituras\n(30 por minuto) y para el de escrituras de plata (10 por minuto; una vista previa no cuenta para este). Un campo\nque el cuerpo no declara responde `validation_failed` con `unknown_field`. Un reintento con la misma\n`Idempotency-Key`, también después de las 24 horas, responde lo que ya se hizo, con `Idempotent-Replayed: true`.\n","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /memberships","href":"/estudios/api-reference/memberships/asignar-una-membresía-ya-vendida","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: [\"Asigna a un cliente una membresía que vendiste fuera de Craqui, igual que “Asignar membresía” desde Craqui: abre su\\nprimer período, carga sus créditos y crea su primera cuota, para registrar el pago con \", _jsx(_components.code, {\n children: \"POST /v1/payments\"\n }), \". La\\nAPI no cobra y la membresía empieza hoy (o, en un estudio que renueva todas el mismo día, como diga\\n\", _jsx(_components.code, {\n children: \"start_option\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"first_fee\"\n }), \" es obligatorio aunque sea 0: tiene que ser la primera cuota que Craqui calcula hoy para ese plan, en\\nla moneda del estudio; si no, responde \", _jsx(_components.code, {\n children: \"409 price_changed\"\n }), \" con \", _jsx(_components.code, {\n children: \"current_price\"\n }), \" y no asigna nada. Al cliente le\\nllega el aviso de siempre (\", _jsx(_components.code, {\n children: \"notify: false\"\n }), \" lo silencia, con \", _jsx(_components.code, {\n children: \"notifications:suppress\"\n }), \"). Responde \", _jsx(_components.code, {\n children: \"201\"\n }), \" con la\\nmembresía, su \", _jsx(_components.code, {\n children: \"first_fee_id\"\n }), \" y, si el estudio emite por adelantado la cuota siguiente, su \", _jsx(_components.code, {\n children: \"next_fee_id\"\n }), \". Con\\n\", _jsx(_components.code, {\n children: \"dry_run=true\"\n }), \" responde \", _jsx(_components.code, {\n children: \"200\"\n }), \" con la vista previa: período, créditos y cuotas.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Rechazos (\", _jsx(_components.code, {\n children: \"409\"\n }), \"): \", _jsx(_components.code, {\n children: \"active_membership_exists\"\n }), \", \", _jsx(_components.code, {\n children: \"membership_suspended\"\n }), \", \", _jsx(_components.code, {\n children: \"membership_paused\"\n }), \" y\\n\", _jsx(_components.code, {\n children: \"membership_scheduled\"\n }), \" (con \", _jsx(_components.code, {\n children: \"existing_membership_id\"\n }), \"), \", _jsx(_components.code, {\n children: \"membership_plan_inactive\"\n }), \", \", _jsx(_components.code, {\n children: \"client_inactive\"\n }), \" y\\n\", _jsx(_components.code, {\n children: \"business_currency_missing\"\n }), \"; \", _jsx(_components.code, {\n children: \"422 start_option_not_applicable\"\n }), \" y \", _jsx(_components.code, {\n children: \"422 currency_mismatch\"\n }), \". Un cliente o un plan que\\nno es de tu negocio responde \", _jsx(_components.code, {\n children: \"404 not_found\"\n }), \". Un reintento con la misma \", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \" nunca crea una segunda\\nmembresía ni una segunda cuota, aunque la primera ya haya terminado.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Una escritura de plata: 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 }), \"), solo si tu negocio tiene habilitada la escritura por la API (\", _jsx(_components.code, {\n children: \"write_access_disabled\"\n }), \"\\nsi no) y además las escrituras de plata (\", _jsx(_components.code, {\n children: \"money_writes_not_enabled\"\n }), \" si no). Cuenta para el límite de escrituras\\n(30 por minuto) y para el de escrituras de plata (10 por minuto; una vista previa no cuenta para este). Un campo\\nque el cuerpo no declara responde \", _jsx(_components.code, {\n children: \"validation_failed\"\n }), \" con \", _jsx(_components.code, {\n children: \"unknown_field\"\n }), \". Un reintento con la misma\\n\", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \", también después de las 24 horas, responde lo que ya se hizo, con \", _jsx(_components.code, {\n children: \"Idempotent-Replayed: true\"\n }), \".\"]\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":"Asignar una membresía ya vendida","description":"Asigna a un cliente una membresía que vendiste fuera de Craqui, igual que \"Asignar membresía\" desde Craqui: abre su\nprimer período, carga sus créditos y crea su primera cuota, para registrar el pago con `POST /v1/payments`. La\nAPI no cobra y la membresía empieza hoy (o, en un estudio que renueva todas el mismo día, como diga\n`start_option`).\n\n`first_fee` es obligatorio aunque sea 0: tiene que ser la primera cuota que Craqui calcula hoy para ese plan, en\nla moneda del estudio; si no, responde `409 price_changed` con `current_price` y no asigna nada. Al cliente le\nllega el aviso de siempre (`notify: false` lo silencia, con `notifications:suppress`). Responde `201` con la\nmembresía, su `first_fee_id` y, si el estudio emite por adelantado la cuota siguiente, su `next_fee_id`. Con\n`dry_run=true` responde `200` con la vista previa: período, créditos y cuotas.\n\nRechazos (`409`): `active_membership_exists`, `membership_suspended`, `membership_paused` y\n`membership_scheduled` (con `existing_membership_id`), `membership_plan_inactive`, `client_inactive` y\n`business_currency_missing`; `422 start_option_not_applicable` y `422 currency_mismatch`. Un cliente o un plan que\nno es de tu negocio responde `404 not_found`. Un reintento con la misma `Idempotency-Key` nunca crea una segunda\nmembresía ni una segunda cuota, aunque la primera ya haya terminado.\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). Cuenta para el límite de escrituras\n(30 por minuto) y para el de escrituras de plata (10 por minuto; una vista previa no cuenta para este). Un campo\nque el cuerpo no declara responde `validation_failed` con `unknown_field`. Un reintento con la misma\n`Idempotency-Key`, también después de las 24 horas, responde lo que ya se hizo, con `Idempotent-Replayed: true`.\n","deprecated":null,"version":null,"openapi":"/estudios/openapi.yaml post /memberships","href":"/estudios/api-reference/memberships/asignar-una-membresía-ya-vendida","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createMembership","tags":["memberships"],"summary":"Asignar una membresía ya vendida","description":"Asigna a un cliente una membresía que vendiste fuera de Craqui, igual que \"Asignar membresía\" desde Craqui: abre su\nprimer período, carga sus créditos y crea su primera cuota, para registrar el pago con `POST /v1/payments`. La\nAPI no cobra y la membresía empieza hoy (o, en un estudio que renueva todas el mismo día, como diga\n`start_option`).\n\n`first_fee` es obligatorio aunque sea 0: tiene que ser la primera cuota que Craqui calcula hoy para ese plan, en\nla moneda del estudio; si no, responde `409 price_changed` con `current_price` y no asigna nada. Al cliente le\nllega el aviso de siempre (`notify: false` lo silencia, con `notifications:suppress`). Responde `201` con la\nmembresía, su `first_fee_id` y, si el estudio emite por adelantado la cuota siguiente, su `next_fee_id`. Con\n`dry_run=true` responde `200` con la vista previa: período, créditos y cuotas.\n\nRechazos (`409`): `active_membership_exists`, `membership_suspended`, `membership_paused` y\n`membership_scheduled` (con `existing_membership_id`), `membership_plan_inactive`, `client_inactive` y\n`business_currency_missing`; `422 start_option_not_applicable` y `422 currency_mismatch`. Un cliente o un plan que\nno es de tu negocio responde `404 not_found`. Un reintento con la misma `Idempotency-Key` nunca crea una segunda\nmembresía ni una segunda cuota, aunque la primera ya haya terminado.\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). Cuenta para el límite de escrituras\n(30 por minuto) y para el de escrituras de plata (10 por minuto; una vista previa no cuenta para este). Un campo\nque el cuerpo no declara responde `validation_failed` con `unknown_field`. Un reintento con la misma\n`Idempotency-Key`, también después de las 24 horas, responde lo que ya se hizo, con `Idempotent-Replayed: true`.\n","x-craqui-scope":"memberships:write","security":["d4003d7f-1786-474c-a2c3-b182cbbe63dd","0e660f2a-0548-4cbc-abfd-4632a03688d1"],"x-craqui-capability":"api_memberships_create","x-craqui-effect-class":"money","parameters":["17bd8a7d-280e-4ee9-93d6-9aaff1cb5068","5dc5bae0-0a6e-4072-b6ee-d6cfc619d1be","9753d4ee-3b57-4a33-9378-9924bc0cc810"],"requestBody":"580becea-657b-48f5-ac15-ccb0511f71d2","responses":{"200":"9bc96554-f679-4dea-b47c-e7b14ddae141","201":"9172fc0b-d055-498e-b8df-a94487d5f8c9","400":"5a8a1fbd-21a4-4632-ab3c-30109dd3827f","401":"78da209a-0916-470a-99a2-e39ded8fd947","403":"96dbf8e2-0428-4758-a297-63684bfd7d99","404":"49a4099f-b4f3-4663-82f8-cde02faaec58","409":"c6daafea-de6d-4a18-8a5c-7049215a5a43","422":"5f8602fc-858e-4a1c-bc0a-87e8a8cb6775","429":"e7f901a6-2621-4a9e-a60c-a4fbc7d78ea3","500":"d1858cee-f62d-4283-8d25-72cacf2b9967"},"method":"post","type":"path","servers":["bb48cfac-2655-4314-90fd-28cc11e87988"],"path":"/memberships","baseUrlOptions":["https://api.craqui.com/v1"],"title":"Asignar una membresía ya vendida","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"17bd8a7d-280e-4ee9-93d6-9aaff1cb5068":{"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"}},"5dc5bae0-0a6e-4072-b6ee-d6cfc619d1be":{"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"}},"9753d4ee-3b57-4a33-9378-9924bc0cc810":{"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":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["client_id","membership_plan_id","first_fee"],"properties":{"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":"client_id","typeLabel":"string"},"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":"membership_plan_id","typeLabel":"string"},"first_fee":{"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":"first_fee.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"first_fee.currency","typeLabel":"string"}},"description":"La primera cuota que cobraste, también si es 0: tiene que ser la que Craqui calcula hoy para ese plan y esa\nopción de inicio (`409 price_changed` con `current_price` si no). Así una membresía nunca se asigna a un\nprecio que tu checkout no cobró.\n","isRequired":true,"uniqueKey":"first_fee","typeLabel":"object"},"start_option":{"oneOf":[{"type":"string","enum":["next_cycle","prorate","full_credits",null],"description":"Solo en un estudio que renueva todas las membresías el mismo día, para quien empieza a mitad de mes:\n`next_cycle` (empieza el próximo día de renovación), `prorate` (paga los días que quedan) o `full_credits`\n(todos los créditos ahora, precio completo). En cualquier otro estudio, `null` (`422\nstart_option_not_applicable` si no).\n","uniqueKey":"start_option.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["next_cycle","prorate","full_credits",null],"description":"Solo en un estudio que renueva todas las membresías el mismo día, para quien empieza a mitad de mes:\n`next_cycle` (empieza el próximo día de renovación), `prorate` (paga los días que quedan) o `full_credits`\n(todos los créditos ahora, precio completo). En cualquier otro estudio, `null` (`422\nstart_option_not_applicable` si no).\n","uniqueKey":"start_option.oneOf.1","typeLabel":"null"}],"uniqueKey":"start_option","typeLabel":"enum\u003cstring> | null"},"notify":{"type":"boolean","description":"`false` para no enviarle al cliente los avisos de esta escritura (email, WhatsApp). Necesita el permiso\n`notifications:suppress`; sin él, la respuesta es `403 scope_required`. Nunca silencia el aviso a otra\npersona: si una cancelación hace entrar a alguien de la lista de espera, esa persona se entera igual. Los\nrecordatorios posteriores salen igual. Por defecto `true`. Tu estudio de prueba no le avisa a nadie,\ndiga lo que diga este campo.\n","default":true,"uniqueKey":"notify","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"example":{"client_id":"cli_01je0mdfx4f3gr5peqyzsj0v2g","membership_plan_id":"mpl_01jt05nvk11xa1zm1pwve2qj7r","start_option":null,"first_fee":{"amount_cents":250000,"currency":"UYU"}},"examples":{"Example":{"title":"Example","value":{"client_id":"cli_01je0mdfx4f3gr5peqyzsj0v2g","membership_plan_id":"mpl_01jt05nvk11xa1zm1pwve2qj7r","start_option":null,"first_fee":{"amount_cents":250000,"currency":"UYU"}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"9bc96554-f679-4dea-b47c-e7b14ddae141":{"description":"Con `dry_run=true`, la vista previa (no se escribió nada).","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"]}},"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":{"type":"object","description":"Lo que haría la escritura de plata, sin hacerla: Craqui corre la misma operación que el pedido real y la\ndeshace, así que una vista previa que se rechazaría responde el mismo error (por ejemplo `price_changed` o\n`amount_mismatch`, con el monto de hoy). No consume la `Idempotency-Key` ni cuenta para el límite de escrituras\nde plata.\n","required":["object","livemode","action","result","effects","warnings","summary"],"properties":{"object":{"type":"string","const":"preview","isRequired":true,"uniqueKey":"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":"livemode","typeLabel":"boolean"},"action":{"type":"string","description":"`credit_grant.create`, `credit_grant.revoke`, `membership.create`, `membership.cancel`, `membership.freeze`,\n`membership.unfreeze` o `payment.create`. La lista puede crecer.\n","enum":["credit_grant.create","credit_grant.revoke","membership.create","membership.cancel","membership.freeze","membership.unfreeze","payment.create"],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"action","typeLabel":"enum\u003cstring>"},"result":{"oneOf":[{"type":"object","description":"El objeto como está hoy; `null` si la escritura lo crearía.","required":["id","object","livemode","client_id","kind","credit_pack_id","credits_granted","credits_remaining","granted_at","revoked_at","expires_at","status","course_ids","fee_id","price","created_at"],"properties":{"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":"result.oneOf.0.id","typeLabel":"string"},"object":{"type":"string","const":"credit_grant","isRequired":true,"uniqueKey":"result.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":"result.oneOf.0.livemode","typeLabel":"boolean"},"client_id":{"oneOf":[{"type":"string","description":"El cliente. `null` si el lote es de alguien que no es cliente del estudio (por ejemplo, alguien del equipo).","pattern":"^cli_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"cli_01jatfha5h4nkg77c3wfrvd3cw","isRequired":true,"uniqueKey":"result.oneOf.0.client_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"El cliente. `null` si el lote es de alguien que no es cliente del estudio (por ejemplo, alguien del equipo).","isRequired":true,"uniqueKey":"result.oneOf.0.client_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.0.client_id","typeLabel":"string | null"},"kind":{"oneOf":[{"type":"string","description":"`pack`, `intro_offer` o `membership_period`. `null` solo en lotes muy viejos sin tipo. La lista\npuede crecer.\n","enum":["pack","intro_offer","membership_period",null],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"result.oneOf.0.kind.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"`pack`, `intro_offer` o `membership_period`. `null` solo en lotes muy viejos sin tipo. La lista\npuede crecer.\n","enum":["pack","intro_offer","membership_period",null],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"result.oneOf.0.kind.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.0.kind","typeLabel":"enum\u003cstring> | null"},"credit_pack_id":{"oneOf":[{"type":"string","description":"El pack que se compró, solo si `kind` es `pack`.","pattern":"^cpk_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"cpk_01j63ec7mff1rr7pbk3z1b8ke1","isRequired":true,"uniqueKey":"result.oneOf.0.credit_pack_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"El pack que se compró, solo si `kind` es `pack`.","isRequired":true,"uniqueKey":"result.oneOf.0.credit_pack_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.0.credit_pack_id","typeLabel":"string | null"},"credits_granted":{"type":"integer","description":"Los créditos que dio el lote.","isRequired":true,"uniqueKey":"result.oneOf.0.credits_granted","typeLabel":"integer"},"credits_remaining":{"type":"integer","description":"Los créditos que le quedan.","isRequired":true,"uniqueKey":"result.oneOf.0.credits_remaining","typeLabel":"integer"},"granted_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":"result.oneOf.0.granted_at","typeLabel":"string\u003cdate-time>"},"revoked_at":{"oneOf":[{"type":"string","description":"Cuándo el estudio anuló el lote; `null` si no se anuló.","format":"date-time","example":"2026-12-02T19:00:00-03:00","isRequired":true,"uniqueKey":"result.oneOf.0.revoked_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Cuándo el estudio anuló el lote; `null` si no se anuló.","isRequired":true,"uniqueKey":"result.oneOf.0.revoked_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.0.revoked_at","typeLabel":"string\u003cdate-time> | null"},"expires_at":{"oneOf":[{"type":"string","description":"Cuándo vencen los créditos, con los días de gracia ya sumados. `null` si no vencen.\n","format":"date-time","example":"2026-12-02T19:00:00-03:00","isRequired":true,"uniqueKey":"result.oneOf.0.expires_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Cuándo vencen los créditos, con los días de gracia ya sumados. `null` si no vencen.\n","isRequired":true,"uniqueKey":"result.oneOf.0.expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.0.expires_at","typeLabel":"string\u003cdate-time> | null"},"status":{"type":"string","description":"`revoked` si se anuló; si no, `expired` si venció; si no, `depleted` si no le quedan créditos; si\nno, `active`. La lista puede crecer: trata un valor que no conoces como un lote que no se puede usar.\n","enum":["active","depleted","expired","revoked"],"x-extensible-enum":true,"isRequired":true,"uniqueKey":"result.oneOf.0.status","typeLabel":"enum\u003cstring>"},"course_ids":{"oneOf":[{"description":"Las disciplinas en las que sirven los créditos; `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":"result.oneOf.0.course_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"result.oneOf.0.course_ids.oneOf.0","typeLabel":"string[]"},{"description":"Las disciplinas en las que sirven los créditos; `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":"result.oneOf.0.course_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.0.course_ids","typeLabel":"string[] | null"},"fee_id":{"oneOf":[{"type":"string","description":"La cuota con la que se cobró el lote; `null` si no tiene (por ejemplo, créditos de regalo).","pattern":"^fee_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"fee_01jxycdc0zf2nxw7n2azer6wqp","isRequired":true,"uniqueKey":"result.oneOf.0.fee_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"La cuota con la que se cobró el lote; `null` si no tiene (por ejemplo, créditos de regalo).","isRequired":true,"uniqueKey":"result.oneOf.0.fee_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.0.fee_id","typeLabel":"string | null"},"price":{"oneOf":[{"type":"object","description":"Lo que se pagó por el lote; `null` si no se registró un precio.","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":"result.oneOf.0.price.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":"result.oneOf.0.price.oneOf.0.currency","typeLabel":"string"}},"isRequired":true,"uniqueKey":"result.oneOf.0.price.oneOf.0","typeLabel":"object"},{"type":"null","description":"Lo que se pagó por el lote; `null` si no se registró un precio.","isRequired":true,"uniqueKey":"result.oneOf.0.price.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.0.price","typeLabel":"object | 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":"result.oneOf.0.created_at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"result.oneOf.0","typeLabel":"object"},{"type":"object","description":"El objeto como está hoy; `null` si la escritura lo crearía.","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":"result.oneOf.1.id","typeLabel":"string"},"object":{"type":"string","const":"membership","isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.client_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.renews_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.next_credit_date.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.cancelled_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","isRequired":true,"uniqueKey":"result.oneOf.1.cancelled_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.suspension_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Por qué se suspendió, como texto; `null` si no está suspendida.","isRequired":true,"uniqueKey":"result.oneOf.1.suspension_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.discount.oneOf.0.percent.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.discount.oneOf.0.fixed_amount.oneOf.0.currency","typeLabel":"string"}},"isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.discount.oneOf.0.fixed_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.discount.oneOf.0.periods_remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.1.discount.oneOf.0.periods_remaining","typeLabel":"integer | null"}},"isRequired":true,"uniqueKey":"result.oneOf.1.discount.oneOf.0","typeLabel":"object"},{"type":"null","description":"El descuento que tiene la membresía; `null` si no tiene.","isRequired":true,"uniqueKey":"result.oneOf.1.discount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.active_freeze_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.1.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":"result.oneOf.1.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":"result.oneOf.1.updated_at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"result.oneOf.1","typeLabel":"object"},{"type":"null","description":"El objeto como está hoy; `null` si la escritura lo crearía.","isRequired":true,"uniqueKey":"result.oneOf.2","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result","typeLabel":"object · object · null"},"effects":{"type":"object","description":"Lo que pasaría con la plata, los créditos y los avisos. Cada acción trae sus campos.","required":["notifies_client"],"properties":{"notifies_client":{"type":"boolean","description":"`true` si al cliente le llegaría un aviso.","isRequired":true,"uniqueKey":"effects.notifies_client","typeLabel":"boolean"},"credits_added":{"type":"integer","description":"Créditos que se cargarían (packs y membresías).","uniqueKey":"effects.credits_added","typeLabel":"integer"},"expires_at":{"oneOf":[{"type":"string","description":"Cuándo vencerían los créditos del pack.","uniqueKey":"effects.expires_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"Cuándo vencerían los créditos del pack.","uniqueKey":"effects.expires_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"effects.expires_at","typeLabel":"string | null"},"fee":{"oneOf":[{"type":"object","description":"La cuota que se crearía para el pack; `null` si el pack no tiene precio.","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":"effects.fee.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":"effects.fee.oneOf.0.currency","typeLabel":"string"}},"uniqueKey":"effects.fee.oneOf.0","typeLabel":"object"},{"type":"null","description":"La cuota que se crearía para el pack; `null` si el pack no tiene precio.","uniqueKey":"effects.fee.oneOf.1","typeLabel":"null"}],"uniqueKey":"effects.fee","typeLabel":"object | null"},"no_fee_reason":{"oneOf":[{"type":"string","enum":["no_charge",null],"uniqueKey":"effects.no_fee_reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["no_charge",null],"uniqueKey":"effects.no_fee_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"effects.no_fee_reason","typeLabel":"enum\u003cstring> | null"},"bookings_cancelled":{"type":"integer","description":"Reservas que se cancelarían.","uniqueKey":"effects.bookings_cancelled","typeLabel":"integer"},"status":{"type":"string","description":"El estado con que nacería la membresía (`active`, o `pending_payment` si empieza más adelante).","uniqueKey":"effects.status","typeLabel":"string"},"period_start":{"oneOf":[{"type":"string","description":"Inicio del primer período.","uniqueKey":"effects.period_start.oneOf.0","typeLabel":"string"},{"type":"null","description":"Inicio del primer período.","uniqueKey":"effects.period_start.oneOf.1","typeLabel":"null"}],"uniqueKey":"effects.period_start","typeLabel":"string | null"},"period_end":{"oneOf":[{"type":"string","description":"Fin del primer período.","uniqueKey":"effects.period_end.oneOf.0","typeLabel":"string"},{"type":"null","description":"Fin del primer período.","uniqueKey":"effects.period_end.oneOf.1","typeLabel":"null"}],"uniqueKey":"effects.period_end","typeLabel":"string | null"},"first_fee":{"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":"effects.first_fee.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"effects.first_fee.currency","typeLabel":"string"}},"uniqueKey":"effects.first_fee","typeLabel":"object"},"first_fee_due_date":{"oneOf":[{"type":"string","description":"Vencimiento de la primera cuota.","uniqueKey":"effects.first_fee_due_date.oneOf.0","typeLabel":"string"},{"type":"null","description":"Vencimiento de la primera cuota.","uniqueKey":"effects.first_fee_due_date.oneOf.1","typeLabel":"null"}],"uniqueKey":"effects.first_fee_due_date","typeLabel":"string | null"},"next_fee":{"oneOf":[{"type":"object","description":"La cuota del período siguiente, si el estudio la emite por adelantado.","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":"effects.next_fee.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":"effects.next_fee.oneOf.0.currency","typeLabel":"string"}},"uniqueKey":"effects.next_fee.oneOf.0","typeLabel":"object"},{"type":"null","description":"La cuota del período siguiente, si el estudio la emite por adelantado.","uniqueKey":"effects.next_fee.oneOf.1","typeLabel":"null"}],"uniqueKey":"effects.next_fee","typeLabel":"object | null"},"changed":{"type":"boolean","description":"`false` si la baja ya estaba programada.","uniqueKey":"effects.changed","typeLabel":"boolean"},"ends_at_paid_period_end":{"type":"boolean","description":"`true` si una baja de hoy termina al cierre del período siguiente porque ya está pagado.","uniqueKey":"effects.ends_at_paid_period_end","typeLabel":"boolean"},"mode":{"type":"string","enum":["created","end_changed"],"description":"`created`: un congelamiento nuevo; `end_changed`: cambia el día de vuelta del que está abierto.","uniqueKey":"effects.mode","typeLabel":"enum\u003cstring>"},"freeze":{"type":"string","enum":["active","scheduled"],"description":"`active`: se descongela hoy; `scheduled`: se anula un congelamiento programado.","uniqueKey":"effects.freeze","typeLabel":"enum\u003cstring>"},"period_renewed":{"type":"boolean","description":"`true` si la vuelta abriría un período nuevo, con sus créditos y, si el plan cobra, su cuota.","uniqueKey":"effects.period_renewed","typeLabel":"boolean"},"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":"effects.amount.amount_cents","typeLabel":"integer"},"currency":{"type":"string","description":"Moneda ISO 4217, en mayúsculas.","pattern":"^[A-Z]{3}$","examples":["UYU"],"isRequired":true,"uniqueKey":"effects.amount.currency","typeLabel":"string"}},"uniqueKey":"effects.amount","typeLabel":"object"},"paid_on":{"type":"string","format":"date","description":"Fecha local del negocio, `YYYY-MM-DD`.","pattern":"^\\d{4}-\\d{2}-\\d{2}$","examples":["2026-12-02"],"uniqueKey":"effects.paid_on","typeLabel":"string\u003cdate>"},"fee_status_after":{"type":"string","description":"El estado de la cuota después del pago (`paid_on_time` o `paid_late`).","uniqueKey":"effects.fee_status_after","typeLabel":"string"},"membership_activated":{"type":"boolean","description":"`true` si el pago activaría una membresía que esperaba su primer pago.","uniqueKey":"effects.membership_activated","typeLabel":"boolean"},"membership_reactivated":{"type":"boolean","description":"`true` si el pago reactivaría una membresía suspendida.","uniqueKey":"effects.membership_reactivated","typeLabel":"boolean"},"receipt":{"type":"boolean","description":"`true` si se le mandaría el recibo al cliente.","uniqueKey":"effects.receipt","typeLabel":"boolean"},"einvoice":{"type":"boolean","description":"`true` si se emitiría la factura electrónica (`notify: false` nunca la apaga).","uniqueKey":"effects.einvoice","typeLabel":"boolean"},"notifications_not_suppressed":{"type":"array","description":"Avisos que `notify: false` no apagaría (`membership_reactivated`).","items":{"type":"string","uniqueKey":"effects.notifications_not_suppressed.items.[INDEX]","typeLabel":"string"},"uniqueKey":"effects.notifications_not_suppressed","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"effects","typeLabel":"object"},"warnings":{"type":"array","description":"`no_change` (la baja ya estaba programada: el pedido real no cambia nada). La lista puede crecer.","items":{"type":"string","enum":["no_change"],"x-extensible-enum":true,"uniqueKey":"warnings.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"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":"summary","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"object":"preview","livemode":true,"action":"membership.create","result":null,"effects":{"notifies_client":true,"status":"active","credits_added":8,"period_start":"2026-12-01","period_end":"2027-01-01","first_fee":{"amount_cents":250000,"currency":"UYU"},"first_fee_due_date":"2026-12-01","next_fee":null},"warnings":[],"summary":"Se asigna la membresía y queda su primera cuota para cobrar."},"examples":{"Example":{"title":"Example","value":{"object":"preview","livemode":true,"action":"membership.create","result":null,"effects":{"notifies_client":true,"status":"active","credits_added":8,"period_start":"2026-12-01","period_end":"2027-01-01","first_fee":{"amount_cents":250000,"currency":"UYU"},"first_fee_due_date":"2026-12-01","next_fee":null},"warnings":[],"summary":"Se asigna la membresía y queda su primera cuota para cobrar."}}},"exampleType":"examples"}},"exampleType":"examples"},"9172fc0b-d055-498e-b8df-a94487d5f8c9":{"description":"La membresía asignada (también al repetir el pedido con la misma `Idempotency-Key`).","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"]}},"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":{"type":"object","description":"La membresía asignada, con su primera cuota.","required":["first_fee_id","next_fee_id","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":"id","typeLabel":"string"},"object":{"type":"string","const":"membership","isRequired":true,"uniqueKey":"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":"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":"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":"client_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"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":"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":"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":"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":"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":"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":"renews_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"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":"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":"next_credit_date.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"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":"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":"cancelled_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","isRequired":true,"uniqueKey":"cancelled_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"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":"suspension_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Por qué se suspendió, como texto; `null` si no está suspendida.","isRequired":true,"uniqueKey":"suspension_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"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":"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":"discount.oneOf.0.percent.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"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":"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":"discount.oneOf.0.fixed_amount.oneOf.0.currency","typeLabel":"string"}},"isRequired":true,"uniqueKey":"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":"discount.oneOf.0.fixed_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"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":"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":"discount.oneOf.0.periods_remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"discount.oneOf.0.periods_remaining","typeLabel":"integer | null"}},"isRequired":true,"uniqueKey":"discount.oneOf.0","typeLabel":"object"},{"type":"null","description":"El descuento que tiene la membresía; `null` si no tiene.","isRequired":true,"uniqueKey":"discount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"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":"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":"active_freeze_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"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":"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":"updated_at","typeLabel":"string\u003cdate-time>"},"first_fee_id":{"oneOf":[{"type":"string","description":"La primera cuota (`fee_…`); `null` si el primer período no cuesta nada.","pattern":"^fee_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"fee_01jxycdc0zf2nxw7n2azer6wqp","isRequired":true,"uniqueKey":"first_fee_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"La primera cuota (`fee_…`); `null` si el primer período no cuesta nada.","isRequired":true,"uniqueKey":"first_fee_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"first_fee_id","typeLabel":"string | null"},"next_fee_id":{"oneOf":[{"type":"string","description":"La cuota del período siguiente, si el estudio la emite por adelantado; `null` si no. En un reintento que\nCraqui resuelve después de las 24 horas de la `Idempotency-Key` viene `null`: léela con\n`GET /v1/fees?client_id=…`.\n","pattern":"^fee_[0-7][0-9a-hjkmnp-tv-z]{25}$","example":"fee_01jxycdc0zf2nxw7n2azer6wqp","isRequired":true,"uniqueKey":"next_fee_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"La cuota del período siguiente, si el estudio la emite por adelantado; `null` si no. En un reintento que\nCraqui resuelve después de las 24 horas de la `Idempotency-Key` viene `null`: léela con\n`GET /v1/fees?client_id=…`.\n","isRequired":true,"uniqueKey":"next_fee_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"next_fee_id","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"example":{"id":"mem_01jq0j5c8vt3ka7xe2n9wfb4dm","object":"membership","livemode":true,"client_id":"cli_01je0mdfx4f3gr5peqyzsj0v2g","membership_plan_id":"mpl_01jt05nvk11xa1zm1pwve2qj7r","status":"active","current_period_start":"2026-12-01T00:00:00-03:00","current_period_end":"2027-01-01T00:00:00-03:00","renews_at":"2027-01-01T00:00:00-03:00","next_credit_date":"2027-01-01","started_at":"2026-12-01T00:00:00-03:00","cancelled_at":null,"suspension_reason":null,"discount":null,"active_freeze_id":null,"created_at":"2026-12-01T11:10:31-03:00","updated_at":"2026-12-01T11:10:31-03:00","first_fee_id":"fee_01jq0j5d2k7rwb4c9tx6mzn3ha","next_fee_id":null},"examples":{"Example":{"title":"Example","value":{"id":"mem_01jq0j5c8vt3ka7xe2n9wfb4dm","object":"membership","livemode":true,"client_id":"cli_01je0mdfx4f3gr5peqyzsj0v2g","membership_plan_id":"mpl_01jt05nvk11xa1zm1pwve2qj7r","status":"active","current_period_start":"2026-12-01T00:00:00-03:00","current_period_end":"2027-01-01T00:00:00-03:00","renews_at":"2027-01-01T00:00:00-03:00","next_credit_date":"2027-01-01","started_at":"2026-12-01T00:00:00-03:00","cancelled_at":null,"suspension_reason":null,"discount":null,"active_freeze_id":null,"created_at":"2026-12-01T11:10:31-03:00","updated_at":"2026-12-01T11:10:31-03:00","first_fee_id":"fee_01jq0j5d2k7rwb4c9tx6mzn3ha","next_fee_id":null}}},"exampleType":"examples"}},"exampleType":"examples"},"5a8a1fbd-21a4-4632-ab3c-30109dd3827f":{"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"},"78da209a-0916-470a-99a2-e39ded8fd947":{"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"},"96dbf8e2-0428-4758-a297-63684bfd7d99":{"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"},"49a4099f-b4f3-4663-82f8-cde02faaec58":{"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"},"c6daafea-de6d-4a18-8a5c-7049215a5a43":{"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"},"5f8602fc-858e-4a1c-bc0a-87e8a8cb6775":{"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"},"e7f901a6-2621-4a9e-a60c-a4fbc7d78ea3":{"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"},"d1858cee-f62d-4283-8d25-72cacf2b9967":{"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":{"d4003d7f-1786-474c-a2c3-b182cbbe63dd":{"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"}},"0e660f2a-0548-4cbc-abfd-4632a03688d1":{"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":["memberships: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":["memberships: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":"Asignar una membresía ya vendida - API de Craqui","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T20:37:26.714Z","originalFileLocation":"estudios/api-reference/memberships/asignar-una-membresía-ya-vendida.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=\"Asigna a un cliente una membresía que vendiste fuera de Craqui, igual que \u0026quot;Asignar membresía\u0026quot; desde Craqui: abre su primer período, carga sus créditos y crea su primera cuota, para registrar el pago con POST /v1/payments. La API no cobra y la membresía empieza hoy (o, en un estudio que renueva todas el mismo día, como diga start_option). first_fee es obligatorio aunque sea 0: tiene que ser la primera cuota que Craqui calcula hoy para ese plan, en la moneda del estudio; si no, responde 409 price_changed con current_price y no asigna nada. Al cliente le llega el aviso de siempre (notify: false lo silencia, con notifications:suppress). Responde 201 con la membresía, su first_fee_id y, si el estudio emite por adelantado la cuota siguiente, su next_fee_id. Con dry_run=true responde 200 con la vista previa: período, créditos y cuotas. Rechazos (409): active_membership_exists, membership_suspended, membership_paused y membership_scheduled (con existing_membership_id), membership_plan_inactive, client_inactive y business_currency_missing; 422 start_option_not_applicable y 422 currency_mismatch. Un cliente o un plan que no es de tu negocio responde 404 not_found. Un reintento con la misma Idempotency-Key nunca crea una segunda membresía ni una segunda cuota, aunque la primera ya haya terminado. Una escritura de plata: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia responde wrong_vertical), solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled si no) y además las escrituras de plata (money_writes_not_enabled si no). Cuenta para el límite de escrituras (30 por minuto) y para el de escrituras de plata (10 por minuto; una vista previa no cuenta para este). Un campo que el cuerpo no declara responde validation_failed con unknown_field. Un reintento con la misma Idempotency-Key, también después de las 24 horas, responde lo que ya se hizo, con Idempotent-Replayed: true.\">\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=\"Asignar una membresía ya vendida - API de Craqui\">\u003cmeta data-mint-head property=\"og:description\" content=\"Asigna a un cliente una membresía que vendiste fuera de Craqui, igual que \u0026quot;Asignar membresía\u0026quot; desde Craqui: abre su primer período, carga sus créditos y crea su primera cuota, para registrar el pago con POST /v1/payments. La API no cobra y la membresía empieza hoy (o, en un estudio que renueva todas el mismo día, como diga start_option). first_fee es obligatorio aunque sea 0: tiene que ser la primera cuota que Craqui calcula hoy para ese plan, en la moneda del estudio; si no, responde 409 price_changed con current_price y no asigna nada. Al cliente le llega el aviso de siempre (notify: false lo silencia, con notifications:suppress). Responde 201 con la membresía, su first_fee_id y, si el estudio emite por adelantado la cuota siguiente, su next_fee_id. Con dry_run=true responde 200 con la vista previa: período, créditos y cuotas. Rechazos (409): active_membership_exists, membership_suspended, membership_paused y membership_scheduled (con existing_membership_id), membership_plan_inactive, client_inactive y business_currency_missing; 422 start_option_not_applicable y 422 currency_mismatch. Un cliente o un plan que no es de tu negocio responde 404 not_found. Un reintento con la misma Idempotency-Key nunca crea una segunda membresía ni una segunda cuota, aunque la primera ya haya terminado. Una escritura de plata: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia responde wrong_vertical), solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled si no) y además las escrituras de plata (money_writes_not_enabled si no). Cuenta para el límite de escrituras (30 por minuto) y para el de escrituras de plata (10 por minuto; una vista previa no cuenta para este). Un campo que el cuerpo no declara responde validation_failed con unknown_field. Un reintento con la misma Idempotency-Key, también después de las 24 horas, responde lo que ya se hizo, con Idempotent-Replayed: true.\">\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/memberships/asignar-una-membresía-ya-vendida\">\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=memberships\u0026amp;title=Asignar+una+membres%C3%ADa+ya+vendida\u0026amp;description=Asigna+a+un+cliente+una+membres%C3%ADa+que+vendiste+fuera+de+Craqui%2C+igual+que+%22Asignar+membres%C3%ADa%22+desde+Craqui%3A+abre+su%0Aprimer+per%C3%ADodo%2C+carga+sus+cr%C3%A9ditos+y+crea+su\u0026amp;theme=176da6da42441ffcb9f627fc\u0026amp;signature=27bbf491b9cc4d4d645bdcb785092c342ea98c27aa7bf35b249f030f4c61d399\">\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=\"Asignar una membresía ya vendida - API de Craqui\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Asigna a un cliente una membresía que vendiste fuera de Craqui, igual que \u0026quot;Asignar membresía\u0026quot; desde Craqui: abre su primer período, carga sus créditos y crea su primera cuota, para registrar el pago con POST /v1/payments. La API no cobra y la membresía empieza hoy (o, en un estudio que renueva todas el mismo día, como diga start_option). first_fee es obligatorio aunque sea 0: tiene que ser la primera cuota que Craqui calcula hoy para ese plan, en la moneda del estudio; si no, responde 409 price_changed con current_price y no asigna nada. Al cliente le llega el aviso de siempre (notify: false lo silencia, con notifications:suppress). Responde 201 con la membresía, su first_fee_id y, si el estudio emite por adelantado la cuota siguiente, su next_fee_id. Con dry_run=true responde 200 con la vista previa: período, créditos y cuotas. Rechazos (409): active_membership_exists, membership_suspended, membership_paused y membership_scheduled (con existing_membership_id), membership_plan_inactive, client_inactive y business_currency_missing; 422 start_option_not_applicable y 422 currency_mismatch. Un cliente o un plan que no es de tu negocio responde 404 not_found. Un reintento con la misma Idempotency-Key nunca crea una segunda membresía ni una segunda cuota, aunque la primera ya haya terminado. Una escritura de plata: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia responde wrong_vertical), solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled si no) y además las escrituras de plata (money_writes_not_enabled si no). Cuenta para el límite de escrituras (30 por minuto) y para el de escrituras de plata (10 por minuto; una vista previa no cuenta para este). Un campo que el cuerpo no declara responde validation_failed con unknown_field. Un reintento con la misma Idempotency-Key, también después de las 24 horas, responde lo que ya se hizo, con Idempotent-Replayed: true.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://craqui.mintlify.site/_mintlify/api/og/v2?division=memberships\u0026amp;title=Asignar+una+membres%C3%ADa+ya+vendida\u0026amp;description=Asigna+a+un+cliente+una+membres%C3%ADa+que+vendiste+fuera+de+Craqui%2C+igual+que+%22Asignar+membres%C3%ADa%22+desde+Craqui%3A+abre+su%0Aprimer+per%C3%ADodo%2C+carga+sus+cr%C3%A9ditos+y+crea+su\u0026amp;theme=176da6da42441ffcb9f627fc\u0026amp;signature=27bbf491b9cc4d4d645bdcb785092c342ea98c27aa7bf35b249f030f4c61d399\">\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/memberships/asignar-una-membresía-ya-vendida\">\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/memberships/asignar-una-membres%C3%ADa-ya-vendida.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/memberships/asignar-una-membres%C3%ADa-ya-vendida#webpage\",\"url\":\"https://docs.craqui.com/estudios/api-reference/memberships/asignar-una-membres%C3%ADa-ya-vendida\",\"name\":\"Asignar una membresía ya vendida\",\"description\":\"Asigna a un cliente una membresía que vendiste fuera de Craqui, igual que \\\"Asignar membresía\\\" desde Craqui: abre su primer período, carga sus créditos y crea su primera cuota, para registrar el pago con POST /v1/payments. La API no cobra y la membresía empieza hoy (o, en un estudio que renueva todas el mismo día, como diga start_option). first_fee es obligatorio aunque sea 0: tiene que ser la primera cuota que Craqui calcula hoy para ese plan, en la moneda del estudio; si no, responde 409 price_changed con current_price y no asigna nada. Al cliente le llega el aviso de siempre (notify: false lo silencia, con notifications:suppress). Responde 201 con la membresía, su first_fee_id y, si el estudio emite por adelantado la cuota siguiente, su next_fee_id. Con dry_run=true responde 200 con la vista previa: período, créditos y cuotas. Rechazos (409): active_membership_exists, membership_suspended, membership_paused y membership_scheduled (con existing_membership_id), membership_plan_inactive, client_inactive y business_currency_missing; 422 start_option_not_applicable y 422 currency_mismatch. Un cliente o un plan que no es de tu negocio responde 404 not_found. Un reintento con la misma Idempotency-Key nunca crea una segunda membresía ni una segunda cuota, aunque la primera ya haya terminado. Una escritura de plata: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia responde wrong_vertical), solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled si no) y además las escrituras de plata (money_writes_not_enabled si no). Cuenta para el límite de escrituras (30 por minuto) y para el de escrituras de plata (10 por minuto; una vista previa no cuenta para este). Un campo que el cuerpo no declara responde validation_failed con unknown_field. Un reintento con la misma Idempotency-Key, también después de las 24 horas, responde lo que ya se hizo, con Idempotent-Replayed: true.\",\"dateModified\":\"2026-11-09T20:37:26.714Z\",\"isPartOf\":{\"@id\":\"https://docs.craqui.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.craqui.com/estudios/api-reference/memberships/asignar-una-membres%C3%ADa-ya-vendida#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.craqui.com/estudios/api-reference/memberships/asignar-una-membres%C3%ADa-ya-vendida#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"memberships\",\"item\":\"https://docs.craqui.com/estudios/api-reference/memberships/listar-membres%C3%ADas\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Asignar una membresía ya vendida\",\"item\":\"https://docs.craqui.com/estudios/api-reference/memberships/asignar-una-membres%C3%ADa-ya-vendida\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.craqui.com/estudios/api-reference/memberships/asignar-una-membres%C3%ADa-ya-vendida#apireference\",\"headline\":\"Asignar una membresía ya vendida\",\"name\":\"Asignar una membresía ya vendida\",\"description\":\"Asigna a un cliente una membresía que vendiste fuera de Craqui, igual que \\\"Asignar membresía\\\" desde Craqui: abre su primer período, carga sus créditos y crea su primera cuota, para registrar el pago con POST /v1/payments. La API no cobra y la membresía empieza hoy (o, en un estudio que renueva todas el mismo día, como diga start_option). first_fee es obligatorio aunque sea 0: tiene que ser la primera cuota que Craqui calcula hoy para ese plan, en la moneda del estudio; si no, responde 409 price_changed con current_price y no asigna nada. Al cliente le llega el aviso de siempre (notify: false lo silencia, con notifications:suppress). Responde 201 con la membresía, su first_fee_id y, si el estudio emite por adelantado la cuota siguiente, su next_fee_id. Con dry_run=true responde 200 con la vista previa: período, créditos y cuotas. Rechazos (409): active_membership_exists, membership_suspended, membership_paused y membership_scheduled (con existing_membership_id), membership_plan_inactive, client_inactive y business_currency_missing; 422 start_option_not_applicable y 422 currency_mismatch. Un cliente o un plan que no es de tu negocio responde 404 not_found. Un reintento con la misma Idempotency-Key nunca crea una segunda membresía ni una segunda cuota, aunque la primera ya haya terminado. Una escritura de plata: lleva Idempotency-Key (salvo con dry_run=true), solo para estudios (en una academia responde wrong_vertical), solo si tu negocio tiene habilitada la escritura por la API (write_access_disabled si no) y además las escrituras de plata (money_writes_not_enabled si no). Cuenta para el límite de escrituras (30 por minuto) y para el de escrituras de plata (10 por minuto; una vista previa no cuenta para este). Un campo que el cuerpo no declara responde validation_failed con unknown_field. Un reintento con la misma Idempotency-Key, también después de las 24 horas, responde lo que ya se hizo, con Idempotent-Replayed: true.\",\"url\":\"https://docs.craqui.com/estudios/api-reference/memberships/asignar-una-membres%C3%ADa-ya-vendida\",\"mainEntityOfPage\":{\"@id\":\"https://docs.craqui.com/estudios/api-reference/memberships/asignar-una-membres%C3%ADa-ya-vendida#webpage\"},\"dateModified\":\"2026-11-09T20:37:26.714Z\",\"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","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","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","description":"Las membresías de los clientes del estudio, de la más nueva a la más vieja. Una membresía anulada o una\ncompra que no se terminó no aparecen.\n\nPaginada por cursor: para sincronizar todo, pide `limit=100` y sigue `next_cursor`.\n\nSolo para estudios: en una academia responde `wrong_vertical`. Un parámetro que la ruta no\ndeclara responde `validation_failed` con `unknown_parameter`.\n","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","description":"Una membresía de un cliente del estudio. Una membresía anulada o una compra que no se terminó responden\n`not_found`.\n\nSolo para estudios: en una academia responde `wrong_vertical`. Un parámetro que la ruta no\ndeclara responde `validation_failed` con `unknown_parameter`.\n","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":"Asignar una membresía ya vendida - 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"]}