External API: Authentication, endpoints, errors, rate limits, and checkout flows. --- # Overview de API externa > Base paths, credenciales y capacidades disponibles en la API pública de WODira. WODira expone dos superficies externas. Si estás leyendo endpoints HTTP, cada operación enlaza también a su método de SDK recomendado en la [referencia de endpoints](/api/endpoints/). ## Organizer API [Sección titulada «Organizer API»](#organizer-api) Base path: `/external/v1/organizer` Usa secret keys `wd_live_...` y está pensada para backends de confianza. Permite leer eventos, consultar pricing y gestionar inscripciones según scopes. Consulta los métodos de [`@wodira/sdk`](/sdks/backend-sdk/). ## Browser API [Sección titulada «Browser API»](#browser-api) Base path: `/external/v1/browser` Usa publishable keys `wpk_live_...` y está pensada para frontend. Permite leer eventos públicos, consultar pricing público y crear Stripe Checkout Sessions para inscripciones. Consulta los métodos de [`@wodira/browser`](/sdks/browser-sdk/). ## Producción [Sección titulada «Producción»](#producción) Origen de producción: ```txt https://api.wodira.app ``` Todas las respuestas no-2xx siguen el formato estándar de errores de la API WODira con `statusCode`, `message` y `error` cuando aplica. --- # External API overview > Base paths, credentials, and capabilities in WODira's public external API. WODira exposes two external API surfaces. If you are reading raw HTTP endpoints, each operation also links to its recommended SDK method in the [endpoint reference](/en/api/endpoints/). ## Organizer API [Section titled “Organizer API”](#organizer-api) Base path: `/external/v1/organizer` Uses secret keys `wd_live_...` and is designed for trusted backends. It can read events, inspect pricing, and manage registrations depending on scopes. See the [`@wodira/sdk` methods](/en/sdks/backend-sdk/). ## Browser API [Section titled “Browser API”](#browser-api) Base path: `/external/v1/browser` Uses publishable keys `wpk_live_...` and is designed for frontend code. It can read public events, inspect public pricing, and create Stripe Checkout Sessions for registrations. See the [`@wodira/browser` methods](/en/sdks/browser-sdk/). ## Production origin [Section titled “Production origin”](#production-origin) ```txt https://api.wodira.app ``` --- # Autenticación > Diferencias entre secret keys y publishable keys. ## Dónde se crean las keys [Sección titulada «Dónde se crean las keys»](#dónde-se-crean-las-keys) Las API keys se crean en WODira desde **Perfil de organización → API**. Necesitas acceder como organizador o miembro con permisos para administrar la organización. 1. Abre WODira y entra en el dashboard de tu organización. 2. Ve a **Perfil de organización**. 3. Abre la pestaña **API**. También puedes llegar con una ruta como `/organizer/{organizationId}/profile?tab=api`. 4. En **Nueva clave**, elige **Secret key (backend)** o **Publishable key (frontend)**. 5. Configura nombre, scopes u orígenes permitidos y pulsa **Crear clave**. 6. Copia la clave completa cuando aparezca. Por seguridad no volverá a mostrarse. Después de crearla, WODira solo muestra el prefijo/últimos caracteres, tipo, permisos, último uso y acciones como revocar. ## Secret keys [Sección titulada «Secret keys»](#secret-keys) Las secret keys empiezan por `wd_live_...` y se envían desde backend: ```bash curl -H "Authorization: Bearer wd_live_..." \ https://api.wodira.app/external/v1/organizer/events/search ``` También se acepta `x-api-key`. ## Publishable keys [Sección titulada «Publishable keys»](#publishable-keys) Las publishable keys empiezan por `wpk_live_...` y se envían desde navegador: ```http x-publishable-key: wpk_live_... Origin: https://organizador.com ``` El backend exige que `Origin` esté en `allowedOrigins` de la clave. ## Reglas importantes [Sección titulada «Reglas importantes»](#reglas-importantes) * Nunca pongas una secret key en JavaScript público. * Las publishable keys pueden estar en frontend, pero solo sirven para endpoints browser. * `successUrl` y `cancelUrl` deben pertenecer a un origin permitido. * Las claves caducadas o revocadas dejan de autenticar inmediatamente. --- # Referencia de endpoints > Resumen operativo de endpoints externos. ## Buscar eventos [Sección titulada «Buscar eventos»](#buscar-eventos) [`@wodira/browser.searchEvents`Listar eventos públicos desde frontend](/sdks/browser-sdk/#searchevents)[`@wodira/sdk.searchEvents`Buscar eventos desde backend](/sdks/backend-sdk/#searchevents) ### Browser API [Sección titulada «Browser API»](#browser-api) ```http POST /external/v1/browser/events/search x-publishable-key: wpk_live_... ``` Body: ```json { "search": "Madrid", "limit": 20, "offset": 0 } ``` ### Organizer API [Sección titulada «Organizer API»](#organizer-api) ```http POST /external/v1/organizer/events/search Authorization: Bearer wd_live_... ``` Permite además filtrar por `status` si la secret key tiene scope `events:read`. ## Detalle de evento [Sección titulada «Detalle de evento»](#detalle-de-evento) [`@wodira/browser.getEvent`Detalle público del evento](/sdks/browser-sdk/#getevent)[`@wodira/sdk.getEvent`Detalle completo server-to-server](/sdks/backend-sdk/#getevent) ```http GET /external/v1/browser/events/event_123 x-publishable-key: wpk_live_... ``` ```http GET /external/v1/organizer/events/event_123 Authorization: Bearer wd_live_... ``` ## Pricing cards [Sección titulada «Pricing cards»](#pricing-cards) [`@wodira/browser.getPricingCards`Categorías y precios públicos](/sdks/browser-sdk/#getpricingcards)[`@wodira/sdk.getPricingCards`Categorías, cupos y precios desde backend](/sdks/backend-sdk/#getpricingcards) ```http GET /external/v1/browser/events/event_123/pricing-cards x-publishable-key: wpk_live_... ``` Devuelve categorías, cupo, inscritos, precio base, precio activo y tiers. ```http GET /external/v1/organizer/events/event_123/pricing-cards Authorization: Bearer wd_live_... ``` ## Checkout summary [Sección titulada «Checkout summary»](#checkout-summary) [`@wodira/browser.getRegistrationSummary`Resumen reactivo antes de pagar](/sdks/browser-sdk/#getregistrationsummary) ```http POST /external/v1/browser/checkout/registration/summary x-publishable-key: wpk_live_... ``` ```json { "categoryId": "cat_123", "purchaserEmail": "buyer@example.com", "selectedSupplementIds": ["supp_123"], "promocode": "EARLY" } ``` ## Checkout session [Sección titulada «Checkout session»](#checkout-session) [`@wodira/browser.createRegistrationCheckoutSession`Crear Stripe Checkout Session](/sdks/browser-sdk/#createregistrationcheckoutsession) ```http POST /external/v1/browser/checkout/registration/session x-publishable-key: wpk_live_... ``` ```json { "eventId": "event_123", "categoryId": "cat_123", "purchaserEmail": "buyer@example.com", "purchaserName": "Buyer Name", "teamName": "Team Name", "termsAccepted": true, "waiversAccepted": { "waiver_123": true }, "idempotencyKey": "checkout_123", "successUrl": "https://organizador.com/gracias", "cancelUrl": "https://organizador.com/cancelado", "athletes": [ { "fullname": "Ada Lovelace", "email": "ada@example.com", "phone": "+34600000000", "idNumber": "12345678A", "gender": "FEMALE", "birthDate": "1990-01-01" } ] } ``` La respuesta incluye `sessionId` y `sessionUrl`; redirige a `sessionUrl` para abrir Stripe Checkout. ## Inscripciones server-to-server [Sección titulada «Inscripciones server-to-server»](#inscripciones-server-to-server) Usa la Organizer API solo desde backend. [`@wodira/sdk.createRegistration`Crear inscripción](/sdks/backend-sdk/#createregistration)[`@wodira/sdk.searchRegistrations`Buscar inscripciones](/sdks/backend-sdk/#searchregistrations)[`@wodira/sdk.updateRegistration`Actualizar inscripción](/sdks/backend-sdk/#updateregistration)[`@wodira/sdk.deleteRegistration`Cancelar/eliminar inscripción](/sdks/backend-sdk/#deleteregistration) | Método | Ruta completa | Scope | | -------- | ------------------------------------------------ | --------------------- | | `POST` | `/external/v1/organizer/registrations` | `registrations:write` | | `POST` | `/external/v1/organizer/registrations/search` | `registrations:read` | | `PATCH` | `/external/v1/organizer/registrations/:ticketId` | `registrations:write` | | `DELETE` | `/external/v1/organizer/registrations/:ticketId` | `registrations:write` | --- # Errores, rate limits e idempotencia > Cómo manejar errores y reintentos seguros. ## Errores [Sección titulada «Errores»](#errores) Los SDKs lanzan errores tipados: * `WodiraApiError` en `@wodira/sdk`. * `WodiraBrowserApiError` en `@wodira/browser`. Ambos incluyen `status`, `statusText` y `payload`. ```ts try { await wodira.getEvent('event_missing'); } catch (error) { if (error instanceof WodiraBrowserApiError) { console.error(error.status, error.payload); } } ``` ## Rate limits [Sección titulada «Rate limits»](#rate-limits) La creación de Checkout Session con publishable keys tiene rate limit por key y por IP. Si recibes `429`, espera antes de reintentar. ## Idempotencia [Sección titulada «Idempotencia»](#idempotencia) Envía `idempotencyKey` al crear una Checkout Session desde navegador. Reutiliza la misma clave para reintentos de la misma intención de compra. ```ts idempotencyKey: crypto.randomUUID(); ``` --- # Publishable keys y Browser API > Endpoints frontend disponibles con `wpk_live_...`. Usa publishable keys en webs públicas de organizadores. ## Crear una publishable key en WODira [Sección titulada «Crear una publishable key en WODira»](#crear-una-publishable-key-en-wodira) Usa publishable keys para código frontend. Son seguras para exponer en navegador solo porque WODira valida el `Origin` y limita estas claves a endpoints browser. 1. En WODira, entra en **Perfil de organización → API**. 2. En **Nueva clave**, selecciona **Publishable key (frontend)**. 3. Escribe un nombre reconocible, por ejemplo `web oficial producción`. 4. En **Orígenes permitidos**, añade un dominio por línea: ```txt https://organizador.com https://www.organizador.com ``` 5. Para desarrollo local puedes usar `http://localhost:4200` o el puerto de tu app local. No uses `http://` en producción. 6. Opcionalmente añade fecha de caducidad. 7. Pulsa **Crear clave** y copia la clave `wpk_live_...` inmediatamente. Guárdala en la configuración pública de tu frontend, por ejemplo en variables de entorno de build. No te da acceso a endpoints backend ni a datos privados de la organización. ## Validaciones de seguridad [Sección titulada «Validaciones de seguridad»](#validaciones-de-seguridad) 1. La clave empieza por `wpk_live_...`. 2. La clave no está revocada ni caducada. 3. La cabecera `Origin` es obligatoria. 4. El origin debe estar en `allowedOrigins`. 5. `successUrl` y `cancelUrl` deben pertenecer a un origin permitido. 6. Solo se exponen eventos y categorías publicados y no privados. ## Endpoints [Sección titulada «Endpoints»](#endpoints) | Método | Ruta | Método SDK | | ------ | -------------------------------- | ------------------------------------------------------------------------------------------- | | `POST` | `/events/search` | [`searchEvents`](/sdks/browser-sdk/#searchevents) | | `GET` | `/events/:eventId` | [`getEvent`](/sdks/browser-sdk/#getevent) | | `GET` | `/events/:eventId/pricing-cards` | [`getPricingCards`](/sdks/browser-sdk/#getpricingcards) | | `POST` | `/checkout/registration/summary` | [`getRegistrationSummary`](/sdks/browser-sdk/#getregistrationsummary) | | `POST` | `/checkout/registration/session` | [`createRegistrationCheckoutSession`](/sdks/browser-sdk/#createregistrationcheckoutsession) | ## Checkout directo a Stripe [Sección titulada «Checkout directo a Stripe»](#checkout-directo-a-stripe) La web externa recibe `sessionUrl` y redirige directamente a Stripe Checkout. WODira confirma la inscripción mediante webhooks de Stripe. --- # Secret keys y Organizer API > Endpoints backend disponibles con `wd_live_...`. Usa secret keys para integraciones server-to-server. ## Crear una secret key en WODira [Sección titulada «Crear una secret key en WODira»](#crear-una-secret-key-en-wodira) Usa secret keys solo en backends de confianza. Nunca las incluyas en bundles frontend, HTML, apps móviles públicas ni repositorios. 1. En WODira, entra en **Perfil de organización → API**. 2. En **Nueva clave**, selecciona **Secret key (backend)**. 3. Escribe un nombre reconocible, por ejemplo `backend producción` o `sync CRM`. 4. Selecciona solo los scopes necesarios para esa integración. 5. Opcionalmente añade fecha de caducidad. 6. Pulsa **Crear clave**. 7. Copia la clave `wd_live_...` inmediatamente y guárdala en un secret manager o variable de entorno. Ejemplo recomendado: ```bash WODIRA_API_KEY=wd_live_... ``` Si una secret key se filtra o ya no se usa, revócala desde **Claves existentes** y crea una nueva. ## Scopes [Sección titulada «Scopes»](#scopes) | Scope | Permiso | | --------------------- | -------------------------------------------------------------------------- | | `events:read` | Leer eventos, categorías, campos, waivers, sponsors y suplementos activos. | | `pricing:read` | Leer cards de tarifas, cupos y precio activo. | | `registrations:read` | Buscar inscripciones. | | `registrations:write` | Crear, actualizar y cancelar inscripciones. | ## Endpoints [Sección titulada «Endpoints»](#endpoints) | Método | Ruta | Scope | Método SDK | | -------- | -------------------------------- | --------------------- | --------------------------------------------------------------- | | `POST` | `/events/search` | `events:read` | [`searchEvents`](/sdks/backend-sdk/#searchevents) | | `GET` | `/events/:eventId` | `events:read` | [`getEvent`](/sdks/backend-sdk/#getevent) | | `GET` | `/events/:eventId/pricing-cards` | `pricing:read` | [`getPricingCards`](/sdks/backend-sdk/#getpricingcards) | | `POST` | `/registrations` | `registrations:write` | [`createRegistration`](/sdks/backend-sdk/#createregistration) | | `POST` | `/registrations/search` | `registrations:read` | [`searchRegistrations`](/sdks/backend-sdk/#searchregistrations) | | `PATCH` | `/registrations/:ticketId` | `registrations:write` | [`updateRegistration`](/sdks/backend-sdk/#updateregistration) | | `DELETE` | `/registrations/:ticketId` | `registrations:write` | [`deleteRegistration`](/sdks/backend-sdk/#deleteregistration) | ## Ejemplo [Sección titulada «Ejemplo»](#ejemplo) ```ts import { createWodiraClient } from '@wodira/sdk'; const wodira = createWodiraClient({ apiKey: process.env.WODIRA_API_KEY! }); const events = await wodira.searchEvents({ status: 'PUBLISHED', limit: 20 }); ``` --- # Authentication > Secret keys versus publishable keys. ## Where keys are created [Section titled “Where keys are created”](#where-keys-are-created) API keys are created in WODira under **Organization profile → API**. You must sign in as an organizer or as a member with permission to manage the organization. 1. Open WODira and enter your organization dashboard. 2. Go to **Organization profile**. 3. Open the **API** tab. You can also use a route such as `/organizer/{organizationId}/profile?tab=api`. 4. In **New key**, choose **Secret key (backend)** or **Publishable key (frontend)**. 5. Configure the name, scopes or allowed origins, then click **Create key**. 6. Copy the full key when it appears. For security, it will not be shown again. After creation, WODira only shows the prefix/last characters, type, permissions, last use, and actions such as revoke. ## Secret keys [Section titled “Secret keys”](#secret-keys) Secret keys start with `wd_live_...` and are sent from backends: ```bash curl -H "Authorization: Bearer wd_live_..." \ https://api.wodira.app/external/v1/organizer/events/search ``` `x-api-key` is also accepted. ## Publishable keys [Section titled “Publishable keys”](#publishable-keys) Publishable keys start with `wpk_live_...` and are sent from browsers: ```http x-publishable-key: wpk_live_... Origin: https://organizer.com ``` The backend requires `Origin` to match one of the key’s `allowedOrigins`. ## Rules [Section titled “Rules”](#rules) * Never expose a secret key in public JavaScript. * Publishable keys only work with browser endpoints. * `successUrl` and `cancelUrl` must belong to an allowed origin. * Revoked or expired keys stop authenticating immediately. --- # Endpoint reference > Operational summary of external endpoints. ## Search events [Section titled “Search events”](#search-events) [`@wodira/browser.searchEvents`List public events from the frontend](/en/sdks/browser-sdk/#searchevents)[`@wodira/sdk.searchEvents`Search events from a backend](/en/sdks/backend-sdk/#searchevents) ### Browser API [Section titled “Browser API”](#browser-api) ```http POST /external/v1/browser/events/search x-publishable-key: wpk_live_... ``` ```json { "search": "Madrid", "limit": 20, "offset": 0 } ``` ### Organizer API [Section titled “Organizer API”](#organizer-api) ```http POST /external/v1/organizer/events/search Authorization: Bearer wd_live_... ``` Also supports `status` filters when the secret key has the `events:read` scope. ## Event details [Section titled “Event details”](#event-details) [`@wodira/browser.getEvent`Public event detail](/en/sdks/browser-sdk/#getevent)[`@wodira/sdk.getEvent`Full server-to-server event detail](/en/sdks/backend-sdk/#getevent) ```http GET /external/v1/browser/events/event_123 x-publishable-key: wpk_live_... ``` ```http GET /external/v1/organizer/events/event_123 Authorization: Bearer wd_live_... ``` ## Pricing cards [Section titled “Pricing cards”](#pricing-cards) [`@wodira/browser.getPricingCards`Public categories and prices](/en/sdks/browser-sdk/#getpricingcards)[`@wodira/sdk.getPricingCards`Categories, quotas, and prices from a backend](/en/sdks/backend-sdk/#getpricingcards) ```http GET /external/v1/browser/events/event_123/pricing-cards x-publishable-key: wpk_live_... ``` Returns categories, quotas, registrations, base price, active price, and tiers. ```http GET /external/v1/organizer/events/event_123/pricing-cards Authorization: Bearer wd_live_... ``` ## Checkout summary [Section titled “Checkout summary”](#checkout-summary) [`@wodira/browser.getRegistrationSummary`Reactive summary before payment](/en/sdks/browser-sdk/#getregistrationsummary) ```http POST /external/v1/browser/checkout/registration/summary x-publishable-key: wpk_live_... ``` ```json { "categoryId": "cat_123", "purchaserEmail": "buyer@example.com", "selectedSupplementIds": ["supp_123"], "promocode": "EARLY" } ``` ## Checkout session [Section titled “Checkout session”](#checkout-session) [`@wodira/browser.createRegistrationCheckoutSession`Create a Stripe Checkout Session](/en/sdks/browser-sdk/#createregistrationcheckoutsession) ```http POST /external/v1/browser/checkout/registration/session x-publishable-key: wpk_live_... ``` ```json { "eventId": "event_123", "categoryId": "cat_123", "purchaserEmail": "buyer@example.com", "purchaserName": "Buyer Name", "teamName": "Team Name", "termsAccepted": true, "waiversAccepted": { "waiver_123": true }, "idempotencyKey": "checkout_123", "successUrl": "https://organizer.com/success", "cancelUrl": "https://organizer.com/cancel", "athletes": [ { "fullname": "Ada Lovelace", "email": "ada@example.com", "phone": "+34600000000", "idNumber": "12345678A", "gender": "FEMALE", "birthDate": "1990-01-01" } ] } ``` The response includes `sessionId` and `sessionUrl`; redirect to `sessionUrl` to open Stripe Checkout. ## Server-to-server registrations [Section titled “Server-to-server registrations”](#server-to-server-registrations) Use the Organizer API only from a backend. [`@wodira/sdk.createRegistration`Create a registration](/en/sdks/backend-sdk/#createregistration)[`@wodira/sdk.searchRegistrations`Search registrations](/en/sdks/backend-sdk/#searchregistrations)[`@wodira/sdk.updateRegistration`Update a registration](/en/sdks/backend-sdk/#updateregistration)[`@wodira/sdk.deleteRegistration`Cancel/delete a registration](/en/sdks/backend-sdk/#deleteregistration) | Method | Full path | Scope | | -------- | ------------------------------------------------ | --------------------- | | `POST` | `/external/v1/organizer/registrations` | `registrations:write` | | `POST` | `/external/v1/organizer/registrations/search` | `registrations:read` | | `PATCH` | `/external/v1/organizer/registrations/:ticketId` | `registrations:write` | | `DELETE` | `/external/v1/organizer/registrations/:ticketId` | `registrations:write` | --- # Errors, rate limits, and idempotency > How to handle failures and safe retries. ## Errors [Section titled “Errors”](#errors) SDKs throw typed errors: * `WodiraApiError` in `@wodira/sdk`. * `WodiraBrowserApiError` in `@wodira/browser`. Both include `status`, `statusText`, and `payload`. ## Rate limits [Section titled “Rate limits”](#rate-limits) Creating Checkout Sessions with publishable keys is rate-limited per key and IP. If you receive `429`, wait before retrying. ## Idempotency [Section titled “Idempotency”](#idempotency) Send `idempotencyKey` when creating a browser Checkout Session. Reuse the same key for retries of the same purchase intent. --- # Publishable keys and Browser API > Frontend endpoints available with `wpk_live_...`. Use publishable keys in public organizer websites. ## Create a publishable key in WODira [Section titled “Create a publishable key in WODira”](#create-a-publishable-key-in-wodira) Use publishable keys for frontend code. They can be exposed in the browser because WODira validates the `Origin` and limits these keys to browser endpoints. 1. In WODira, go to **Organization profile → API**. 2. In **New key**, select **Publishable key (frontend)**. 3. Add a recognizable name, for example `official website production`. 4. In **Allowed origins**, add one domain per line: ```txt https://organizer.com https://www.organizer.com ``` 5. For local development, you can use `http://localhost:4200` or the port of your local app. Do not use `http://` in production. 6. Optionally set an expiration date. 7. Click **Create key** and copy the `wpk_live_...` key immediately. Store it in your frontend public configuration, for example build-time environment variables. It does not grant access to backend endpoints or private organization data. ## Security checks [Section titled “Security checks”](#security-checks) 1. The key starts with `wpk_live_...`. 2. The key is not revoked or expired. 3. The `Origin` header is required. 4. The origin must be in `allowedOrigins`. 5. `successUrl` and `cancelUrl` must belong to an allowed origin. 6. Only public, published events and categories are exposed. ## Endpoints [Section titled “Endpoints”](#endpoints) | Method | Path | SDK method | | ------ | -------------------------------- | ---------------------------------------------------------------------------------------------- | | `POST` | `/events/search` | [`searchEvents`](/en/sdks/browser-sdk/#searchevents) | | `GET` | `/events/:eventId` | [`getEvent`](/en/sdks/browser-sdk/#getevent) | | `GET` | `/events/:eventId/pricing-cards` | [`getPricingCards`](/en/sdks/browser-sdk/#getpricingcards) | | `POST` | `/checkout/registration/summary` | [`getRegistrationSummary`](/en/sdks/browser-sdk/#getregistrationsummary) | | `POST` | `/checkout/registration/session` | [`createRegistrationCheckoutSession`](/en/sdks/browser-sdk/#createregistrationcheckoutsession) | --- # Secret keys and Organizer API > Backend endpoints available with `wd_live_...`. Use secret keys for server-to-server integrations. ## Create a secret key in WODira [Section titled “Create a secret key in WODira”](#create-a-secret-key-in-wodira) Use secret keys only in trusted backends. Never include them in frontend bundles, HTML, public mobile apps, or repositories. 1. In WODira, go to **Organization profile → API**. 2. In **New key**, select **Secret key (backend)**. 3. Add a recognizable name, for example `production backend` or `CRM sync`. 4. Select only the scopes required by that integration. 5. Optionally set an expiration date. 6. Click **Create key**. 7. Copy the `wd_live_...` key immediately and store it in a secret manager or environment variable. Recommended example: ```bash WODIRA_API_KEY=wd_live_... ``` If a secret key leaks or is no longer used, revoke it from **Existing keys** and create a new one. ## Scopes [Section titled “Scopes”](#scopes) | Scope | Permission | | --------------------- | -------------------------------------------------------------------------------- | | `events:read` | Read events, categories, form fields, waivers, sponsors, and active supplements. | | `pricing:read` | Read pricing cards, quotas, and active prices. | | `registrations:read` | Search registrations. | | `registrations:write` | Create, update, and cancel registrations. | ## Endpoints [Section titled “Endpoints”](#endpoints) | Method | Path | Scope | SDK method | | -------- | -------------------------------- | --------------------- | ------------------------------------------------------------------ | | `POST` | `/events/search` | `events:read` | [`searchEvents`](/en/sdks/backend-sdk/#searchevents) | | `GET` | `/events/:eventId` | `events:read` | [`getEvent`](/en/sdks/backend-sdk/#getevent) | | `GET` | `/events/:eventId/pricing-cards` | `pricing:read` | [`getPricingCards`](/en/sdks/backend-sdk/#getpricingcards) | | `POST` | `/registrations` | `registrations:write` | [`createRegistration`](/en/sdks/backend-sdk/#createregistration) | | `POST` | `/registrations/search` | `registrations:read` | [`searchRegistrations`](/en/sdks/backend-sdk/#searchregistrations) | | `PATCH` | `/registrations/:ticketId` | `registrations:write` | [`updateRegistration`](/en/sdks/backend-sdk/#updateregistration) | | `DELETE` | `/registrations/:ticketId` | `registrations:write` | [`deleteRegistration`](/en/sdks/backend-sdk/#deleteregistration) |