{
  "openapi": "3.1.0",
  "info": {
    "title": "Davi API",
    "description": "The Davi API covers organizations, memberships, activities, rewards, cards,\nwallets and contacts.\n\n## Surfaces\n\n| Base path | What it is |\n|---|---|\n| `/api/v1` | The API. Everything an integration needs. |\n| `/oauth2` | The authorization server \u2014 authentication, discovery, scope metadata. |\n\nPaths outside these two are not part of the published API. They serve Davi's\nown applications, change without notice, and are not reachable with\nthird-party credentials.\n\n## Authentication\n\nEvery request carries an OAuth2 bearer token:\n\n```\nAuthorization: Bearer <access_token>\n```\n\nThe authorization server is at `/oauth2` and describes itself at\n`/oauth2/.well-known/openid-configuration`, including the full list of scopes\nit will issue. Three grants are available:\n\n- **`authorization_code`** (with PKCE, required for every client) \u2014 acting on\n  behalf of a user.\n- **`client_credentials`** \u2014 acting as your own application, with no user.\n- **`urn:ietf:params:oauth:grant-type:token-exchange`** \u2014 exchanging a user\n  token for one scoped to a specific organization. The subject token must be\n  one issued to your own client.\n\n`/oauth2/scopes` returns human-readable descriptions for a set of scope names,\nand `/oauth2/client-info` returns an application's name and icon. Both are\nunauthenticated, so a consent screen can render before anyone has signed in.\n\n### Token lifetime\n\nAccess tokens are short-lived. Treat `expires_in` on the token response as\nauthoritative rather than assuming a duration.\n\n**Refresh tokens rotate.** Every refresh returns a new refresh token and\nretires the one you sent. Two consequences:\n\n- Store the new refresh token from every refresh response. Keeping the\n  original will log the user out at its next use.\n- **Presenting an already-used refresh token revokes the entire session**, not\n  just that token. A replayed refresh token is treated as a stolen one. If your\n  client can refresh from more than one place at once, serialize it \u2014\n  concurrent refreshes race, and the loser's token is a replay.\n\nRevoking a token through `/oauth2/revoke` ends the session it belongs to.\n\n## Scopes\n\nA scope answers \"what did the user let this application do?\". That is a\ndifferent question from \"what may this user do?\", which is decided by their\nrole in the organization that owns the resource.\n\nBoth have to allow an action. A token missing a scope is refused even when the\nuser could perform the action themselves, and holding a scope grants nothing\non a resource the user has no role in. Request every scope your integration\nneeds at authorization time; a scope you did not ask for is not one you can\nfall back on later.\n\n## Pagination\n\nList endpoints take `page` (from 1) and `page_size` (up to 100), and return:\n\n```json\n{\n  \"total_items\": 137,\n  \"total_pages\": 7,\n  \"current_page\": 1,\n  \"items\": []\n}\n```\n\n## Errors\n\nErrors carry a machine-readable `code`, a human-readable `message`, and an\n`errors` map keyed by the field at fault \u2014 `_root` when the failure is not\ntied to one field:\n\n```json\n{\n  \"code\": \"validation_error\",\n  \"message\": \"Invalid email\",\n  \"errors\": { \"email\": \"Invalid email\" }\n}\n```\n\nStatus codes follow the usual meanings: `400` malformed, `401` unauthenticated,\n`403` authenticated but not permitted, `404` absent or not yours, `409`\nconflicts with existing state, `422` failed validation.\n\n## Rate limits\n\nEvery request is charged to one of four buckets. Requests are counted over a\nsliding window, so an allowance refills continuously rather than resetting on\nthe minute.\n\n| Bucket | Limit | What falls in it |\n|---|---|---|\n| `read` | 300/minute | `GET`, `HEAD`, `OPTIONS` |\n| `write` | 60/minute | Every other method |\n| `expensive` | 20/minute | Ledger writes, outbound calls, search, bulk assign, claim |\n| `unauthenticated` | 30/minute | Requests with no token, counted per IP and per path |\n\nThe authenticated buckets are keyed on **user and application together**, so\nyour integration's traffic never competes with another application the same\nuser has authorized.\n\nA few endpoints carry their own tighter limits \u2014 the OAuth2 token endpoint and\nwallet transaction signing among them. Where both apply, the tighter one\ndecides.\n\nBulk endpoints are charged per item rather than per call: assigning 50 cards in\none request spends 50 of the `expensive` allowance.\n\nEvery response states where you stand, so a client can pace itself without\nhaving to hit the limit first:\n\n```\nRateLimit-Limit: 300\nRateLimit-Remaining: 297\nRateLimit-Reset: 60\nRateLimit-Policy: 300;w=60\n```\n\nThe same values are also sent under the older `X-RateLimit-*` names.\n\nExceeding a limit returns `429` with `code: \"rate_limit_exceeded\"` in the\nstandard error envelope, and a `Retry-After` header in seconds. Wait for it\nrather than retrying immediately.\n\n## Retries\n\nThere is no general `Idempotency-Key` header. **Treat a write whose response\nyou did not receive as having an unknown outcome**: re-read the resource rather\nthan repeating the write, unless an endpoint documents itself as safe to\nrepeat. Some operations deduplicate server-side \u2014 attendance check-in and\nwallet transfers among them \u2014 but that is a property of those endpoints, not a\nrule that holds across the API.\n\nA `429` is not a failed write \u2014 the request was refused before it ran. Retry it\nafter the delay in `Retry-After`.\n\n## Stability\n\n**`v1` is a preview.** The path carries a version, but no stability guarantee\nhas been made for it yet: the surface is still being completed, and a breaking\nchange may still land in `v1` until one is. Once the guarantee is made, breaking\nchanges go to a new version instead.\n\nBuild against it, but expect to be told about a change rather than to discover\nit. Known consumers are notified before a breaking change ships.\n\nEither way, these are not breaking changes and a client has to tolerate them:\n\n- **New fields appear in responses.** Ignore what you do not recognize rather\n  than rejecting the payload.\n- **New optional request fields, query parameters and enum values appear.**\n  Treat an unfamiliar enum value as unknown rather than as an error.\n- **New endpoints appear**, including new methods on paths you already use.\n- **Field order is not meaningful** anywhere, including in list results without\n  an explicit sort.",
    "version": "1.0.0-preview"
  },
  "paths": {
    "/health/live": {
      "get": {
        "tags": [
          "health"
        ],
        "summary": "Liveness",
        "description": "Liveness probe \u2014 returns 200 if the process is running.",
        "operationId": "liveness_health_live_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/health/ready": {
      "get": {
        "tags": [
          "health"
        ],
        "summary": "Readiness",
        "description": "Readiness probe \u2014 checks DB and Redis connectivity.",
        "operationId": "readiness_health_ready_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/files/{bucket}/{storage_key}": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "Serve File",
        "operationId": "serve_file_files__bucket___storage_key__get",
        "parameters": [
          {
            "name": "bucket",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Bucket"
            }
          },
          {
            "name": "storage_key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Storage Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/webhooks/in/payments/{backend}/{connection_uuid}": {
      "post": {
        "tags": [
          "inbound-webhooks",
          "inbound-webhooks"
        ],
        "summary": "Receive Payment Webhook",
        "operationId": "receive_payment_webhook_webhooks_in_payments__backend___connection_uuid__post",
        "parameters": [
          {
            "name": "backend",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Backend"
            }
          },
          {
            "name": "connection_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Connection Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/webhooks/in/viber": {
      "post": {
        "tags": [
          "inbound-webhooks",
          "inbound-webhooks"
        ],
        "summary": "Viber Webhook",
        "description": "Acknowledge Viber channel callbacks (verification + events) with 200.\n\nPublic + unauthenticated by design: Viber's servers call it. Nothing here\ntrusts or acts on the body, so there is no state to protect \u2014 the channel\ntoken (held server-side) is what authorizes posting.",
        "operationId": "viber_webhook_webhooks_in_viber_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Viber Webhook Webhooks In Viber Post"
                }
              }
            }
          }
        }
      }
    },
    "/oauth2/authorize": {
      "get": {
        "tags": [
          "oauth2",
          "oauth2"
        ],
        "summary": "Authorize",
        "description": "OAuth2 Authorization Endpoint.\n\nInitiates the authorization code flow. If the user is authenticated\nand has granted consent (or client is first-party), redirects with\nan authorization code. Otherwise, returns information for consent UI.",
        "operationId": "authorize_oauth2_authorize_get",
        "parameters": [
          {
            "name": "response_type",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 32,
              "title": "Response Type"
            }
          },
          {
            "name": "client_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "title": "Client Id"
            }
          },
          {
            "name": "redirect_uri",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 2048,
              "title": "Redirect Uri"
            }
          },
          {
            "name": "scope",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 1024
                },
                {
                  "type": "null"
                }
              ],
              "title": "Scope"
            }
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 512
                },
                {
                  "type": "null"
                }
              ],
              "title": "State"
            }
          },
          {
            "name": "code_challenge",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "Code Challenge"
            }
          },
          {
            "name": "code_challenge_method",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 16
                },
                {
                  "type": "null"
                }
              ],
              "title": "Code Challenge Method"
            }
          },
          {
            "name": "nonce",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 256
                },
                {
                  "type": "null"
                }
              ],
              "title": "Nonce"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/oauth2/authorize/consent": {
      "post": {
        "tags": [
          "oauth2",
          "oauth2"
        ],
        "summary": "Authorize Consent",
        "description": "Handle consent form submission.\n\nCalled by frontend after user approves or denies consent.",
        "operationId": "authorize_consent_oauth2_authorize_consent_post",
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Body_authorize_consent_oauth2_authorize_consent_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/oauth2/token": {
      "post": {
        "tags": [
          "oauth2",
          "oauth2"
        ],
        "summary": "Token",
        "description": "OAuth2 Token Endpoint.\n\nSupports:\n- authorization_code: Exchange code for tokens\n- refresh_token: Refresh access token",
        "operationId": "token_oauth2_token_post",
        "parameters": [
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Body_token_oauth2_token_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuth2TokenResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/oauth2/introspect": {
      "post": {
        "tags": [
          "oauth2",
          "oauth2"
        ],
        "summary": "Introspect",
        "description": "Token Introspection Endpoint (RFC 7662).\n\nAllows clients (typically resource servers) to validate tokens.",
        "operationId": "introspect_oauth2_introspect_post",
        "parameters": [
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Body_introspect_oauth2_introspect_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuth2IntrospectResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/oauth2/revoke": {
      "post": {
        "tags": [
          "oauth2",
          "oauth2"
        ],
        "summary": "Revoke",
        "description": "Token Revocation Endpoint (RFC 7009).\n\nRevokes an access or refresh token.",
        "operationId": "revoke_oauth2_revoke_post",
        "parameters": [
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Body_revoke_oauth2_revoke_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/oauth2/.well-known/jwks.json": {
      "get": {
        "tags": [
          "oauth2",
          "oauth2"
        ],
        "summary": "Jwks",
        "description": "JSON Web Key Set endpoint.\n\nReturns the public keys used to verify ID tokens and other JWTs.",
        "operationId": "jwks_oauth2__well_known_jwks_json_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/oauth2/.well-known/openid-configuration": {
      "get": {
        "tags": [
          "oauth2",
          "oauth2"
        ],
        "summary": "Openid Configuration",
        "description": "OpenID Connect Discovery document.\n\nReturns the OAuth2/OIDC server configuration.\n\nEvery URL here is built from the configured issuer, never from the path the\nrequest arrived on. The router is reachable at more than one prefix \u2014 the\ncanonical `/oauth2` mount plus two deprecated aliases \u2014 and OIDC requires\nthe discovery `issuer` to equal the `iss` claim of an id_token exactly. A\npath-derived issuer makes that impossible: it says something different\ndepending on which prefix a client happened to use, and at most one of\nthose can match what the tokens actually carry.",
        "operationId": "openid_configuration_oauth2__well_known_openid_configuration_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OIDCDiscoveryDocument"
                }
              }
            }
          }
        }
      }
    },
    "/oauth2/userinfo": {
      "get": {
        "tags": [
          "oauth2",
          "oauth2"
        ],
        "summary": "Oauth2 Userinfo",
        "description": "OIDC UserInfo endpoint.\n\nReturns user information based on granted scopes.\n\nDeliberately *not* registered on this router: UserInfo is an OIDC endpoint\nand belongs on the OAuth2 mount, next to the discovery document that\nadvertises it. `router_oauth2` registers this same function at\n`/oauth2/userinfo`. Defined here because it is auth-user identity, and to\nkeep the OAuth2 router free of a second `get_current_auth_context` import\ncycle.",
        "operationId": "oauth2_userinfo_oauth2_userinfo_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oauth2/scopes": {
      "get": {
        "tags": [
          "oauth2",
          "scopes"
        ],
        "summary": "Get Scope Metadata",
        "description": "Get grouped scope metadata for consent screen.\n\nGroups scopes by category and provides appropriate consent descriptions\nbased on the level of access requested. Scopes with requires_ownership=True\nare flagged as requiring resource-level access (vs personal resources).",
        "operationId": "get_scope_metadata_oauth2_scopes_get",
        "parameters": [
          {
            "name": "scopes",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Space-separated list of scope names",
              "title": "Scopes"
            },
            "description": "Space-separated list of scope names"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScopeGroupsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/oauth2/client-info": {
      "get": {
        "tags": [
          "oauth2",
          "scopes"
        ],
        "summary": "Get Client Info",
        "description": "Get OAuth app details for consent pages and login banners.\n\nUnauthenticated endpoint. Returns app info with icon (fallback to org logo),\norganization details, and optionally scope groups.",
        "operationId": "get_client_info_oauth2_client_info_get",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "OAuth2 client_id",
              "title": "Client Id"
            },
            "description": "OAuth2 client_id"
          },
          {
            "name": "with_scopes",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "With Scopes"
            }
          },
          {
            "name": "scopes",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Scopes"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthClientInfoResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reward/{slug}": {
      "get": {
        "tags": [
          "public_rewards"
        ],
        "summary": "Get Reward Instance",
        "description": "Resolve an issued reward's manifest by its public slug.\n\nThis URL is written into every issued reward as its `manifest_url` and\nresolved by whoever holds the reward, so it lives at the root rather than\nunder `/api/v1` and is not versioned.\n\nReturns the reward's `slug`, `issued_at` and `content`.\n\nA reward issued with an access key is refused without it: present the key as\n`Authorization: Bearer <access_key>`. A missing or wrong key answers `403`,\nan unknown slug `404`. Rewards issued without a key need no header.",
        "operationId": "get_reward_instance_reward__slug__get",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Slug"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The reward's manifest",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/users/me": {
      "get": {
        "tags": [
          "current-user"
        ],
        "summary": "Get Current User",
        "description": "Get the currently authenticated user.",
        "operationId": "get_current_user_api_v1_users_me_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentUserResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/profiles": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "List My Profiles",
        "description": "List the profiles the caller owns.\n\nBounded by how many profiles a person can own, so it returns one page.",
        "operationId": "list_my_profiles_api_v1_profiles_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_OwnedProfileSummary_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/profiles/me": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get My Profile",
        "description": "Get the caller's own profile.\n\nA locked profile is returned rather than suppressed, so the owner's UI can\nrender the locked shell. The public read of the same profile hides it.",
        "operationId": "get_my_profile_api_v1_profiles_me_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileDataResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "users"
        ],
        "summary": "Update My Profile",
        "description": "Update the caller's profile (partial update).",
        "operationId": "update_my_profile_api_v1_profiles_me_patch",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProfileDataRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/profiles/public/count": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Count Public Profiles",
        "description": "Count publicly-indexable profiles (claimed, has a username, not locked).\n\nPowers the sitemap index: the generator divides this by its page size to\nknow how many sub-sitemaps to emit, without fetching every profile.",
        "operationId": "count_public_profiles_api_v1_profiles_public_count_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicProfileCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/profiles/public": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "List Public Profiles",
        "description": "One page of publicly-indexable profile usernames for a sub-sitemap.\n\nA bulk export rather than a list endpoint, which is why it takes\n`offset`/`limit` instead of the usual paging: a sitemap generator reading\nthe whole set 100 rows at a time would issue thousands of requests.\nStably ordered, so each page is deterministic across runs.",
        "operationId": "list_public_profiles_api_v1_profiles_public_get",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 50000,
              "minimum": 1,
              "default": 10000,
              "title": "Limit"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicProfilesSitemapResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/profiles/{profile_uuid}": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get My Profile By Uuid",
        "description": "Get one of the caller's own profiles by uuid.\n\nScoped to the caller's own: a profile belonging to someone else is not\nreadable here, only through the public read on its owner.",
        "operationId": "get_my_profile_by_uuid_api_v1_profiles__profile_uuid__get",
        "parameters": [
          {
            "name": "profile_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Profile Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileDataResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/users/{username}/profile": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get User Profile",
        "description": "Get a user's profile page.\n\nPublic by design \u2014 this is what a shared profile link resolves to, so any\ncaller holding `profile:read` may read it and no ownership check applies. A\nlocked profile is suppressed here even though its owner can still see it.\n\nCarries `profile_page_uuid`, which is what `POST /contacts` takes to save\nthe person behind the page.",
        "operationId": "get_user_profile_api_v1_users__username__profile_get",
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Username"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileDataResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/users/search": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Search Users",
        "description": "Search users by username, first name, last name, or email.\n\nFinds a person to act on within an organization \u2014 someone to invite, or a\nrecipient to issue something to. `exclude_members` chooses between those two\nreadings: invites want existing members left out, while issuing to a\nrecipient wants them in, since members (the caller included) are the likely\ntargets.\n\n`organization_uuid` is required: it is what makes this endpoint\nauthorizable. `org:members:manage` is an ownership-deferred scope, so it is\nonly enforced once a resource is named \u2014 without an organization to check\nagainst, the scope declaration is inert and any authenticated token could\nsearch every user by email, name or username. The membership check is run\nagainst the caller's *current* role rather than the one embedded in an\norg-scoped token, matching the other member-management endpoints.",
        "operationId": "search_users_api_v1_users_search_get",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 100,
              "description": "Search query",
              "title": "Q"
            },
            "description": "Search query"
          },
          {
            "name": "organization_uuid",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Organization the search is being run for. Scopes the caller's authorization.",
              "title": "Organization Uuid"
            },
            "description": "Organization the search is being run for. Scopes the caller's authorization."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 50,
              "minimum": 1,
              "description": "Max results",
              "default": 10,
              "title": "Limit"
            },
            "description": "Max results"
          },
          {
            "name": "exclude_members",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Omit users who already belong to `organization_uuid`. Defaults to true, which suits picking someone to invite; pass false to search everyone, including the caller.",
              "default": true,
              "title": "Exclude Members"
            },
            "description": "Omit users who already belong to `organization_uuid`. Defaults to true, which suits picking someone to invite; pass false to search everyone, including the caller."
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UserSearchSuggestion_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/users/{username}": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get User",
        "description": "Get a user by username.\n\nReadable by any caller holding `user:read`. `UserResponse` carries only\nwhat a user publishes about themselves; their own account record is at\n`/users/me`.",
        "operationId": "get_user_api_v1_users__username__get",
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Username"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations": {
      "post": {
        "tags": [
          "organizations"
        ],
        "summary": "Create Organization",
        "description": "Create a new organization.",
        "operationId": "create_organization_api_v1_organizations_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrganizationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "List Organizations",
        "description": "List organizations the current user is a member of or owns.\n\nFor org-scoped tokens, returns only the scoped organization.",
        "operationId": "list_organizations_api_v1_organizations_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_OrganizationResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}": {
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "Get Organization",
        "description": "Get an organization by slug (or uuid, until v1 is frozen).",
        "operationId": "get_organization_api_v1_organizations__organization_slug__get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "organizations"
        ],
        "summary": "Update Organization",
        "description": "Update an organization.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "update_organization_api_v1_organizations__organization_slug__patch",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOrganizationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "organizations"
        ],
        "summary": "Delete Organization",
        "description": "Delete an organization.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "delete_organization_api_v1_organizations__organization_slug__delete",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/stats": {
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "Get Organization Stats",
        "description": "Counts behind an organization dashboard.\n\nTeam members, membership tiers, active subscribers, activities, reward\ntemplates and issued cards.",
        "operationId": "get_organization_stats_api_v1_organizations__organization_slug__stats_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationStatsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/membership-tiers": {
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "List Membership Tiers",
        "description": "List membership tiers for an organization.",
        "operationId": "list_membership_tiers_api_v1_organizations__organization_slug__membership_tiers_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_MembershipTierResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "organizations"
        ],
        "summary": "Create Membership Tier",
        "description": "Create a new membership tier.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "create_membership_tier_api_v1_organizations__organization_slug__membership_tiers_post",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMembershipTierRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MembershipTierResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/membership-tiers/{tier_uuid}": {
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "Get Membership Tier",
        "description": "Get a specific membership tier.",
        "operationId": "get_membership_tier_api_v1_organizations__organization_slug__membership_tiers__tier_uuid__get",
        "parameters": [
          {
            "name": "tier_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tier Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MembershipTierResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "organizations"
        ],
        "summary": "Update Membership Tier",
        "description": "Update a membership tier.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "update_membership_tier_api_v1_organizations__organization_slug__membership_tiers__tier_uuid__patch",
        "parameters": [
          {
            "name": "tier_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tier Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMembershipTierRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MembershipTierResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "organizations"
        ],
        "summary": "Delete Membership Tier",
        "description": "Delete a membership tier.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "delete_membership_tier_api_v1_organizations__organization_slug__membership_tiers__tier_uuid__delete",
        "parameters": [
          {
            "name": "tier_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tier Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/membership": {
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "Get My Organization Membership",
        "description": "The caller's own role in this organization.\n\nWithout this an integration has to infer its authority from whether the\norganization appears in a listing, which is a different question and a\nfragile answer.",
        "operationId": "get_my_organization_membership_api_v1_organizations__organization_slug__membership_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationMembershipResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/staff": {
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "List Organization Staff",
        "description": "List all staff members of an organization.",
        "operationId": "list_organization_staff_api_v1_organizations__organization_slug__staff_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_OrganizationMemberEnrichedResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "organizations"
        ],
        "summary": "Add Organization Staff",
        "description": "Add a staff member to an organization.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "add_organization_staff_api_v1_organizations__organization_slug__staff_post",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddOrganizationMemberRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationMemberResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/staff/me": {
      "delete": {
        "tags": [
          "organizations"
        ],
        "summary": "Leave Organization",
        "description": "Leave an organization you are a member of.\n\nSelf-service: removes the caller's own membership, which is why it is\naddressed as `me` rather than by uuid \u2014 the caller cannot name someone\nelse here. The owner cannot leave without first transferring ownership,\nand a sole manager must hand off the manager role first.",
        "operationId": "leave_organization_api_v1_organizations__organization_slug__staff_me_delete",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/transfer-ownership": {
      "post": {
        "tags": [
          "organizations"
        ],
        "summary": "Transfer Organization Ownership",
        "description": "Transfer organization ownership to an existing member.\n\nOwner-only. The caller is checked against the organization's OWNER member\nrow in the database (not a token claim), so a demoted/removed caller cannot\ninvoke this even with a still-valid org-scoped token. The previous owner is\nkept on the roster as a manager.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "transfer_organization_ownership_api_v1_organizations__organization_slug__transfer_ownership_post",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferOwnershipRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/staff/{user_uuid}": {
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "Get Organization Staff Member",
        "description": "Get a specific staff member's details.",
        "operationId": "get_organization_staff_member_api_v1_organizations__organization_slug__staff__user_uuid__get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationMemberResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "organizations"
        ],
        "summary": "Update Organization Staff Role",
        "description": "Update a staff member's role.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "update_organization_staff_role_api_v1_organizations__organization_slug__staff__user_uuid__patch",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOrganizationMemberRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationMemberResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "organizations"
        ],
        "summary": "Remove Organization Staff",
        "description": "Remove a staff member from an organization.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "remove_organization_staff_api_v1_organizations__organization_slug__staff__user_uuid__delete",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/staff-invites": {
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "List Staff Invites",
        "description": "List staff invitations for the organization.",
        "operationId": "list_staff_invites_api_v1_organizations__organization_slug__staff_invites_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by status: pending, accepted, declined, expired, revoked",
              "title": "Status"
            },
            "description": "Filter by status: pending, accepted, declined, expired, revoked"
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_InviteWithOrgResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "organizations"
        ],
        "summary": "Create Staff Invite",
        "description": "Create a staff invitation to join the organization.\n\nReturns the invite with token. Use POST /staff-invites/{invite_uuid}/resend\nto send the invite email with a custom URL.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "create_staff_invite_api_v1_organizations__organization_slug__staff_invites_post",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInviteRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteWithTokenResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/staff-invites/{invite_uuid}": {
      "delete": {
        "tags": [
          "organizations"
        ],
        "summary": "Revoke Staff Invite",
        "description": "Revoke a pending staff invitation.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "revoke_staff_invite_api_v1_organizations__organization_slug__staff_invites__invite_uuid__delete",
        "parameters": [
          {
            "name": "invite_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Invite Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/staff-invites/{invite_uuid}/resend": {
      "post": {
        "tags": [
          "organizations"
        ],
        "summary": "Resend Staff Invite Email",
        "description": "Resend the staff invitation email with a custom URL.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "resend_staff_invite_email_api_v1_organizations__organization_slug__staff_invites__invite_uuid__resend_post",
        "parameters": [
          {
            "name": "invite_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Invite Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendInviteEmailRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/staff-invites/{invite_uuid}/refresh": {
      "post": {
        "tags": [
          "organizations"
        ],
        "summary": "Refresh Staff Invite",
        "description": "Refresh a staff invitation token and expiration.\n\nReturns the invite with new token. Use POST /staff-invites/{invite_uuid}/resend\nto send the invite email with a custom URL.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "refresh_staff_invite_api_v1_organizations__organization_slug__staff_invites__invite_uuid__refresh_post",
        "parameters": [
          {
            "name": "invite_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Invite Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteWithTokenResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/memberships": {
      "post": {
        "tags": [
          "memberships"
        ],
        "summary": "Join Membership",
        "description": "Enrol a user in one of the organization's membership tiers.",
        "operationId": "join_membership_api_v1_organizations__organization_slug__memberships_post",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JoinMembershipRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserMembershipResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "memberships"
        ],
        "summary": "List Memberships",
        "description": "List the organization's members and the tier each holds.",
        "operationId": "list_memberships_api_v1_organizations__organization_slug__memberships_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ],
              "description": "Search by name, username, or email",
              "title": "Search"
            },
            "description": "Search by name, username, or email"
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UserMembershipWithUserResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/memberships/{user_uuid}": {
      "get": {
        "tags": [
          "memberships"
        ],
        "summary": "Get User Membership",
        "description": "Get one member's active membership.",
        "operationId": "get_user_membership_api_v1_organizations__organization_slug__memberships__user_uuid__get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserMembershipWithUserResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "memberships"
        ],
        "summary": "Update User Membership",
        "description": "Move a member's active membership to a different tier.\n\nPreserves the join date and history instead of requiring a leave + rejoin,\nand leaves the existing term (`valid_until`) alone \u2014 use `renew` to extend\nthat. The tier is the only part of a membership a caller sets directly.",
        "operationId": "update_user_membership_api_v1_organizations__organization_slug__memberships__user_uuid__patch",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeTierRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserMembershipResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "memberships"
        ],
        "summary": "Leave Membership",
        "description": "Cancel a member's active membership.",
        "operationId": "leave_membership_api_v1_organizations__organization_slug__memberships__user_uuid__delete",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/memberships/{user_uuid}/renew": {
      "post": {
        "tags": [
          "memberships"
        ],
        "summary": "Renew Membership",
        "description": "Extend a membership by another term.\n\nThe new term is derived from the tier rather than supplied, which is why\nthis is an action and not a field on the membership.",
        "operationId": "renew_membership_api_v1_organizations__organization_slug__memberships__user_uuid__renew_post",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserMembershipResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/memberships/{user_uuid}/wallet": {
      "get": {
        "tags": [
          "memberships"
        ],
        "summary": "Get Membership Wallet",
        "description": "The wallet holding this membership's balance, with its connection info.",
        "operationId": "get_membership_wallet_api_v1_organizations__organization_slug__memberships__user_uuid__wallet_get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MembershipWalletResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/memberships/{user_uuid}/history": {
      "get": {
        "tags": [
          "memberships"
        ],
        "summary": "Get Membership History",
        "description": "Every membership record this user has held here, cancelled ones included.",
        "operationId": "get_membership_history_api_v1_organizations__organization_slug__memberships__user_uuid__history_get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UserMembershipHistoryResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/memberships/{user_uuid}/cards": {
      "get": {
        "tags": [
          "memberships"
        ],
        "summary": "Get Membership Cards",
        "description": "Cards linked to this membership's wallet.\n\nFreezing one goes through the organization's card endpoints, which address\nthe same cards by uuid.",
        "operationId": "get_membership_cards_api_v1_organizations__organization_slug__memberships__user_uuid__cards_get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_MembershipCardResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/card-models": {
      "post": {
        "tags": [
          "cards"
        ],
        "summary": "Create Card Model",
        "description": "Create a new card model for an organization.\n\nCard models are reusable card designs with front/back images that can be\nassigned to managed cards. Organizations can create multiple card models\nfor different purposes (e.g., member cards, VIP cards, event cards).",
        "operationId": "create_card_model_api_v1_organizations__organization_slug__card_models_post",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCardModelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardModelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "cards"
        ],
        "summary": "List Card Models",
        "description": "List card models for an organization.\n\nReturns a paginated list of card models owned by the organization.\nBy default, only active card models are returned. Use `include_inactive=true`\nto include deactivated models.",
        "operationId": "list_card_models_api_v1_organizations__organization_slug__card_models_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "include_inactive",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include inactive card models in the list",
              "default": false,
              "title": "Include Inactive"
            },
            "description": "Include inactive card models in the list"
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_CardModelResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/card-models/{card_model_slug}": {
      "get": {
        "tags": [
          "cards"
        ],
        "summary": "Get Card Model",
        "description": "Get a card model.\n\nReturns the card model details including presigned URLs for the front\nand back images (if set).",
        "operationId": "get_card_model_api_v1_organizations__organization_slug__card_models__card_model_slug__get",
        "parameters": [
          {
            "name": "card_model_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Model Slug"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardModelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "cards"
        ],
        "summary": "Update Card Model",
        "description": "Update a card model.\n\nOnly the fields provided in the request body will be updated.\nSet `is_active=false` to deactivate a card model (soft disable).",
        "operationId": "update_card_model_api_v1_organizations__organization_slug__card_models__card_model_slug__patch",
        "parameters": [
          {
            "name": "card_model_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Model Slug"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCardModelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardModelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "cards"
        ],
        "summary": "Delete Card Model",
        "description": "Delete a card model.\n\nDeleting a card model will unassign it from any managed cards that\nreference it (their card_model_uuid will be set to NULL).\n\nConsider deactivating the card model instead by setting `is_active=false`\nto preserve history while preventing new assignments.",
        "operationId": "delete_card_model_api_v1_organizations__organization_slug__card_models__card_model_slug__delete",
        "parameters": [
          {
            "name": "card_model_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Model Slug"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/cards": {
      "get": {
        "tags": [
          "cards"
        ],
        "summary": "List Organization Cards",
        "description": "List the cards in the organization's inventory.",
        "operationId": "list_organization_cards_api_v1_organizations__organization_slug__cards_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "desc",
              "title": "Sort Order"
            }
          },
          {
            "name": "identifier",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the card with exactly this identifier. How a caller turns a scanned card into the uuid the rest of this resource is addressed by.",
              "title": "Identifier"
            },
            "description": "Return only the card with exactly this identifier. How a caller turns a scanned card into the uuid the rest of this resource is addressed by."
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return cards whose identifier contains this text. A search, not a lookup \u2014 use `identifier` for an exact match.",
              "title": "Search"
            },
            "description": "Return cards whose identifier contains this text. A search, not a lookup \u2014 use `identifier` for an exact match."
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_CardResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "cards"
        ],
        "summary": "Assign Organization Cards",
        "description": "Take manufactured cards into the organization's inventory.\n\nEach identifier must already exist \u2014 cards are minted once by fulfillment,\nand an organization takes one rather than creating it. An identifier the\nplatform never made is refused, which is what stops one tenant from\nclaiming another's batch or blocking a range it does not own.\n\nPartial success by design: one bad identifier in a batch does not reject\nthe rest, and each failure comes back with its reason. Assigning a card the\norganization already holds is a no-op, so a retried batch is safe.",
        "operationId": "assign_organization_cards_api_v1_organizations__organization_slug__cards_post",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignOrgCardsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssignOrgCardsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/cards/{card_uuid}": {
      "get": {
        "tags": [
          "cards"
        ],
        "summary": "Get Organization Card",
        "description": "Read one card from the organization's inventory.",
        "operationId": "get_organization_card_api_v1_organizations__organization_slug__cards__card_uuid__get",
        "parameters": [
          {
            "name": "card_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "cards"
        ],
        "summary": "Update Organization Card",
        "description": "Update a card in the organization's inventory.\n\nCovers the card model, the membership tier assignment and the registry\nfreeze. To remove a value, pass an empty string for that field.\n\nThe `frozen` flag here is the **registry** freeze and is dominant: a card\nfrozen by its issuer stays frozen however its holder sets their own flag on\n`PATCH /cards/{card_uuid}`.\n\nTakes both `card:org:manage` and `card:org:freeze` because freezing folded\ninto this endpoint: the permission is checked per endpoint rather than per\nfield, and no role separates the two scopes anyway.",
        "operationId": "update_organization_card_api_v1_organizations__organization_slug__cards__card_uuid__patch",
        "parameters": [
          {
            "name": "card_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOrgCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "cards"
        ],
        "summary": "Release Organization Card",
        "description": "Return an unclaimed card to platform inventory.\n\nThe registry row survives: the identifier belongs to the physical object\nand outlives any organization holding it. Refused once someone has claimed\nthe card, since releasing it would strip their membership silently \u2014 the\nholder unclaims first.",
        "operationId": "release_organization_card_api_v1_organizations__organization_slug__cards__card_uuid__delete",
        "parameters": [
          {
            "name": "card_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/activities/{activity_slug}": {
      "get": {
        "tags": [
          "activities"
        ],
        "summary": "Get Activity",
        "description": "Get an activity by slug (or uuid, until v1 is frozen).\n\nReadable by any caller holding `activity:read`: an activity carries no\ndraft or withdrawn state, so there is nothing about it to withhold, and\nshareable activity links depend on it.",
        "operationId": "get_activity_api_v1_activities__activity_slug__get",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "activities"
        ],
        "summary": "Update Activity",
        "description": "Update an activity by UUID.\n\nRequires an org-scoped token for the activity's organization.",
        "operationId": "update_activity_api_v1_activities__activity_slug__patch",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateActivityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "activities"
        ],
        "summary": "Delete Activity",
        "description": "Delete an activity by UUID.\n\nRequires an org-scoped token for the activity's organization.",
        "operationId": "delete_activity_api_v1_activities__activity_slug__delete",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/activities/{activity_slug}/attendees": {
      "get": {
        "tags": [
          "activities"
        ],
        "summary": "List Activity Attendees",
        "description": "List all attendees across all sessions of an activity.",
        "operationId": "list_activity_attendees_api_v1_activities__activity_slug__attendees_get",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "include_proof",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include proof transaction info in response",
              "default": false,
              "title": "Include Proof"
            },
            "description": "Include proof transaction info in response"
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_ActivityAttendeeResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/activities/{activity_slug}/sessions": {
      "post": {
        "tags": [
          "activities"
        ],
        "summary": "Create Session",
        "description": "Create a new session for an activity.\n\nRequires an org-scoped token for the activity's organization.",
        "operationId": "create_session_api_v1_activities__activity_slug__sessions_post",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "activities"
        ],
        "summary": "List Sessions",
        "description": "List all sessions for an activity.",
        "operationId": "list_sessions_api_v1_activities__activity_slug__sessions_get",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_SessionResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/activities/{activity_slug}/sessions/{session_slug}": {
      "get": {
        "tags": [
          "activities"
        ],
        "summary": "Get Session",
        "description": "Get a specific session.",
        "operationId": "get_session_api_v1_activities__activity_slug__sessions__session_slug__get",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "activities"
        ],
        "summary": "Delete Session",
        "description": "Delete a session.\n\nRequires an org-scoped token for the activity's organization.",
        "operationId": "delete_session_api_v1_activities__activity_slug__sessions__session_slug__delete",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/activities": {
      "post": {
        "tags": [
          "activities"
        ],
        "summary": "Create Activity",
        "description": "Create a new activity for an organization.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "create_activity_api_v1_organizations__organization_slug__activities_post",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateActivityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "activities"
        ],
        "summary": "List Organization Activities",
        "description": "List all activities for an organization.",
        "operationId": "list_organization_activities_api_v1_organizations__organization_slug__activities_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_ActivityResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sessions/{session_slug}/attend": {
      "post": {
        "tags": [
          "sessions"
        ],
        "summary": "Attend Session",
        "description": "Check in to a session using a tagged-union identifier (wallet, card, username, etc).\n\nSelf-service: the resolved identity must match the token subject.\nOn-behalf-of: requires activity:attendees:manage with an org-scoped token\nmatching the session's parent activity.\n\nTicket-gated sessions (effective requires_ticket=True) require the resolved\nidentity to hold a valid ticket for the activity before attendance is\nrecorded; walk-in sessions skip this gate entirely.",
        "operationId": "attend_session_api_v1_sessions__session_slug__attend_post",
        "parameters": [
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckinRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckinResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sessions/{session_slug}/attendee-status": {
      "get": {
        "tags": [
          "sessions"
        ],
        "summary": "Get Attendee Status",
        "description": "Check attendee status for a wallet in a session.\n\nReturns the attendee record if registered, or null if not registered.\nUseful for checking status before attempting registration or check-in.",
        "operationId": "get_attendee_status_api_v1_sessions__session_slug__attendee_status_get",
        "parameters": [
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "wallet_address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Wallet address to check",
              "title": "Wallet Address"
            },
            "description": "Wallet address to check"
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ActivityAttendeeResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Get Attendee Status Api V1 Sessions  Session Slug  Attendee Status Get"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sessions/{session_slug}/eligibility": {
      "get": {
        "tags": [
          "sessions"
        ],
        "summary": "Get Session Eligibility",
        "description": "Tell a client what a tagged-union identifier can do for a session.\n\nRead-only. Resolves the identifier, looks up attendee and ticket state, and\nreports the conclusion, so a door page does not reimplement the rules and\ncannot disagree with what check-in will actually do.\n\n`recommended_action` is the one action worth offering: `checkin` when\ncheck-in would succeed, `register` when a ticket is the only thing missing\n*and* one can still be issued, `none` when neither applies. `blocked_reason`\nnames why, when something stands in the way:\n\n- `checkin_closed` \u2014 check-in is switched off for the session or its event\n- `membership_required` \u2014 the session is gated on a membership or tier the\n  identity does not hold\n- `registration_closed` \u2014 a ticket is required, the identity has none, and\n  the ticket behind it is withdrawn or sold out\n\nUnrecognized identifiers propagate as a `404`, same as `/attend`.",
        "operationId": "get_session_eligibility_api_v1_sessions__session_slug__eligibility_get",
        "parameters": [
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Identifier type, e.g. 'wallet', 'card'",
              "title": "Type"
            },
            "description": "Identifier type, e.g. 'wallet', 'card'"
          },
          {
            "name": "value",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Identifier value",
              "title": "Value"
            },
            "description": "Identifier value"
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EligibilityResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sessions/{session_slug}/attendees": {
      "get": {
        "tags": [
          "sessions"
        ],
        "summary": "List Session Attendees",
        "description": "List attendees for a specific session.",
        "operationId": "list_session_attendees_api_v1_sessions__session_slug__attendees_get",
        "parameters": [
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "include_proof",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include proof transaction info in response",
              "default": false,
              "title": "Include Proof"
            },
            "description": "Include proof transaction info in response"
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_ActivityAttendeeResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sessions/{session_slug}/attendees/{wallet_address}": {
      "get": {
        "tags": [
          "sessions"
        ],
        "summary": "Get Session Attendee",
        "description": "Read one attendee of a session.\n\nThe collection had a read and the item had a write, so a client that\nupdated an attendee could not read back what it wrote.",
        "operationId": "get_session_attendee_api_v1_sessions__session_slug__attendees__wallet_address__get",
        "parameters": [
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "wallet_address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Wallet Address"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityAttendeeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "sessions"
        ],
        "summary": "Update Session Attendee",
        "description": "Update attendee status for a specific session.",
        "operationId": "update_session_attendee_api_v1_sessions__session_slug__attendees__wallet_address__patch",
        "parameters": [
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "wallet_address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Wallet Address"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Status"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityAttendeeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sessions/{session_slug}": {
      "get": {
        "tags": [
          "sessions"
        ],
        "summary": "Get Session",
        "description": "Get a session by slug (or uuid, until v1 is frozen).",
        "operationId": "get_session_api_v1_sessions__session_slug__get",
        "parameters": [
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "sessions"
        ],
        "summary": "Update Session",
        "description": "Update session details.\n\nOnly organization members with activity:update scope can update sessions.",
        "operationId": "update_session_api_v1_sessions__session_slug__patch",
        "parameters": [
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards": {
      "get": {
        "tags": [
          "rewards"
        ],
        "summary": "List Rewards",
        "description": "Get all cached rewards for the current user (paginated).\n\nRetrieves cached reward content for all transactions associated with\nthe current user's wallets. Useful for reward preview features.",
        "operationId": "list_rewards_api_v1_rewards_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UserRewardCacheResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/transactions/{transaction_id}": {
      "get": {
        "tags": [
          "rewards"
        ],
        "summary": "Get Reward By Transaction",
        "description": "Get a specific cached reward by transaction ID.\n\nRetrieves the cached reward content for a specific transaction.\nIf the cache is stale or missing, it will be refreshed automatically.\nOnly returns rewards for transactions belonging to the current user's wallets.",
        "operationId": "get_reward_by_transaction_api_v1_rewards_transactions__transaction_id__get",
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Transaction Id"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserRewardCacheResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/files/{file_id}": {
      "get": {
        "tags": [
          "rewards"
        ],
        "summary": "Get Reward File",
        "description": "Get specific file data (badge, certificate, attachment, coupon, or ticket) by opaque file ID.\n\nThe file_id is a base64url-encoded identifier containing transaction_id, type, and index.\nReturns the matching item along with origin metadata (transaction_id, content_version, generated_at).",
        "operationId": "get_reward_file_api_v1_rewards_files__file_id__get",
        "parameters": [
          {
            "name": "file_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "File Id"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardFileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/{reward_slug}": {
      "get": {
        "tags": [
          "rewards"
        ],
        "summary": "Get Reward",
        "description": "Get a reward template by slug (or uuid, until v1 is frozen).\n\nWhat the caller may see depends on the reward's state rather than on which\npath they used. A published, unarchived reward is discoverable by anyone\nholding `reward:read` \u2014 that is what makes shareable redemption links work.\nA draft or archived one is visible only to its organization: it is either\nnot ready to be seen or deliberately withdrawn.",
        "operationId": "get_reward_api_v1_rewards__reward_slug__get",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardTemplateResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "rewards"
        ],
        "summary": "Update Reward",
        "description": "Update a reward template, including its lifecycle state.\n\n`status` moves the reward between draft, published and archived; the\nremaining fields edit its content. Requires an org-scoped token for the\nreward's organization.\n\nA reward carries no point value yet: `points` may be omitted or sent as 0,\nand a non-zero value is refused.",
        "operationId": "update_reward_api_v1_rewards__reward_slug__patch",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRewardTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardTemplateResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "rewards"
        ],
        "summary": "Delete Reward",
        "description": "Permanently delete a draft reward template.\n\nOnly allowed if template is a draft and has no redemptions.\n\nRequires an org-scoped token for the reward's organization.",
        "operationId": "delete_reward_api_v1_rewards__reward_slug__delete",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/{reward_slug}/trigger": {
      "post": {
        "tags": [
          "rewards"
        ],
        "summary": "Trigger Reward",
        "description": "Run this reward's trigger for one user, outside the event that normally\nfires it.\n\nDistribution goes through the reward's enabled trigger rather than around\nit, so the same scope rules, deduplication and audit trail apply as an\nautomatic firing \u2014 the bypass flags are what opt out of each, individually.\n\nRequires an org-scoped token for the reward's organization.",
        "operationId": "trigger_reward_api_v1_rewards__reward_slug__trigger_post",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteTriggerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteTriggerResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/{reward_slug}/claim": {
      "post": {
        "tags": [
          "rewards"
        ],
        "summary": "Claim Reward",
        "description": "Claim a reward that is being offered by its link, for yourself.\n\nThe recipient is always the caller \u2014 there is no `identifier` to name\nsomeone else. That is the difference from `/redeem`, which issues on an\norganization's behalf and demands an org-scoped token: here the link is the\nauthority, so a visitor's own token is enough and no membership in the\nissuing organization is needed.\n\nA reward is claimable this way only while it is published, unarchived and\ncarries an enabled trigger on the reward's link. Anything else \u2014 a slug the\nplatform never made, a draft, a reward whose link was never switched on \u2014\nanswers `404`, so a caller cannot tell which by probing.\n\nClaiming twice returns the first claim's transaction rather than issuing\nagain, so a double-tap or a retried request costs nothing. A reward gated on\nmembership or an entitlement still refuses a caller who lacks it, and a\nreward whose supply is exhausted refuses everyone.\n\nCharged to the `expensive` rate-limit bucket: a claim signs a ledger\ntransfer.",
        "operationId": "claim_reward_api_v1_rewards__reward_slug__claim_post",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/RedemptionResultCompleted"
                    },
                    {
                      "$ref": "#/components/schemas/RedemptionResultPending"
                    }
                  ],
                  "title": "Response Claim Reward Api V1 Rewards  Reward Slug  Claim Post"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/{reward_slug}/redeem": {
      "post": {
        "tags": [
          "rewards"
        ],
        "summary": "Redeem Reward",
        "description": "Issue (redeem) a reward to a recipient.\n\nRequires an org-scoped token for the reward's organization. The recipient is\na tagged-union `identifier` that resolves to a wallet (including custodial\nwallets with no Davi account) \u2014 this is how a ticket is issued to a\ncard-only attendee.",
        "operationId": "redeem_reward_api_v1_rewards__reward_slug__redeem_post",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemRewardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/RedemptionResultCompleted"
                    },
                    {
                      "$ref": "#/components/schemas/RedemptionResultPending"
                    }
                  ],
                  "title": "Response Redeem Reward Api V1 Rewards  Reward Slug  Redeem Post"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/deliveries/{delivery_uuid}": {
      "get": {
        "tags": [
          "rewards"
        ],
        "summary": "Get Delivery Status",
        "description": "Poll the status of an async external reward generation.\n\nWhen redeeming an external reward, the webhook delivery is processed\nasynchronously. This endpoint allows clients to poll for the result\nby delivery UUID.",
        "operationId": "get_delivery_status_api_v1_rewards_deliveries__delivery_uuid__get",
        "parameters": [
          {
            "name": "delivery_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Delivery Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalRewardTaskResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/{reward_slug}/propagate": {
      "post": {
        "tags": [
          "rewards"
        ],
        "summary": "Propagate Reward",
        "description": "Propagate template changes to all existing holders.\n\nCreates a background job that reverses old reward transactions\nand issues new ones with updated content.",
        "operationId": "propagate_reward_api_v1_rewards__reward_slug__propagate_post",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardPropagationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/{reward_slug}/propagations": {
      "get": {
        "tags": [
          "rewards"
        ],
        "summary": "List Propagations",
        "description": "List all propagation records for a reward template.",
        "operationId": "list_propagations_api_v1_rewards__reward_slug__propagations_get",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_RewardPropagationResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/{reward_slug}/propagations/{propagation_uuid}": {
      "get": {
        "tags": [
          "rewards"
        ],
        "summary": "Get Propagation",
        "description": "Get a single propagation record.",
        "operationId": "get_propagation_api_v1_rewards__reward_slug__propagations__propagation_uuid__get",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          },
          {
            "name": "propagation_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Propagation Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardPropagationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reward-triggers/reward-slug/{reward_slug}": {
      "get": {
        "tags": [
          "reward-triggers"
        ],
        "summary": "Get Triggers By Reward Slug",
        "description": "Get reward triggers by the associated reward template's slug.\n\nIntended for public/frontend use to check if a claimable\nreward trigger exists for a given reward slug.",
        "operationId": "get_triggers_by_reward_slug_api_v1_reward_triggers_reward_slug__reward_slug__get",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_RewardTriggerResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reward-triggers/{trigger_uuid}": {
      "get": {
        "tags": [
          "reward-triggers"
        ],
        "summary": "Get Reward Trigger",
        "description": "Get a reward trigger by UUID.",
        "operationId": "get_reward_trigger_api_v1_reward_triggers__trigger_uuid__get",
        "parameters": [
          {
            "name": "trigger_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trigger Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardTriggerResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "reward-triggers"
        ],
        "summary": "Update Reward Trigger",
        "description": "Update a reward trigger.\n\nRequires an org-scoped token for the reward's organization.",
        "operationId": "update_reward_trigger_api_v1_reward_triggers__trigger_uuid__patch",
        "parameters": [
          {
            "name": "trigger_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trigger Uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRewardTriggerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardTriggerResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "reward-triggers"
        ],
        "summary": "Delete Reward Trigger",
        "description": "Delete a reward trigger.\n\nRequires an org-scoped token for the reward's organization.",
        "operationId": "delete_reward_trigger_api_v1_reward_triggers__trigger_uuid__delete",
        "parameters": [
          {
            "name": "trigger_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trigger Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/rewards": {
      "post": {
        "tags": [
          "rewards"
        ],
        "summary": "Create Reward",
        "description": "Create a new reward template for an organization.\n\nRequires an org-scoped token for the target organization.\n\nA reward carries no point value yet: `points` may be omitted or sent as 0,\nand a non-zero value is refused.",
        "operationId": "create_reward_api_v1_organizations__organization_slug__rewards_post",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRewardTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardTemplateResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "rewards"
        ],
        "summary": "List Organization Rewards",
        "description": "List all reward templates for an organization.",
        "operationId": "list_organization_rewards_api_v1_organizations__organization_slug__rewards_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_RewardTemplateResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/activities/{activity_slug}/rewards": {
      "get": {
        "tags": [
          "rewards"
        ],
        "summary": "List Activity Rewards",
        "description": "List all reward templates for an activity.",
        "operationId": "list_activity_rewards_api_v1_activities__activity_slug__rewards_get",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_RewardTemplateResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/reward-triggers": {
      "post": {
        "tags": [
          "reward-triggers"
        ],
        "summary": "Create Reward Trigger",
        "description": "Create a new reward trigger for an organization.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "create_reward_trigger_api_v1_organizations__organization_slug__reward_triggers_post",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRewardTriggerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardTriggerResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "reward-triggers"
        ],
        "summary": "List Organization Reward Triggers",
        "description": "List all reward triggers for an organization.",
        "operationId": "list_organization_reward_triggers_api_v1_organizations__organization_slug__reward_triggers_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_RewardTriggerResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/cards": {
      "get": {
        "tags": [
          "cards"
        ],
        "summary": "List Cards",
        "description": "List the cards the caller holds.",
        "operationId": "list_cards_api_v1_cards_get",
        "parameters": [
          {
            "name": "identifier",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the card with exactly this identifier. How a caller turns a scanned card into the uuid the rest of this resource is addressed by.",
              "title": "Identifier"
            },
            "description": "Return only the card with exactly this identifier. How a caller turns a scanned card into the uuid the rest of this resource is addressed by."
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_CardResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "cards"
        ],
        "summary": "Provision Card",
        "description": "Give the caller a virtual card if they hold none at all.\n\nA repair path, not the normal way to get a card. Signing up provisions one\nalongside the primary wallet, and a physical-card holder gets theirs by\nclaiming; this exists for the account where neither happened.\n\nIdempotent: `201` when a card is created, `200` with the existing one\notherwise. \"Holds none at all\" is the test \u2014 someone holding a claimed\nphysical card is not card-less and gets that card back, not a second one.",
        "operationId": "provision_card_api_v1_cards_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/cards/claim": {
      "post": {
        "tags": [
          "cards"
        ],
        "summary": "Claim Card",
        "description": "Take possession of a card, binding it to the caller's wallet.\n\nKeyed on the identifier because that is all a caller has after tapping a\ncard. The card must already be registered \u2014 an identifier the platform\nnever made is not claimable \u2014 which is what gives the check something to\ncheck against.\n\nIf the card carries a membership tier and the caller is not already a\nmember of the issuing organization, a membership is created. The card's\ndesign template, if it has one, is rendered into a profile.\n\nFirst claimant wins: knowing the identifier is what takes the card, so a\ncard is claimable until someone claims it. Rate limited to the `expensive`\nbucket.",
        "operationId": "claim_card_api_v1_cards_claim_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClaimCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimCardResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/cards/{card_uuid}": {
      "get": {
        "tags": [
          "cards"
        ],
        "summary": "Get Card",
        "description": "Read one of the caller's cards.",
        "operationId": "get_card_api_v1_cards__card_uuid__get",
        "parameters": [
          {
            "name": "card_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "cards"
        ],
        "summary": "Update Card",
        "description": "Update how the caller holds this card.\n\nRenaming, choosing the primary card and freezing are all states the card is\nin rather than events, so they are fields here instead of four separate\naction endpoints.\n\nTakes both `card:manage` and `card:freeze`: the permission is checked per\nendpoint rather than per field, and no role separates the two.",
        "operationId": "update_card_api_v1_cards__card_uuid__patch",
        "parameters": [
          {
            "name": "card_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "cards"
        ],
        "summary": "Unclaim Card",
        "description": "Release a card from the caller's account.\n\nThe registry row survives for a physical or organization-issued card \u2014 the\nidentifier belongs to the object, so the card returns to being claimable\nrather than ceasing to exist. A self-provisioned virtual card, which nobody\nelse can ever hold, is destroyed.\n\nThe primary card cannot be released; name a different primary first.",
        "operationId": "unclaim_card_api_v1_cards__card_uuid__delete",
        "parameters": [
          {
            "name": "card_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/assets": {
      "get": {
        "tags": [
          "assets"
        ],
        "summary": "List Installed Assets",
        "description": "List the current user's installed assets (the customization picker read\npath), optionally filtered to one surface. Excludes revoked rows.",
        "operationId": "list_installed_assets_api_v1_assets_get",
        "parameters": [
          {
            "name": "asset_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/UserAssetType"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Asset Type"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UserAssetResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/assets/template-backgrounds": {
      "get": {
        "tags": [
          "assets"
        ],
        "summary": "List Template Backgrounds",
        "description": "Background provisions from a profile's template (the \"From your template\"\nsection of the appearance picker). Defaults to the user's primary profile.",
        "operationId": "list_template_backgrounds_api_v1_assets_template_backgrounds_get",
        "parameters": [
          {
            "name": "profile_uuid",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Profile Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_TemplateBackground_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/assets/install": {
      "post": {
        "tags": [
          "assets"
        ],
        "summary": "Install Reward Assets",
        "description": "Install the assets carried by an earned reward into the user's inventory.\n\nIdempotent and pack-aware: a reward with several assets installs them all.",
        "operationId": "install_reward_assets_api_v1_assets_install_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InstallRewardAssetsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserAssetResponse"
                  },
                  "title": "Response Install Reward Assets Api V1 Assets Install Post"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/assets/{user_asset_uuid}/equip": {
      "post": {
        "tags": [
          "assets"
        ],
        "summary": "Equip Asset",
        "description": "Equip an installed asset onto one of the user's profiles.\n\n`slot` says which part of the profile it lands on. Character parts have no\nimage url of their own \u2014 the slot they occupy is a property of the asset \u2014\nso the response carries the slot name in place of one.",
        "operationId": "equip_asset_api_v1_assets__user_asset_uuid__equip_post",
        "parameters": [
          {
            "name": "user_asset_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Asset Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EquipRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EquipResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/assets/equipped/character/{slot}": {
      "delete": {
        "tags": [
          "assets"
        ],
        "summary": "Unequip Character Slot",
        "description": "Clear one slot in a profile's character config.\n\n`slot` is a character slot such as `hair`, which is a finer address than\nthe `character` value `POST .../equip` takes: equipping reads the slot off\nthe asset, clearing one has to be told which.",
        "operationId": "unequip_character_slot_api_v1_assets_equipped_character__slot__delete",
        "parameters": [
          {
            "name": "slot",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Slot"
            }
          },
          {
            "name": "profile_uuid",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/assets/install/{transaction_id}": {
      "delete": {
        "tags": [
          "assets"
        ],
        "summary": "Uninstall Reward Assets",
        "description": "Uninstall a reward's assets from the inventory. Lossless \u2014 re-installable\nfrom the reward while it stands.",
        "operationId": "uninstall_reward_assets_api_v1_assets_install__transaction_id__delete",
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Transaction Id"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/files/uploads": {
      "post": {
        "tags": [
          "files"
        ],
        "summary": "Initiate Upload",
        "description": "Start an upload and get presigned URLs to send the bytes to.\n\nReturns a single presigned PUT URL for a small file, or one URL per part\nfor a multipart upload. `PATCH` the returned `upload_id` once the bytes\nare there.\n\nThe scope required depends on `owner_type` rather than being declared on\nthe route: uploading org or reward assets demands the org or reward upload\nscope, not `upload:user:write`.",
        "operationId": "initiate_upload_api_v1_files_uploads_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InitiateUploadRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InitiateUploadResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/files/uploads/{upload_id}": {
      "patch": {
        "tags": [
          "files"
        ],
        "summary": "Complete Upload",
        "description": "Finalize an upload once the bytes are in place, producing the file.\n\nA multipart upload must send back the part numbers and ETags S3 returned;\na simple one sends nothing.",
        "operationId": "complete_upload_api_v1_files_uploads__upload_id__patch",
        "parameters": [
          {
            "name": "upload_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Upload Id"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteUploadRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompleteUploadResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "files"
        ],
        "summary": "Abort Upload",
        "description": "Abandon a pending upload and clean up anything already sent.",
        "operationId": "abort_upload_api_v1_files_uploads__upload_id__delete",
        "parameters": [
          {
            "name": "upload_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Upload Id"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/files/{file_slug}": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "Get File By Slug",
        "description": "Get a file by its slug.\n\nThe only file route not addressed through an owner, because a slug is\nenough to find one. Authorization therefore runs against whatever the file\nturns out to belong to.",
        "operationId": "get_file_by_slug_api_v1_files__file_slug__get",
        "parameters": [
          {
            "name": "file_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "File Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadedFileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/users/{user_uuid}/files": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "List User Files",
        "description": "List a user's files.",
        "operationId": "list_user_files_api_v1_users__user_uuid__files_get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "format": "uuid"
                }
              ],
              "title": "User Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UploadedFileResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/users/{user_uuid}/files/{file_uuid}": {
      "delete": {
        "tags": [
          "files"
        ],
        "summary": "Delete User File",
        "description": "Delete a user's file.",
        "operationId": "delete_user_file_api_v1_users__user_uuid__files__file_uuid__delete",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "format": "uuid"
                }
              ],
              "title": "User Uuid"
            }
          },
          {
            "name": "file_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "File Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/files": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "List Organization Files",
        "description": "List an organization's files.",
        "operationId": "list_organization_files_api_v1_organizations__organization_slug__files_get",
        "parameters": [
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UploadedFileResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/files/{file_uuid}": {
      "delete": {
        "tags": [
          "files"
        ],
        "summary": "Delete Organization File",
        "description": "Delete an organization's file.",
        "operationId": "delete_organization_file_api_v1_organizations__organization_slug__files__file_uuid__delete",
        "parameters": [
          {
            "name": "file_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "File Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/activities/{activity_slug}/files": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "List Activity Files",
        "description": "List an activity's files.",
        "operationId": "list_activity_files_api_v1_activities__activity_slug__files_get",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UploadedFileResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/activities/{activity_slug}/files/{file_uuid}": {
      "delete": {
        "tags": [
          "files"
        ],
        "summary": "Delete Activity File",
        "description": "Delete an activity's file.",
        "operationId": "delete_activity_file_api_v1_activities__activity_slug__files__file_uuid__delete",
        "parameters": [
          {
            "name": "activity_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Slug"
            }
          },
          {
            "name": "file_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "File Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/{reward_slug}/files": {
      "get": {
        "tags": [
          "files"
        ],
        "summary": "List Reward Files",
        "description": "List a reward template's files.",
        "operationId": "list_reward_files_api_v1_rewards__reward_slug__files_get",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UploadedFileResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rewards/{reward_slug}/files/{file_uuid}": {
      "delete": {
        "tags": [
          "files"
        ],
        "summary": "Delete Reward File",
        "description": "Delete a reward template's file.",
        "operationId": "delete_reward_file_api_v1_rewards__reward_slug__files__file_uuid__delete",
        "parameters": [
          {
            "name": "reward_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Slug"
            }
          },
          {
            "name": "file_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "File Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/feed": {
      "get": {
        "tags": [
          "feed"
        ],
        "summary": "Get Feed",
        "description": "Get the current user's activity feed.\n\n- `feed_type=all`: Returns a paginated list of enriched activity log entries with attached\n  activity and organization details, ordered by most recent first. Optionally filter by activity_type.\n- `feed_type=registrations`: Returns activities the user has registered for or checked into,\n  ordered by start_time (soonest first). By default, only returns current and upcoming activities.\n  Set include_past=true to include all activities regardless of timing.",
        "operationId": "get_feed_api_v1_feed_get",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "Page number",
              "default": 1,
              "title": "Page"
            },
            "description": "Page number"
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Items per page",
              "default": 20,
              "title": "Page Size"
            },
            "description": "Items per page"
          },
          {
            "name": "activity_types",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by activity types, comma-separated",
              "title": "Activity Types"
            },
            "description": "Filter by activity types, comma-separated"
          },
          {
            "name": "organization_uuids",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by organization UUIDs, comma-separated",
              "title": "Organization Uuids"
            },
            "description": "Filter by organization UUIDs, comma-separated"
          },
          {
            "name": "feed_type",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "all",
                "registrations"
              ],
              "type": "string",
              "description": "Feed type: 'all' for full activity log, 'registrations' for registered activities only",
              "default": "all",
              "title": "Feed Type"
            },
            "description": "Feed type: 'all' for full activity log, 'registrations' for registered activities only"
          },
          {
            "name": "include_past",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "For registrations: include past events (default: only current and upcoming)",
              "default": false,
              "title": "Include Past"
            },
            "description": "For registrations: include past events (default: only current and upcoming)"
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/PaginatedResponse_EnhancedUserActivityLogResponse_"
                    },
                    {
                      "$ref": "#/components/schemas/PaginatedResponse_UserRegisteredActivityResponse_"
                    }
                  ],
                  "title": "Response Get Feed Api V1 Feed Get"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/users/me/subscription": {
      "get": {
        "tags": [
          "subscription"
        ],
        "summary": "Get My Subscription",
        "description": "Get the current user's subscription tier and entitlements.",
        "operationId": "get_my_subscription_api_v1_users_me_subscription_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentSubscriptionResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/memberships": {
      "get": {
        "tags": [
          "memberships"
        ],
        "summary": "List Memberships",
        "description": "Get all active memberships for the current user across all organizations.\n\nReturns membership details including organization name and tier information.\n\nFor org-scoped tokens, filters to only memberships in the scoped organization.",
        "operationId": "list_memberships_api_v1_memberships_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UserMembershipWithOrgResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wallets": {
      "get": {
        "tags": [
          "wallets"
        ],
        "summary": "List Wallets",
        "description": "List all wallets owned by the current user.\n\nSet `details=true` to include balance and organization/membership context.",
        "operationId": "list_wallets_api_v1_wallets_get",
        "parameters": [
          {
            "name": "details",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include balance and context information",
              "default": false,
              "title": "Details"
            },
            "description": "Include balance and context information"
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/PaginatedResponse_UserWalletResponse_"
                    },
                    {
                      "$ref": "#/components/schemas/PaginatedResponse_UserWalletWithContextResponse_"
                    }
                  ],
                  "title": "Response List Wallets Api V1 Wallets Get"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wallets/primary": {
      "post": {
        "tags": [
          "wallets"
        ],
        "summary": "Create Primary Wallet",
        "description": "Ensure the current user has a primary wallet and a primary virtual card.\n\nIdempotent. Returns 201 Created when the wallet is created this request,\n200 OK when returning an already-existing primary wallet.",
        "operationId": "create_primary_wallet_api_v1_wallets_primary_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePrimaryWalletResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "200": {
            "description": "Primary wallet already existed; returned unchanged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePrimaryWalletResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wallets/{wallet_address}": {
      "get": {
        "tags": [
          "wallets"
        ],
        "summary": "Get Wallet",
        "description": "Get a wallet by its address.",
        "operationId": "get_wallet_api_v1_wallets__wallet_address__get",
        "parameters": [
          {
            "name": "wallet_address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Wallet Address"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WalletResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wallets/{wallet_address}/details": {
      "get": {
        "tags": [
          "wallets"
        ],
        "summary": "Get Wallet Details",
        "description": "Get wallet with balance and organization/membership context.\n\nReturns the wallet with its current balance, organization context,\nand membership information if applicable.",
        "operationId": "get_wallet_details_api_v1_wallets__wallet_address__details_get",
        "parameters": [
          {
            "name": "wallet_address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Wallet Address"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserWalletWithContextResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wallets/{wallet_address}/balance": {
      "get": {
        "tags": [
          "wallets"
        ],
        "summary": "Get Wallet Balance",
        "description": "Get a wallet's current point balance.",
        "operationId": "get_wallet_balance_api_v1_wallets__wallet_address__balance_get",
        "parameters": [
          {
            "name": "wallet_address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Wallet Address"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WalletBalanceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wallets/{wallet_address}/transactions": {
      "get": {
        "tags": [
          "wallets"
        ],
        "summary": "Get Transaction History",
        "description": "List a wallet's transactions, most recent first.",
        "operationId": "get_transaction_history_api_v1_wallets__wallet_address__transactions_get",
        "parameters": [
          {
            "name": "wallet_address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Wallet Address"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_Transaction_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wallets/{wallet_address}/transactions/recent": {
      "get": {
        "tags": [
          "wallets"
        ],
        "summary": "Get Recent Transactions",
        "description": "Get recent transactions with enriched sender information.\n\nReturns transactions with human-readable sender names (when available)\nand transaction type labels. For transactions created before sender\nmetadata was stored, falls back to wallet address.",
        "operationId": "get_recent_transactions_api_v1_wallets__wallet_address__transactions_recent_get",
        "parameters": [
          {
            "name": "wallet_address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Wallet Address"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_RecentTransactionItem_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/transactions": {
      "get": {
        "tags": [
          "wallets"
        ],
        "summary": "List Transactions",
        "description": "List all transactions across all wallets owned by the current user.\n\nReturns a paginated list of transactions, ordered by most recent first.",
        "operationId": "list_transactions_api_v1_transactions_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_Transaction_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/transactions/{transaction_id}/decrypt": {
      "post": {
        "tags": [
          "wallets"
        ],
        "summary": "Decrypt Transaction Data",
        "description": "Decrypt a transaction's data payload.\n\nThe caller names which of their wallets to decrypt with; ownership of that\nwallet is what authorizes the read.",
        "operationId": "decrypt_transaction_data_api_v1_transactions__transaction_id__decrypt_post",
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Transaction Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DecryptTransactionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionData"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/transactions/{transaction_id}": {
      "get": {
        "tags": [
          "wallets"
        ],
        "summary": "Get Transaction",
        "description": "Get one of the caller's transactions by id.\n\nA transaction is readable by the wallets on either end of it. The id alone\ndoes not authorize the read: it is unguessable, but unguessable is not a\npermission, and on a third-party surface it would let any token holding\n`wallet:transactions:read` fetch a transaction that came into its\npossession by any means.",
        "operationId": "get_transaction_api_v1_transactions__transaction_id__get",
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Transaction Id"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Transaction"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/members/{user_uuid}/entitlements": {
      "get": {
        "tags": [
          "entitlements"
        ],
        "summary": "Get Member Entitlements",
        "description": "Read a member's active tier and entitlements in an organization.\n\nFor third-party gating: an org's backend checks whether one of its users\nholds a membership/tier/entitlement. A non-member returns\n``is_member=false`` with empty entitlements.",
        "operationId": "get_member_entitlements_api_v1_organizations__organization_slug__members__user_uuid__entitlements_get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberEntitlementsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/organizations/{organization_slug}/members/{user_uuid}/entitlements/{key}": {
      "get": {
        "tags": [
          "entitlements"
        ],
        "summary": "Check Member Entitlement",
        "description": "Focused check: does the member's active tier grant entitlement ``key``.",
        "operationId": "check_member_entitlement_api_v1_organizations__organization_slug__members__user_uuid__entitlements__key__get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Key"
            }
          },
          {
            "name": "organization_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntitlementCheckResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contacts": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "List Contacts",
        "description": "List your contacts.\n\nUse `detail=full` for complete profile data, `detail=summary` for basic info.\nUse `activity_uuid` to filter contacts met at a specific activity.\nUse `type` to filter by contact type (saved, dropped).\nUse `visited_after` to filter contacts with recent visits.\nUse `sort_by=last_visited` to sort by most recently visited.\nUse `sort_order=asc` to reverse the sort direction (e.g. oldest first).",
        "operationId": "list_contacts_api_v1_contacts_get",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "Page number",
              "default": 1,
              "title": "Page"
            },
            "description": "Page number"
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Items per page",
              "default": 20,
              "title": "Page Size"
            },
            "description": "Items per page"
          },
          {
            "name": "detail",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "full",
                "summary"
              ],
              "type": "string",
              "description": "Response detail level: 'full' for ProfileData, 'summary' for basic info",
              "default": "summary",
              "title": "Detail"
            },
            "description": "Response detail level: 'full' for ProfileData, 'summary' for basic info"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ],
              "description": "Search by name or username",
              "title": "Search"
            },
            "description": "Search by name or username"
          },
          {
            "name": "activity_uuid",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by activity UUID (contacts met at this activity)",
              "title": "Activity Uuid"
            },
            "description": "Filter by activity UUID (contacts met at this activity)"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by contact type (saved, dropped)",
              "title": "Type"
            },
            "description": "Filter by contact type (saved, dropped)"
          },
          {
            "name": "visited_after",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter contacts with visits after this datetime (ISO 8601)",
              "title": "Visited After"
            },
            "description": "Filter contacts with visits after this datetime (ISO 8601)"
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "created_at",
                    "last_visited"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort order: 'created_at' (default) or 'last_visited'",
              "title": "Sort By"
            },
            "description": "Sort order: 'created_at' (default) or 'last_visited'"
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort direction: 'asc' or 'desc' (default)",
              "title": "Sort Order"
            },
            "description": "Sort direction: 'asc' or 'desc' (default)"
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/PaginatedResponse_ContactDetailResponse_"
                    },
                    {
                      "$ref": "#/components/schemas/PaginatedResponse_ContactSummaryResponse_"
                    }
                  ],
                  "title": "Response List Contacts Api V1 Contacts Get"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "contacts"
        ],
        "summary": "Create Contact",
        "description": "Save a contact, and record the encounter that produced it.\n\nName the contact by `identifier` (a card, wallet, username, user_id or\nlink), by `profile_page_uuid`, or by `name` + `email` for someone with no\nDavi account. Saving someone already in your contacts adds a visit rather\nthan a duplicate.\n\nAn `identifier` must resolve to a claimed Davi profile \u2014 an identity that\nresolves to no account, or to an account with no profile, is rejected\nrather than saved as an anonymous contact, because the two are different\nrecords and guessing between them loses the distinction.\n\nAttribution (`via_client_id`) is taken from the caller's token, not the\nrequest body.",
        "operationId": "create_contact_api_v1_contacts_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContactRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactDetailResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contacts/activities": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "List Contact Activities",
        "description": "Activities where you have met contacts, with the count met at each.\n\nBounded by how many activities you have attended, so it returns one page.",
        "operationId": "list_contact_activities_api_v1_contacts_activities_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_ContactActivityResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contacts/{contact_uuid}": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "Get Contact",
        "description": "Get a single contact with all visits.\n\nReturns the contact details along with the full visit history.",
        "operationId": "get_contact_api_v1_contacts__contact_uuid__get",
        "parameters": [
          {
            "name": "contact_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactDetailResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "contacts"
        ],
        "summary": "Update Contact",
        "description": "Update an anonymous contact's details.\n\nOnly anonymous contacts can be updated. Registered contacts cannot\nhave their details modified (they come from the user's profile).\n\nProvide only the fields you want to update.",
        "operationId": "update_contact_api_v1_contacts__contact_uuid__patch",
        "parameters": [
          {
            "name": "contact_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateContactRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactDetailResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "contacts"
        ],
        "summary": "Remove Contact",
        "description": "Remove a contact and all its visits.",
        "operationId": "remove_contact_api_v1_contacts__contact_uuid__delete",
        "parameters": [
          {
            "name": "contact_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contacts/{contact_uuid}/visits": {
      "post": {
        "tags": [
          "contacts"
        ],
        "summary": "Add Contact Visit",
        "description": "Add a visit to an existing contact.\n\nRecords a new encounter/interaction with the contact. Attribution\n(`via_client_id`) is taken from the caller's token, not the request body.",
        "operationId": "add_contact_visit_api_v1_contacts__contact_uuid__visits_post",
        "parameters": [
          {
            "name": "contact_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddVisitRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactVisitResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contacts/{contact_uuid}/visits/{visit_uuid}": {
      "delete": {
        "tags": [
          "contacts"
        ],
        "summary": "Remove Contact Visit",
        "description": "Remove a specific visit from a contact.\n\nCannot remove the last visit - use the delete contact endpoint instead.",
        "operationId": "remove_contact_visit_api_v1_contacts__contact_uuid__visits__visit_uuid__delete",
        "parameters": [
          {
            "name": "contact_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Uuid"
            }
          },
          {
            "name": "visit_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Visit Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/register": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Register",
        "description": "Register a new user.\n\nReturns auth_user_uuid and email. User must login separately to get tokens.\n\nPayload varies by strategy:\n- password: {\"email\": \"...\", \"password\": \"...\"}",
        "operationId": "register_internal_iam_register_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegisterResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/login": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Login",
        "description": "Login with strategy-specific credentials.\n\nReturns access and refresh tokens. Optionally accepts OAuth2 scope parameter.\n\nPayload varies by strategy:\n- password: {\"email\": \"...\", \"password\": \"...\"} or {\"auth_user_uuid\": \"...\", \"password\": \"...\"}",
        "operationId": "login_internal_iam_login_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/token/refresh": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Refresh Token",
        "description": "Refresh access token using refresh token.\n\nImplements token rotation - the old refresh token becomes invalid\nand a new one is issued. If a ScopePolicy is configured, fresh scopes\nwill be fetched based on the user's current permissions.",
        "operationId": "refresh_token_internal_iam_token_refresh_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/token/revoke": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Revoke Token",
        "description": "Revoke the current access token/session.",
        "operationId": "revoke_token_internal_iam_token_revoke_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/token/exchange": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Token Exchange",
        "description": "Exchange access token for an org-scoped token (RFC 8693).\n\nThis endpoint allows first-party apps to exchange a user's access token\nfor an org-scoped token without needing an OAuth2 client_id.\n\nThe user must have access to the specified organization.\n\nRequest:\n    {\n        \"resource\": \"org:<org_uuid>\"\n    }\n\nReturns an access token with org context claims. No refresh token is issued\nfor exchanged tokens per RFC 8693.",
        "operationId": "token_exchange_internal_iam_token_exchange_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenExchangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenExchangeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/sessions": {
      "get": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "List Sessions",
        "description": "List all active sessions for the current user.",
        "operationId": "list_sessions_internal_iam_sessions_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/sessions/{session_uuid}": {
      "delete": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Revoke Session",
        "description": "Revoke a specific session.",
        "operationId": "revoke_session_internal_iam_sessions__session_uuid__delete",
        "parameters": [
          {
            "name": "session_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/logout": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Logout",
        "description": "Logout current session.",
        "operationId": "logout_internal_iam_logout_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/password/change": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Change Password",
        "description": "Change password for the current user.\n\nOptionally revokes all other sessions for security.",
        "operationId": "change_password_internal_iam_password_change_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordChangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/password/reset/request": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Request Password Reset",
        "description": "Request a password reset email.\n\nAlways returns success to prevent email enumeration.\nRate limited to 3 requests per email per hour.",
        "operationId": "request_password_reset_internal_iam_password_reset_request_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequestSchema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/password/reset/validate": {
      "get": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Validate Password Reset Token",
        "description": "Validate a password reset token.\n\nUse this to check if a token is valid before showing the reset form.",
        "operationId": "validate_password_reset_token_internal_iam_password_reset_validate_get",
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/password/reset/confirm": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Confirm Password Reset",
        "description": "Reset password using a valid token.\n\nAll existing sessions will be revoked for security.",
        "operationId": "confirm_password_reset_internal_iam_password_reset_confirm_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetConfirmSchema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/email/verify/send": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Send Verification Email",
        "description": "Send email verification to the current user.\n\nRequires authentication. Rate limited to 5 requests per user per hour.",
        "operationId": "send_verification_email_internal_iam_email_verify_send_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/email/verify/resend": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Resend Verification Email",
        "description": "Resend email verification (unauthenticated).\n\nThis endpoint allows users to request a new verification email without\nbeing logged in. Rate limited by IP address.\n\nAlways returns success to prevent email enumeration.",
        "operationId": "resend_verification_email_internal_iam_email_verify_resend_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailVerifyResendSchema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/email/verify/confirm": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Confirm Email Verification",
        "description": "Confirm email verification with token.\n\nThis endpoint is public (no authentication required).",
        "operationId": "confirm_email_verification_internal_iam_email_verify_confirm_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailVerifyConfirmSchema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/email/change/request": {
      "post": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Request Email Change",
        "description": "Request an email change.\n\nA verification email will be sent to the new email address.\nThe email will only be changed after verification.\n\nRequires authentication and a verified email.\nRate limited to 3 requests per user per hour.",
        "operationId": "request_email_change_internal_iam_email_change_request_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailChangeRequestSchema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/lib__iam__schemas__responses__MessageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/iam/info": {
      "get": {
        "tags": [
          "iam",
          "iam"
        ],
        "summary": "Auth Info",
        "description": "Get authentication system information.\n\nReturns available auth methods and feature flags for frontend configuration.",
        "operationId": "auth_info_internal_iam_info_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/auth/register": {
      "post": {
        "tags": [
          "internal-auth",
          "internal-auth"
        ],
        "summary": "Register",
        "description": "Register a new user.\n\nCreates both IAM auth_user and app User atomically.\nUser must complete onboarding to set username and profile, then login to get tokens.",
        "operationId": "register_internal_auth_register_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppRegisterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppRegisterResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/auth/lookup": {
      "get": {
        "tags": [
          "internal-auth",
          "internal-auth"
        ],
        "summary": "Lookup Account",
        "description": "Pre-login account lookup.\n\nReturns account existence, email verification status, available auth methods,\nand profile preview (name/avatar) for verified accounts.\n\nRate limited to 15 requests per minute, keyed on the visitor the calling\nfrontend is acting for rather than on its socket address \u2014 every visitor\nreaches this route through the same server, so keying on the connection\nwould make one budget for the whole site.",
        "operationId": "lookup_account_internal_auth_lookup_get",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Email"
            }
          },
          {
            "name": "username",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Username"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountLookupResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/auth/lookup-iam-user": {
      "get": {
        "tags": [
          "internal-auth",
          "internal-auth"
        ],
        "summary": "Lookup Iam User",
        "description": "Lookup iam_user_id by email or username.\n\nReturns {\"iam_user_id\": \"iam:uuid\" or null}\n\nRate limited to 15 requests per minute on its own budget, keyed on the\nvisitor the calling frontend is acting for.\n\nIt does not share `/lookup`'s key. Sharing one was right against an\nanonymous attacker \u2014 both answer whether an address has an account \u2014 but\nboth are called once per sign-in by the same server, so a shared budget\nthrottled the login flow against itself.",
        "operationId": "lookup_iam_user_internal_auth_lookup_iam_user_get",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Email"
            }
          },
          {
            "name": "username",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Username"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Lookup Iam User Internal Auth Lookup Iam User Get"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/auth/logout": {
      "post": {
        "tags": [
          "internal-auth",
          "internal-auth"
        ],
        "summary": "Logout",
        "description": "Logout the current user by revoking their session.",
        "operationId": "logout_internal_auth_logout_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionRevokeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/staff-invites/{invite_token}": {
      "get": {
        "tags": [
          "internal-staff-invites"
        ],
        "summary": "Get Staff Invite Details",
        "description": "Get staff invite details by token.\n\nReturns invite information including organization details for preview.",
        "operationId": "get_staff_invite_details_internal_staff_invites__invite_token__get",
        "parameters": [
          {
            "name": "invite_token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Invite Token"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteDetailsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/staff-invites/{invite_token}/accept": {
      "post": {
        "tags": [
          "internal-staff-invites"
        ],
        "summary": "Accept Staff Invite",
        "description": "Accept a staff invite and become an organization member.\n\nThe accepting user must be logged in with the email address the invite was sent to.",
        "operationId": "accept_staff_invite_internal_staff_invites__invite_token__accept_post",
        "parameters": [
          {
            "name": "invite_token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Invite Token"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptInviteResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/staff-invites/{invite_token}/decline": {
      "post": {
        "tags": [
          "internal-staff-invites"
        ],
        "summary": "Decline Staff Invite",
        "description": "Decline a staff invite.\n\nRequires authentication to prevent abuse.",
        "operationId": "decline_staff_invite_internal_staff_invites__invite_token__decline_post",
        "parameters": [
          {
            "name": "invite_token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Invite Token"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/onboarding": {
      "get": {
        "tags": [
          "onboarding"
        ],
        "summary": "Get Onboarding Status",
        "description": "Get current onboarding state including all collected data.",
        "operationId": "get_onboarding_status_internal_onboarding_get",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnboardingStatusResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "onboarding"
        ],
        "summary": "Update Onboarding Data",
        "description": "Update onboarding data (partial update).\n\nOnly provided fields are updated. Call this as the user fills in each step.",
        "operationId": "update_onboarding_data_internal_onboarding_patch",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOnboardingDataRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateOnboardingDataResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/onboarding/username-check/{username}": {
      "get": {
        "tags": [
          "onboarding"
        ],
        "summary": "Check Username Availability",
        "description": "Check if a username is available during onboarding.\n\nThis authenticated endpoint excludes the current user's username from the check,\nso if the user already set their username and goes back, it still shows as available.",
        "operationId": "check_username_availability_internal_onboarding_username_check__username__get",
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Username"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Check Username Availability Internal Onboarding Username Check  Username  Get"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/onboarding/set-username": {
      "post": {
        "tags": [
          "onboarding"
        ],
        "summary": "Set Username",
        "description": "Set username during onboarding.",
        "operationId": "set_username_internal_onboarding_set_username_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetUsernameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetUsernameResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/onboarding/complete": {
      "post": {
        "tags": [
          "onboarding"
        ],
        "summary": "Complete Onboarding",
        "description": "Complete onboarding: create wallet, create ProfilePage, claim profile if applicable.\n\nThis is the final step after the user has reviewed all their data.\n\nOptionally pass a `card_identifier` to claim a card during onboarding.\nThe claimed card becomes the user's primary card instead of creating a virtual card.",
        "operationId": "complete_onboarding_internal_onboarding_complete_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/CompleteOnboardingRequest"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompleteOnboardingResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/devices": {
      "get": {
        "tags": [
          "devices"
        ],
        "summary": "List Devices",
        "description": "List all registered devices for the current user.",
        "operationId": "list_devices_internal_devices_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "devices"
        ],
        "summary": "Register Device",
        "description": "Register a device for push notifications.\n\nIf the device token already exists, it will be updated and\nreassigned to the current user.",
        "operationId": "register_device_internal_devices_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterDeviceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/devices/{device_uuid}": {
      "get": {
        "tags": [
          "devices"
        ],
        "summary": "Get Device",
        "description": "Get details of a specific device.",
        "operationId": "get_device_internal_devices__device_uuid__get",
        "parameters": [
          {
            "name": "device_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Device Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "devices"
        ],
        "summary": "Update Device",
        "description": "Update device settings (name, active status).",
        "operationId": "update_device_internal_devices__device_uuid__patch",
        "parameters": [
          {
            "name": "device_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Device Uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDeviceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "devices"
        ],
        "summary": "Unregister Device",
        "description": "Unregister a device from push notifications.",
        "operationId": "unregister_device_internal_devices__device_uuid__delete",
        "parameters": [
          {
            "name": "device_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Device Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/users/me": {
      "patch": {
        "tags": [
          "internal-current-user"
        ],
        "summary": "Update Current User",
        "description": "Update the currently authenticated user's profile.",
        "operationId": "update_current_user_internal_users_me_patch",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserProfileRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentUserResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/users/by-iam-email": {
      "get": {
        "tags": [
          "internal-users"
        ],
        "summary": "Get User By Iam Email",
        "description": "Lookup a user by their IAM email.\n\nUsed for internal user resolution from email address.",
        "operationId": "get_user_by_iam_email_internal_users_by_iam_email_get",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Email"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/users/by-iam/{iam_user_id}": {
      "get": {
        "tags": [
          "internal-users"
        ],
        "summary": "Get User By Iam Id",
        "description": "Get a user by their IAM user ID.\n\nUsed for internal user resolution from IAM identity.",
        "operationId": "get_user_by_iam_id_internal_users_by_iam__iam_user_id__get",
        "parameters": [
          {
            "name": "iam_user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Iam User Id"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/users/by-iam/{iam_user_id}/role": {
      "get": {
        "tags": [
          "internal-users"
        ],
        "summary": "Get User Role By Iam User Id",
        "description": "Get a user's app role by their IAM user ID.\n\nReturns the role name or null for regular users.\nNote: Admin role is intentionally hidden and returns null.",
        "operationId": "get_user_role_by_iam_user_id_internal_users_by_iam__iam_user_id__role_get",
        "parameters": [
          {
            "name": "iam_user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Iam User Id"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserRoleResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/users/{user_uuid}/role": {
      "get": {
        "tags": [
          "internal-users"
        ],
        "summary": "Get User Role",
        "description": "Get a user's app role by UUID.\n\nReturns the role name or null for regular users.\nNote: Admin role is intentionally hidden and returns null.",
        "operationId": "get_user_role_internal_users__user_uuid__role_get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserRoleResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/users/{user_uuid}": {
      "patch": {
        "tags": [
          "internal-users"
        ],
        "summary": "Update User Profile",
        "description": "Update a user's profile.",
        "operationId": "update_user_profile_internal_users__user_uuid__patch",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserProfileRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "internal-users"
        ],
        "summary": "Delete User Account",
        "description": "Soft delete user account.\n\nSets deleted_at timestamp on the user record. User must transfer or delete\nany owned organizations before deleting their account.",
        "operationId": "delete_user_account_internal_users__user_uuid__delete",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/users/{user_uuid}/memberships": {
      "get": {
        "tags": [
          "internal-users"
        ],
        "summary": "Get User Memberships",
        "description": "Get all active memberships for a user across all organizations.\n\nReturns membership details including organization name and tier information.",
        "operationId": "get_user_memberships_internal_users__user_uuid__memberships_get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserMembershipWithOrgResponse"
                  },
                  "title": "Response Get User Memberships Internal Users  User Uuid  Memberships Get"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/users/{user_uuid}/wallets": {
      "get": {
        "tags": [
          "internal-users"
        ],
        "summary": "Get User Wallets",
        "description": "List all wallets owned by a user.",
        "operationId": "get_user_wallets_internal_users__user_uuid__wallets_get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_UserWalletResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/webhooks/events": {
      "get": {
        "tags": [
          "webhooks-api"
        ],
        "summary": "List Supported Events",
        "description": "List all supported webhook event types.\n\nAuthentication only, deliberately. The response is a static catalogue of\nplatform event names with no tenant data in it, so there is no resource to\nown and nothing an ownership check could be run against. This previously\ndeclared `webhook:read`, which is ownership-deferred and therefore never\nenforced on a route that owns nothing \u2014 the declaration read as a\npermission gate while admitting every authenticated token. Behaviour is\nunchanged; the declaration now says so.",
        "operationId": "list_supported_events_internal_webhooks_events_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response List Supported Events Internal Webhooks Events Get"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/webhooks/organizations/{organization_uuid}/webhooks": {
      "post": {
        "tags": [
          "webhooks-api"
        ],
        "summary": "Create Webhook",
        "description": "Create a new webhook for an organization.\n\nThe response includes the webhook secret which is only shown once.\nStore this secret securely as it's needed to verify webhook signatures.\n\nRequires an org-scoped token for the target organization.",
        "operationId": "create_webhook_internal_webhooks_organizations__organization_uuid__webhooks_post",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Organization Uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookWithSecretResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "webhooks-api"
        ],
        "summary": "List Webhooks",
        "description": "List all webhooks for an organization.",
        "operationId": "list_webhooks_internal_webhooks_organizations__organization_uuid__webhooks_get",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_WebhookResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/webhooks/{webhook_uuid}": {
      "get": {
        "tags": [
          "webhooks-api"
        ],
        "summary": "Get Webhook",
        "description": "Get webhook details.",
        "operationId": "get_webhook_internal_webhooks__webhook_uuid__get",
        "parameters": [
          {
            "name": "webhook_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Webhook Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "webhooks-api"
        ],
        "summary": "Update Webhook",
        "description": "Update webhook configuration.\n\nRequires an org-scoped token for the webhook's organization.",
        "operationId": "update_webhook_internal_webhooks__webhook_uuid__patch",
        "parameters": [
          {
            "name": "webhook_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Webhook Uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "webhooks-api"
        ],
        "summary": "Delete Webhook",
        "description": "Delete webhook.\n\nRequires an org-scoped token for the webhook's organization.",
        "operationId": "delete_webhook_internal_webhooks__webhook_uuid__delete",
        "parameters": [
          {
            "name": "webhook_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Webhook Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/webhooks/{webhook_uuid}/rotate-secret": {
      "post": {
        "tags": [
          "webhooks-api"
        ],
        "summary": "Rotate Webhook Secret",
        "description": "Rotate webhook secret.\n\nReturns a new secret which is only shown once.\nStore this secret securely as it's needed to verify webhook signatures.\n\nRequires an org-scoped token for the webhook's organization.",
        "operationId": "rotate_webhook_secret_internal_webhooks__webhook_uuid__rotate_secret_post",
        "parameters": [
          {
            "name": "webhook_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Webhook Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookWithSecretResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/webhooks/{webhook_uuid}/test": {
      "post": {
        "tags": [
          "webhooks-api"
        ],
        "summary": "Test Webhook",
        "description": "Test webhook by sending a test payload.\n\nSends a test event to verify the webhook URL is reachable.\n\nRequires an org-scoped token for the webhook's organization.",
        "operationId": "test_webhook_internal_webhooks__webhook_uuid__test_post",
        "parameters": [
          {
            "name": "webhook_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Webhook Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Test Webhook Internal Webhooks  Webhook Uuid  Test Post"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/webhooks/{webhook_uuid}/deliveries": {
      "get": {
        "tags": [
          "webhooks-api"
        ],
        "summary": "List Webhook Deliveries",
        "description": "List delivery history for a webhook.",
        "operationId": "list_webhook_deliveries_internal_webhooks__webhook_uuid__deliveries_get",
        "parameters": [
          {
            "name": "webhook_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Webhook Uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by status",
              "title": "Status"
            },
            "description": "Filter by status"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_WebhookDeliveryResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/organizations/{organization_uuid}/payment-backends/{backend}/connect": {
      "post": {
        "tags": [
          "internal-payments"
        ],
        "summary": "Connect Payment Backend",
        "description": "Connect (or re-connect) an org's account on a payment backend.",
        "operationId": "connect_payment_backend_internal_organizations__organization_uuid__payment_backends__backend__connect_post",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "backend",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Backend"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectPaymentBackendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentBackendConnectionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/organizations/{organization_uuid}/payment-backends/{backend}": {
      "get": {
        "tags": [
          "internal-payments"
        ],
        "summary": "Get Payment Backend",
        "description": "Show an org's connection for a backend (status + webhook URL).",
        "operationId": "get_payment_backend_internal_organizations__organization_uuid__payment_backends__backend__get",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "backend",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentBackendConnectionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/organizations/{organization_uuid}/membership-payments": {
      "post": {
        "tags": [
          "internal-payments"
        ],
        "summary": "Start Membership Payment",
        "description": "Start a paid join / renewal / tier change; returns the checkout action.",
        "operationId": "start_membership_payment_internal_organizations__organization_uuid__membership_payments_post",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartMembershipPaymentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartMembershipPaymentResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/profiles/email/{email}": {
      "get": {
        "tags": [
          "internal-profiles"
        ],
        "summary": "Get Profile By Email",
        "description": "Get a profile by email address.\n\nLooks up the user by email and returns their profile data enriched\nwith name and avatar from the user record.",
        "operationId": "get_profile_by_email_internal_profiles_email__email__get",
        "parameters": [
          {
            "name": "email",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Email"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileData"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/profiles/card/{card_identifier}": {
      "get": {
        "tags": [
          "internal-profiles"
        ],
        "summary": "Get Profile By Card",
        "description": "Get profile info for a card.\n\nReturns routing info for frontend:\n- username set -> redirect to /$username (claimed or unclaimed profile)\n- username null -> show claim prompt (logged in) or login message (not logged in)\n\nNote: Intentionally public - enables card lookup for profile routing.\nNo ownership check required; card lookups are used for public profile access.",
        "operationId": "get_profile_by_card_internal_profiles_card__card_identifier__get",
        "parameters": [
          {
            "name": "card_identifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Identifier"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardProfileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/profiles/verify-claim": {
      "post": {
        "tags": [
          "internal-profiles"
        ],
        "summary": "Verify Claim",
        "description": "Verify a claim code and get a registration code.\n\nPublic endpoint - no authentication required.\nReturns a registration code to pass to the registration endpoint.",
        "operationId": "verify_claim_internal_profiles_verify_claim_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyClaimRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyClaimResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/profiles/claim": {
      "post": {
        "tags": [
          "internal-profiles"
        ],
        "summary": "Claim Profile",
        "description": "Claim an unclaimed profile using a claim code.\n\nThe user must be authenticated and provide the correct claim code\nfor the profile they want to claim.",
        "operationId": "claim_profile_internal_profiles_claim_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClaimProfileRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/profiles/assign": {
      "post": {
        "tags": [
          "internal-profiles"
        ],
        "summary": "Assign Profile",
        "description": "Assign a profile to a card.\n\nThe user must own both the profile and the card.\nMultiple cards can reference the same profile.\nIf the card already has a profile, it will be replaced.",
        "operationId": "assign_profile_internal_profiles_assign_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignProfileRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/profiles/unassign": {
      "post": {
        "tags": [
          "internal-profiles"
        ],
        "summary": "Unassign Profile",
        "description": "Unassign a profile from a card.\n\nThe user must own the card.\nAfter unassignment, the card will fall back to the primary card's profile.",
        "operationId": "unassign_profile_internal_profiles_unassign_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnassignProfileRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/contact-drops": {
      "post": {
        "tags": [
          "internal-contact-drops"
        ],
        "summary": "Submit Contact Drop",
        "description": "Submit contact information to a user's profile.\n\nUsed by anonymous visitors to leave their contact details on a profile page.\nRate limited to 10 requests per IP per 10 minutes.\n\nAttribution (`via_client_id`) is taken from the caller's token, not the\nrequest body.",
        "operationId": "submit_contact_drop_internal_contact_drops_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactDropRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactDropResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/authorized-apps": {
      "get": {
        "tags": [
          "internal-authorized-apps"
        ],
        "summary": "List Authorized Apps",
        "description": "List third-party applications the user has authorized.\n\nReturns a list of OAuth2 clients that the user has granted consent to,\nalong with the scopes granted and when consent was given.\nFirst-party clients are excluded as they don't require explicit consent.",
        "operationId": "list_authorized_apps_internal_authorized_apps_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AuthorizedAppResponse"
                  },
                  "type": "array",
                  "title": "Response List Authorized Apps Internal Authorized Apps Get"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/authorized-apps/{client_id}": {
      "delete": {
        "tags": [
          "internal-authorized-apps"
        ],
        "summary": "Revoke Authorized App",
        "description": "Revoke access for a third-party application.\n\nRevokes the consent grant for the specified OAuth2 client,\npreventing it from accessing the user's data. Existing tokens\nmay still be valid until they expire.",
        "operationId": "revoke_authorized_app_internal_authorized_apps__client_id__delete",
        "parameters": [
          {
            "name": "client_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Client Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Revoke Authorized App Internal Authorized Apps  Client Id  Delete"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/organizations/{organization_uuid}/oauth-apps": {
      "get": {
        "tags": [
          "internal-oauth-apps"
        ],
        "summary": "List Oauth Apps",
        "description": "List all OAuth applications owned by the organization.",
        "operationId": "list_oauth_apps_internal_organizations__organization_uuid__oauth_apps_get",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OAuthAppSummary"
                  },
                  "title": "Response List Oauth Apps Internal Organizations  Organization Uuid  Oauth Apps Get"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "internal-oauth-apps"
        ],
        "summary": "Create Oauth App",
        "description": "Create a new OAuth application for the organization.\n\nThe client_secret is only returned once during creation for confidential clients.\nStore it securely - it cannot be retrieved again.",
        "operationId": "create_oauth_app_internal_organizations__organization_uuid__oauth_apps_post",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOAuthAppRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthAppCreated"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/organizations/{organization_uuid}/oauth-apps/{app_uuid}": {
      "get": {
        "tags": [
          "internal-oauth-apps"
        ],
        "summary": "Get Oauth App",
        "description": "Get full details of an OAuth application (excluding client secret).",
        "operationId": "get_oauth_app_internal_organizations__organization_uuid__oauth_apps__app_uuid__get",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "app_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "App Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthAppDetails"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "internal-oauth-apps"
        ],
        "summary": "Update Oauth App",
        "description": "Update an OAuth application's settings.",
        "operationId": "update_oauth_app_internal_organizations__organization_uuid__oauth_apps__app_uuid__patch",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "app_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "App Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOAuthAppRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthAppDetails"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "internal-oauth-apps"
        ],
        "summary": "Delete Oauth App",
        "description": "Deactivate an OAuth application (soft-delete).\n\nThe application will no longer be able to authenticate or issue tokens.\nExisting tokens may continue to work until they expire.",
        "operationId": "delete_oauth_app_internal_organizations__organization_uuid__oauth_apps__app_uuid__delete",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "app_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "App Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/organizations/{organization_uuid}/oauth-apps/{app_uuid}/rotate-secret": {
      "post": {
        "tags": [
          "internal-oauth-apps"
        ],
        "summary": "Rotate Oauth App Secret",
        "description": "Rotate the client secret for a confidential OAuth application.\n\nThe new client_secret is only returned once. Store it securely.\nThe old secret is immediately invalidated.",
        "operationId": "rotate_oauth_app_secret_internal_organizations__organization_uuid__oauth_apps__app_uuid__rotate_secret_post",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "app_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "App Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotateSecretResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/organizations/{organization_uuid}/presentation": {
      "get": {
        "tags": [
          "internal-organizations"
        ],
        "summary": "Get Organization Presentation",
        "description": "Get how an organization presents itself to people outside it.\n\nDeliberately not ownership-checked: the fields it returns are the ones the\norganization already publishes on its activities, profiles and reward links,\nand the caller is a first-party credential that belongs to no organization.\nA deleted organization is not found.",
        "operationId": "get_organization_presentation_internal_organizations__organization_uuid__presentation_get",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "string",
                  "format": "uuid"
                }
              ],
              "title": "Organization Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The organization's name, slug and logo",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationPresentationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/internal/sessions/{session_slug}/presentation": {
      "get": {
        "tags": [
          "internal-sessions"
        ],
        "summary": "Get Session Presentation",
        "description": "Get how a session presents itself on a check-in page.\n\nDeliberately not ownership-checked: these fields are the ones the session's\nactivity already publishes, and the caller is a first-party credential that\nbelongs to no organization. Whether check-in is *permitted* is not decided\nhere \u2014 that is the check-in call's job, against the identity presenting.",
        "operationId": "get_session_presentation_internal_sessions__session_slug__presentation_get",
        "parameters": [
          {
            "name": "session_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Session Slug"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The session's name, times and check-in state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionPresentationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/organizations/{organization_uuid}/staff": {
      "post": {
        "tags": [
          "admin-moderation"
        ],
        "summary": "Admin Add Organization Staff",
        "description": "Add a staff member to any organization (admin only).",
        "operationId": "admin_add_organization_staff_admin_organizations__organization_uuid__staff_post",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddOrganizationMemberRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationMemberResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/organizations/{organization_uuid}/staff/{user_uuid}": {
      "patch": {
        "tags": [
          "admin-moderation"
        ],
        "summary": "Admin Update Organization Staff Role",
        "description": "Change a staff member's role in any organization (admin only).",
        "operationId": "admin_update_organization_staff_role_admin_organizations__organization_uuid__staff__user_uuid__patch",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOrganizationMemberRoleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationMemberResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "admin-moderation"
        ],
        "summary": "Admin Remove Organization Staff",
        "description": "Remove a staff member from any organization (admin only).",
        "operationId": "admin_remove_organization_staff_admin_organizations__organization_uuid__staff__user_uuid__delete",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/organizations/{organization_uuid}/memberships/{user_uuid}": {
      "delete": {
        "tags": [
          "admin-moderation"
        ],
        "summary": "Admin Revoke Membership",
        "description": "Revoke a user's tier membership in any organization (admin only).\n\nSoft-deletes the active membership and emits MembershipLeftPayload via the\nservice, so notification/webhook/activity-log consumers fire.",
        "operationId": "admin_revoke_membership_admin_organizations__organization_uuid__memberships__user_uuid__delete",
        "parameters": [
          {
            "name": "organization_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Uuid"
            }
          },
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/activities/{activity_uuid}": {
      "delete": {
        "tags": [
          "admin-moderation"
        ],
        "summary": "Admin Delete Activity",
        "description": "Delete any activity (admin only).\n\nResolves the activity's organization, then deletes via the service so the\nActivityDeletedPayload event fires. The deleter is left unattributed since\na platform-admin action has no acting davi user.",
        "operationId": "admin_delete_activity_admin_activities__activity_uuid__delete",
        "parameters": [
          {
            "name": "activity_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Activity Uuid"
            }
          },
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/data_models__common__MessageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/platform/cards": {
      "post": {
        "tags": [
          "admin-platform-cards"
        ],
        "summary": "Bulk Register Platform Cards",
        "description": "Bulk register platform-owned cards (no issuing organization).\n\nCards produced by the fulfillment site are registered here once their\nphysical identifier (NFC UID / QR) is encoded. Each card may carry the\ndesign (card model) it was printed with so it is visible from first tap.\nCards that fail (e.g. duplicate identifier) are returned in ``failed``.",
        "operationId": "bulk_register_platform_cards_admin_platform_cards_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRegisterPlatformCardsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkRegisterCardsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/platform/card-model-images": {
      "post": {
        "tags": [
          "admin-platform-cards"
        ],
        "summary": "Upload Platform Card Model Image",
        "description": "Upload a platform-owned image and return its file UUID.\n\nBridges externally-rendered card artwork into davi's file store so it can be\nreferenced by a platform card model's front/back image. This is the direct\ncounterpart to the presigned owner-scoped upload flow, for first-party\noperator services (e.g. the order fulfillment site) that render card\nartwork in their own storage.",
        "operationId": "upload_platform_card_model_image_admin_platform_card_model_images_post",
        "parameters": [
          {
            "name": "default_backend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "primary",
              "title": "Default Backend"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_platform_card_model_image_admin_platform_card_model_images_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompleteUploadResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/platform/card-models": {
      "post": {
        "tags": [
          "admin-platform-cards"
        ],
        "summary": "Create Platform Card Model",
        "description": "Create a platform-owned card model (organization_uuid IS NULL).\n\nUsed by the fulfillment site to publish an approved card design so it can\nbe assigned to platform cards at registration time.",
        "operationId": "create_platform_card_model_admin_platform_card_models_post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCardModelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardModelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "admin-platform-cards"
        ],
        "summary": "List Platform Card Models",
        "description": "List platform-owned card models.",
        "operationId": "list_platform_card_models_admin_platform_card_models_get",
        "parameters": [
          {
            "name": "include_inactive",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include inactive card models in the list",
              "default": false,
              "title": "Include Inactive"
            },
            "description": "Include inactive card models in the list"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Page Size"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort By"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "asc",
              "title": "Sort Order"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_CardModelResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/platform/card-models/by-slug/{slug}": {
      "get": {
        "tags": [
          "admin-platform-cards"
        ],
        "summary": "Get Platform Card Model By Slug",
        "description": "Get a platform-owned card model by slug.\n\nThe slug-only counterpart to the by-uuid endpoint, for external surfaces\n(e.g. the fulfillment site's card detail page) that should reference card\nmodels by their public slug and never by a raw internal uuid.",
        "operationId": "get_platform_card_model_by_slug_admin_platform_card_models_by_slug__slug__get",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Slug"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardModelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/platform/card-models/{card_model_uuid}": {
      "get": {
        "tags": [
          "admin-platform-cards"
        ],
        "summary": "Get Platform Card Model",
        "description": "Get a platform-owned card model by UUID.",
        "operationId": "get_platform_card_model_admin_platform_card_models__card_model_uuid__get",
        "parameters": [
          {
            "name": "card_model_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Model Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardModelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "admin-platform-cards"
        ],
        "summary": "Update Platform Card Model",
        "description": "Update a platform-owned card model. Only provided fields change.",
        "operationId": "update_platform_card_model_admin_platform_card_models__card_model_uuid__patch",
        "parameters": [
          {
            "name": "card_model_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Model Uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCardModelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardModelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/rewards/{reward_uuid}/archive": {
      "patch": {
        "tags": [
          "admin-rewards"
        ],
        "summary": "Admin Archive Reward",
        "description": "Archive any reward template (platform moderation, admin only).\n\nThe org-scoped `PATCH /api/v1/rewards/{uuid}/archive` requires an org token\nfor the reward's organization; this admin variant moderates across all orgs.",
        "operationId": "admin_archive_reward_admin_rewards__reward_uuid__archive_patch",
        "parameters": [
          {
            "name": "reward_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardTemplateResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/rewards/{reward_uuid}/unarchive": {
      "patch": {
        "tags": [
          "admin-rewards"
        ],
        "summary": "Admin Unarchive Reward",
        "description": "Restore an archived reward template (platform moderation, admin only).",
        "operationId": "admin_unarchive_reward_admin_rewards__reward_uuid__unarchive_patch",
        "parameters": [
          {
            "name": "reward_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Reward Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardTemplateResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/admin/users/{user_uuid}/subscription": {
      "get": {
        "tags": [
          "admin-subscriptions"
        ],
        "summary": "Get User Subscription",
        "description": "Get a user's current subscription (admin only).",
        "operationId": "get_user_subscription_admin_users__user_uuid__subscription_get",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminSubscriptionResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "admin-subscriptions"
        ],
        "summary": "Change User Subscription",
        "description": "Change a user's subscription (admin only).\n\nSupports the admin console's three write intents through one endpoint so the\nservice layer stays the single source of truth (validation + event\nemission): cancel, create-or-change tier, or no-op fetch.",
        "operationId": "change_user_subscription_admin_users__user_uuid__subscription_patch",
        "parameters": [
          {
            "name": "user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeSubscriptionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminSubscriptionResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AcceptInviteResponse": {
        "properties": {
          "message": {
            "type": "string",
            "title": "Message",
            "default": "Invite accepted successfully",
            "examples": [
              "Invite accepted successfully"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_name": {
            "type": "string",
            "title": "Organization Name",
            "examples": [
              "Acme Corp"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "manager",
              "member"
            ],
            "title": "Role",
            "examples": [
              "member"
            ]
          }
        },
        "type": "object",
        "required": [
          "organization_uuid",
          "organization_name",
          "role"
        ],
        "title": "AcceptInviteResponse",
        "description": "Response after accepting an invite.",
        "example": {
          "message": "Invite accepted successfully",
          "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "organization_name": "Acme Corp",
          "role": "member"
        }
      },
      "AccountLookupAuthMethod": {
        "properties": {
          "type": {
            "type": "string",
            "title": "Type",
            "description": "Auth method type: password, google, apple",
            "examples": [
              "password"
            ]
          },
          "display_name": {
            "type": "string",
            "title": "Display Name",
            "description": "Human-readable name for display",
            "examples": [
              "Email & Password"
            ]
          }
        },
        "type": "object",
        "required": [
          "type",
          "display_name"
        ],
        "title": "AccountLookupAuthMethod",
        "description": "Available authentication method for an account.",
        "example": {
          "type": "password",
          "display_name": "Email & Password"
        }
      },
      "AccountLookupResponse": {
        "properties": {
          "exists": {
            "type": "boolean",
            "title": "Exists",
            "description": "Whether an account exists for this identifier",
            "examples": [
              true
            ]
          },
          "email_verified": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Verified",
            "description": "Email verification status (only if exists)",
            "examples": [
              true
            ]
          },
          "auth_methods": {
            "items": {
              "$ref": "#/components/schemas/AccountLookupAuthMethod"
            },
            "type": "array",
            "title": "Auth Methods",
            "description": "Available auth methods (only if exists)"
          },
          "profile": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccountProfilePreview"
              },
              {
                "type": "null"
              }
            ],
            "description": "Profile preview (only if exists and email verified)"
          }
        },
        "type": "object",
        "required": [
          "exists"
        ],
        "title": "AccountLookupResponse",
        "description": "Pre-login account lookup response.",
        "example": {
          "exists": true
        }
      },
      "AccountProfilePreview": {
        "properties": {
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name",
            "description": "User's first name",
            "examples": [
              "John"
            ]
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url",
            "description": "Avatar image URL",
            "examples": [
              "https://cdn.example.com/avatars/johndoe.png"
            ]
          }
        },
        "type": "object",
        "title": "AccountProfilePreview",
        "description": "Limited profile preview for pre-login display."
      },
      "ActivityAttendeeResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "activity_uuid": {
            "type": "string",
            "title": "Activity Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "session_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "wallet_address": {
            "type": "string",
            "title": "Wallet Address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "user_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "registered",
              "attended",
              "cancelled",
              "waitlisted"
            ],
            "title": "Status",
            "examples": [
              "registered"
            ]
          },
          "registered_at": {
            "type": "string",
            "format": "date-time",
            "title": "Registered At",
            "examples": [
              "2024-09-10T15:30:00Z"
            ]
          },
          "attended_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attended At",
            "examples": [
              "2024-09-15T09:15:00Z"
            ]
          },
          "additional_data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Additional Data",
            "examples": [
              {
                "ticket_type": "VIP"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-09-10T15:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-09-15T09:15:00Z"
            ]
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username",
            "examples": [
              "johndoe"
            ]
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name",
            "examples": [
              "John Doe"
            ]
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url",
            "examples": [
              "https://cdn.example.com/avatars/johndoe.png"
            ]
          },
          "proof_tx_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Proof Tx Id",
            "examples": [
              "tx_abc123xyz"
            ]
          },
          "proof_verified": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Proof Verified",
            "examples": [
              true
            ]
          },
          "proof_tx_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Proof Tx Hash",
            "examples": [
              "0xabc123def456789..."
            ]
          },
          "proof_amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Proof Amount",
            "examples": [
              1.0
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "activity_uuid",
          "wallet_address",
          "status",
          "registered_at",
          "created_at"
        ],
        "title": "ActivityAttendeeResponse",
        "examples": {
          "registered": {
            "summary": "Registered but not yet attended",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "status": "registered",
              "registered_at": "2024-09-10T15:30:00Z",
              "created_at": "2024-09-10T15:30:00Z",
              "attended_at": null,
              "proof_verified": null
            }
          },
          "attended": {
            "summary": "Attended with proof verification",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "status": "attended",
              "registered_at": "2024-09-10T15:30:00Z",
              "created_at": "2024-09-10T15:30:00Z",
              "proof_verified": true
            }
          },
          "waitlisted": {
            "summary": "On waitlist for full event",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "status": "waitlisted",
              "registered_at": "2024-09-10T15:30:00Z",
              "created_at": "2024-09-10T15:30:00Z",
              "attended_at": null,
              "proof_verified": null
            }
          },
          "cancelled": {
            "summary": "Cancelled registration",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "status": "cancelled",
              "registered_at": "2024-09-10T15:30:00Z",
              "created_at": "2024-09-10T15:30:00Z",
              "attended_at": null,
              "proof_verified": null
            }
          }
        }
      },
      "ActivityEventContent": {
        "properties": {
          "activity": {
            "$ref": "#/components/schemas/ActivitySummary"
          }
        },
        "type": "object",
        "required": [
          "activity"
        ],
        "title": "ActivityEventContent",
        "description": "Content for activity.register, activity.check_in, activity.cancel_registration."
      },
      "ActivityResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "annual-conference-2024"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Annual Conference 2024"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "examples": [
              "Join us for our annual tech conference"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image File Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image File Url",
            "examples": [
              "https://cdn.example.com/events/conference.jpg"
            ]
          },
          "website_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website Url",
            "examples": [
              "https://conference.example.com"
            ]
          },
          "additional_data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Additional Data",
            "examples": [
              {
                "venue": "Main Hall"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          },
          "max_attendees": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Attendees",
            "examples": [
              500
            ]
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "examples": [
              "2024-09-15T09:00:00Z"
            ]
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "examples": [
              "2024-09-15T18:00:00Z"
            ]
          },
          "is_session_checkin_open": {
            "type": "boolean",
            "title": "Is Session Checkin Open",
            "default": true,
            "examples": [
              true
            ]
          },
          "ticket_template_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ticket Template Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "requires_ticket": {
            "type": "boolean",
            "title": "Requires Ticket",
            "default": false,
            "examples": [
              false
            ]
          },
          "required_entitlement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required Entitlement",
            "examples": [
              "member"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "name",
          "organization_uuid",
          "created_at"
        ],
        "title": "ActivityResponse",
        "examples": {
          "draft": {
            "summary": "Unpublished draft activity",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "annual-conference-2024",
              "name": "Annual Conference 2024",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z",
              "is_session_checkin_open": true,
              "requires_ticket": false,
              "start_time": null,
              "end_time": null
            }
          },
          "in_progress": {
            "summary": "Activity currently happening with check-in enabled",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "annual-conference-2024",
              "name": "Annual Conference 2024",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z",
              "is_session_checkin_open": true,
              "requires_ticket": false
            }
          },
          "sold_out": {
            "summary": "Activity at maximum capacity",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "annual-conference-2024",
              "name": "Annual Conference 2024",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z",
              "is_session_checkin_open": true,
              "requires_ticket": false,
              "max_attendees": 500
            }
          }
        }
      },
      "ActivitySessionContext": {
        "properties": {
          "session_uuid": {
            "type": "string",
            "title": "Session Uuid"
          },
          "session_name": {
            "type": "string",
            "title": "Session Name"
          },
          "activity_uuid": {
            "type": "string",
            "title": "Activity Uuid"
          },
          "activity_name": {
            "type": "string",
            "title": "Activity Name"
          },
          "session_date": {
            "type": "string",
            "format": "date-time",
            "title": "Session Date"
          }
        },
        "type": "object",
        "required": [
          "session_uuid",
          "session_name",
          "activity_uuid",
          "activity_name",
          "session_date"
        ],
        "title": "ActivitySessionContext",
        "description": "Context about where the contact was met."
      },
      "ActivitySnapshot": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Activity unique identifier",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Activity name at issuance",
            "examples": [
              "Annual Conference 2024"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "description": "Activity slug at issuance",
            "examples": [
              "annual-conference-2024"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Activity description",
            "examples": [
              "Join us for our annual tech conference"
            ]
          },
          "image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Url",
            "description": "Activity image URL",
            "examples": [
              "https://cdn.example.com/events/conference.jpg"
            ]
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "Activity start time",
            "examples": [
              "2024-09-15T09:00:00Z"
            ]
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Activity end time",
            "examples": [
              "2024-09-15T18:00:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "slug"
        ],
        "title": "ActivitySnapshot",
        "description": "Activity details captured at time of reward issuance.",
        "example": {
          "id": "01234567-89ab-cdef-0123-456789abcdef",
          "name": "Annual Conference 2024",
          "slug": "annual-conference-2024"
        }
      },
      "ActivitySummary": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "annual-conference-2024"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Annual Conference 2024"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "examples": [
              "Join us for our annual tech conference"
            ]
          },
          "image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image File Url",
            "examples": [
              "https://cdn.example.com/events/conference.jpg"
            ]
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "examples": [
              "2024-09-15T09:00:00Z"
            ]
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "examples": [
              "2024-09-15T18:00:00Z"
            ]
          },
          "organization": {
            "$ref": "#/components/schemas/OrganizationSummary"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "name",
          "organization"
        ],
        "title": "ActivitySummary",
        "description": "Lightweight activity info for embedding.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "slug": "annual-conference-2024",
          "name": "Annual Conference 2024"
        }
      },
      "AddOrganizationMemberRequest": {
        "properties": {
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "description": "UUID of the user joining the organization"
          },
          "role": {
            "type": "string",
            "title": "Role",
            "description": "Role of the user in the organization, e.g., 'manager', 'member'"
          }
        },
        "type": "object",
        "required": [
          "user_uuid",
          "role"
        ],
        "title": "AddOrganizationMemberRequest"
      },
      "AddVisitRequest": {
        "properties": {
          "visited_at": {
            "type": "string",
            "format": "date-time",
            "title": "Visited At",
            "description": "Timestamp when the contact was encountered"
          },
          "activity_session_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activity Session Uuid",
            "description": "UUID of the activity session where the contact was met"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Notes about this encounter"
          },
          "via_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Via Client Id",
            "description": "Ignored. Attribution is derived server-side from the caller's access token; a client_id sent here is an unverified claim about another app and is discarded.",
            "deprecated": true
          }
        },
        "type": "object",
        "required": [
          "visited_at"
        ],
        "title": "AddVisitRequest",
        "description": "Request to add a visit to an existing contact."
      },
      "AdminSubscriptionResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "tier": {
            "type": "string",
            "title": "Tier",
            "examples": [
              "pro"
            ]
          },
          "status": {
            "type": "string",
            "title": "Status",
            "examples": [
              "active"
            ]
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "title": "Started At",
            "examples": [
              "2026-01-15T10:30:00Z"
            ]
          },
          "valid_until": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid Until"
          },
          "cancelled_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cancelled At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2026-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "user_uuid",
          "tier",
          "status",
          "started_at",
          "created_at"
        ],
        "title": "AdminSubscriptionResponse",
        "description": "Response for admin subscription endpoints.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "tier": "pro",
          "status": "active",
          "started_at": "2026-01-15T10:30:00Z",
          "created_at": "2026-01-15T10:30:00Z"
        }
      },
      "AppRegisterRequest": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email",
            "description": "Email address"
          },
          "password": {
            "type": "string",
            "minLength": 8,
            "title": "Password",
            "description": "Password (min 8 chars)"
          },
          "registration_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Registration Code",
            "description": "Registration code for invite or profile claim"
          },
          "card_identifier": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Card Identifier",
            "description": "Card identifier to claim during onboarding (persisted in onboarding state)"
          }
        },
        "type": "object",
        "required": [
          "email",
          "password"
        ],
        "title": "AppRegisterRequest",
        "description": "App-level registration request.\n\nSimplified registration - username and profile are set during onboarding."
      },
      "AppRegisterResponse": {
        "properties": {
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "description": "UUID of the created app user",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "auth_user_uuid": {
            "type": "string",
            "title": "Auth User Uuid",
            "description": "UUID of the IAM auth user",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "email_verified": {
            "type": "boolean",
            "title": "Email Verified",
            "description": "Whether email is verified",
            "examples": [
              false
            ]
          },
          "onboarding_required": {
            "type": "boolean",
            "title": "Onboarding Required",
            "description": "Whether user needs to complete onboarding",
            "default": true,
            "examples": [
              true
            ]
          }
        },
        "type": "object",
        "required": [
          "user_uuid",
          "auth_user_uuid",
          "email_verified"
        ],
        "title": "AppRegisterResponse",
        "description": "App-level registration response.",
        "example": {
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "auth_user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "email_verified": false,
          "onboarding_required": true
        }
      },
      "AssignOrgCardRequest": {
        "properties": {
          "identifier": {
            "type": "string",
            "title": "Identifier",
            "description": "The card's identifier, as manufactured. Must already exist in platform inventory: an organization takes a card, it does not mint one.",
            "examples": [
              "04A2B3C4D5E680"
            ]
          },
          "membership_tier_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Membership Tier Uuid",
            "description": "Optional membership tier to auto-assign when card is claimed"
          }
        },
        "type": "object",
        "required": [
          "identifier"
        ],
        "title": "AssignOrgCardRequest",
        "description": "One manufactured card an organization is taking into its inventory.",
        "example": {
          "identifier": "04A2B3C4D5E680"
        }
      },
      "AssignOrgCardsRequest": {
        "properties": {
          "cards": {
            "items": {
              "$ref": "#/components/schemas/AssignOrgCardRequest"
            },
            "type": "array",
            "maxItems": 100,
            "minItems": 1,
            "title": "Cards",
            "description": "Cards to take into inventory"
          },
          "membership_tier_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Membership Tier Uuid",
            "description": "Default membership tier for all cards (can be overridden per card)"
          }
        },
        "type": "object",
        "required": [
          "cards"
        ],
        "title": "AssignOrgCardsRequest",
        "description": "Take a batch of manufactured cards into an organization's inventory."
      },
      "AssignOrgCardsResponse": {
        "properties": {
          "assigned": {
            "items": {
              "$ref": "#/components/schemas/CardResponse"
            },
            "type": "array",
            "title": "Assigned",
            "description": "Cards now in the organization's inventory"
          },
          "failed": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Failed",
            "description": "Cards that could not be assigned, each with the reason"
          }
        },
        "type": "object",
        "title": "AssignOrgCardsResponse",
        "description": "Outcome of taking a batch of cards into inventory.\n\nPartial success is the normal case for a batch: one unknown identifier in a\nhundred should not reject the other ninety-nine."
      },
      "AssignProfileRequest": {
        "properties": {
          "profile_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              }
            ],
            "title": "Profile Uuid",
            "description": "UUID of the profile to assign"
          },
          "card_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              }
            ],
            "title": "Card Uuid",
            "description": "UUID of the card to assign the profile to"
          }
        },
        "type": "object",
        "required": [
          "profile_uuid",
          "card_uuid"
        ],
        "title": "AssignProfileRequest",
        "description": "Request to assign a profile to a card."
      },
      "AuthEventContent": {
        "properties": {
          "card_type": {
            "type": "string",
            "enum": [
              "nfc_card",
              "virtual_card",
              "qr_card"
            ],
            "title": "Card Type",
            "examples": [
              "nfc_card"
            ]
          },
          "identifier_masked": {
            "type": "string",
            "title": "Identifier Masked",
            "examples": [
              "NFC-***123"
            ]
          }
        },
        "type": "object",
        "required": [
          "card_type",
          "identifier_masked"
        ],
        "title": "AuthEventContent",
        "description": "Content for auth.register_method, auth.unregister_method.",
        "example": {
          "card_type": "nfc_card",
          "identifier_masked": "NFC-***123"
        }
      },
      "AuthInfoResponse": {
        "properties": {
          "methods": {
            "items": {
              "$ref": "#/components/schemas/AuthMethodInfo"
            },
            "type": "array",
            "title": "Methods"
          },
          "features": {
            "additionalProperties": {
              "type": "boolean"
            },
            "type": "object",
            "title": "Features"
          }
        },
        "type": "object",
        "required": [
          "methods",
          "features"
        ],
        "title": "AuthInfoResponse",
        "description": "Auth system information for frontend configuration."
      },
      "AuthMethodInfo": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "display_name": {
            "type": "string",
            "title": "Display Name"
          },
          "type": {
            "type": "string",
            "title": "Type"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": true
          }
        },
        "type": "object",
        "required": [
          "name",
          "display_name",
          "type"
        ],
        "title": "AuthMethodInfo",
        "description": "Information about an authentication method/strategy.",
        "example": {
          "enabled": true
        }
      },
      "AuthorizedAppResponse": {
        "properties": {
          "client_id": {
            "type": "string",
            "title": "Client Id",
            "description": "OAuth2 client identifier"
          },
          "client_name": {
            "type": "string",
            "title": "Client Name",
            "description": "Display name of the application"
          },
          "client_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Description",
            "description": "Description of the application"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes",
            "description": "Scopes granted to this application"
          },
          "granted_at": {
            "type": "string",
            "title": "Granted At",
            "description": "ISO 8601 timestamp when consent was granted"
          }
        },
        "type": "object",
        "required": [
          "client_id",
          "client_name",
          "scopes",
          "granted_at"
        ],
        "title": "AuthorizedAppResponse",
        "description": "Response for listing authorized third-party applications."
      },
      "BadRequestErrorResponse": {
        "properties": {
          "errors": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Errors",
            "description": "Map of field names to error messages. Use '_root' for form-level errors.",
            "example": {
              "_root": "An error occurred"
            }
          },
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Human-readable error summary"
          },
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code",
            "description": "Machine-readable error code"
          }
        },
        "type": "object",
        "required": [
          "errors",
          "message"
        ],
        "title": "BadRequestErrorResponse",
        "description": "400 Bad Request - Invalid request data.",
        "example": {
          "code": "bad_request",
          "errors": {
            "_root": "Invalid request"
          },
          "message": "Invalid request"
        }
      },
      "BaseRewardContent": {
        "properties": {
          "data": {
            "additionalProperties": true,
            "type": "object",
            "title": "Data",
            "description": "Custom data of the reward",
            "examples": [
              {
                "coupon_code": "SAVE20"
              }
            ]
          },
          "items": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/RewardAttachment"
                },
                {
                  "$ref": "#/components/schemas/RewardCertificate"
                },
                {
                  "$ref": "#/components/schemas/RewardBadge"
                },
                {
                  "$ref": "#/components/schemas/RewardCoupon"
                },
                {
                  "$ref": "#/components/schemas/RewardTicket"
                },
                {
                  "$ref": "#/components/schemas/RewardAsset"
                }
              ]
            },
            "type": "array",
            "title": "Items",
            "description": "List of reward items (attachments, badges, certificates, coupons)"
          },
          "content_version": {
            "type": "string",
            "title": "Content Version",
            "description": "The version of the reward content schema",
            "examples": [
              "1.0"
            ]
          },
          "generated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generated At",
            "description": "The timestamp when the reward content was generated",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "data",
          "content_version"
        ],
        "title": "BaseRewardContent",
        "description": "Core reward content structure used in templates and as base for issued rewards.",
        "example": {
          "data": {
            "coupon_code": "SAVE20"
          },
          "content_version": "1.0"
        }
      },
      "Body_authorize_consent_oauth2_authorize_consent_post": {
        "properties": {
          "client_id": {
            "type": "string",
            "maxLength": 64,
            "title": "Client Id"
          },
          "redirect_uri": {
            "type": "string",
            "maxLength": 2048,
            "title": "Redirect Uri"
          },
          "scope": {
            "type": "string",
            "maxLength": 1024,
            "title": "Scope"
          },
          "consent": {
            "type": "string",
            "maxLength": 16,
            "title": "Consent"
          },
          "state": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 512
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "code_challenge": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Code Challenge"
          },
          "code_challenge_method": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 16
              },
              {
                "type": "null"
              }
            ],
            "title": "Code Challenge Method"
          },
          "nonce": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 256
              },
              {
                "type": "null"
              }
            ],
            "title": "Nonce"
          }
        },
        "type": "object",
        "required": [
          "client_id",
          "redirect_uri",
          "scope",
          "consent"
        ],
        "title": "Body_authorize_consent_oauth2_authorize_consent_post"
      },
      "Body_introspect_oauth2_introspect_post": {
        "properties": {
          "token": {
            "type": "string",
            "maxLength": 4096,
            "title": "Token"
          },
          "token_type_hint": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ],
            "title": "Token Type Hint"
          },
          "client_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Id"
          },
          "client_secret": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 256
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Secret"
          }
        },
        "type": "object",
        "required": [
          "token"
        ],
        "title": "Body_introspect_oauth2_introspect_post"
      },
      "Body_revoke_oauth2_revoke_post": {
        "properties": {
          "token": {
            "type": "string",
            "maxLength": 4096,
            "title": "Token"
          },
          "token_type_hint": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ],
            "title": "Token Type Hint"
          },
          "client_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Id"
          },
          "client_secret": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 256
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Secret"
          }
        },
        "type": "object",
        "required": [
          "token"
        ],
        "title": "Body_revoke_oauth2_revoke_post"
      },
      "Body_token_oauth2_token_post": {
        "properties": {
          "grant_type": {
            "type": "string",
            "maxLength": 128,
            "title": "Grant Type"
          },
          "code": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 512
              },
              {
                "type": "null"
              }
            ],
            "title": "Code"
          },
          "redirect_uri": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ],
            "title": "Redirect Uri"
          },
          "code_verifier": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Code Verifier"
          },
          "refresh_token": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 4096
              },
              {
                "type": "null"
              }
            ],
            "title": "Refresh Token"
          },
          "client_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Id"
          },
          "client_secret": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 256
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Secret"
          },
          "scope": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1024
              },
              {
                "type": "null"
              }
            ],
            "title": "Scope"
          },
          "subject_token": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 4096
              },
              {
                "type": "null"
              }
            ],
            "title": "Subject Token"
          },
          "subject_token_type": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Subject Token Type"
          },
          "resource": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 512
              },
              {
                "type": "null"
              }
            ],
            "title": "Resource"
          }
        },
        "type": "object",
        "required": [
          "grant_type"
        ],
        "title": "Body_token_oauth2_token_post"
      },
      "Body_upload_platform_card_model_image_admin_platform_card_model_images_post": {
        "properties": {
          "file": {
            "type": "string",
            "format": "binary",
            "title": "File",
            "description": "Card model image (PNG/JPEG/WebP)"
          }
        },
        "type": "object",
        "required": [
          "file"
        ],
        "title": "Body_upload_platform_card_model_image_admin_platform_card_model_images_post"
      },
      "BulkRegisterCardsResponse": {
        "properties": {
          "registered": {
            "items": {
              "$ref": "#/components/schemas/CardResponse"
            },
            "type": "array",
            "title": "Registered",
            "description": "Successfully registered cards"
          },
          "failed": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Failed",
            "description": "Cards that failed to register with error details"
          }
        },
        "type": "object",
        "title": "BulkRegisterCardsResponse",
        "description": "Response for bulk card registration (platform or org)."
      },
      "BulkRegisterPlatformCardsRequest": {
        "properties": {
          "cards": {
            "items": {
              "$ref": "#/components/schemas/RegisterPlatformCardRequest"
            },
            "type": "array",
            "maxItems": 100,
            "minItems": 1,
            "title": "Cards",
            "description": "List of cards to register"
          },
          "membership_tier_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Membership Tier Uuid",
            "description": "Not supported for platform cards \u2014 memberships require an issuing organization, so a non-null value is rejected. Reserved."
          },
          "card_model_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Card Model Uuid",
            "description": "Default card model for all cards (overridable per card)"
          },
          "custom_front_image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Front Image File Uuid",
            "description": "Default per-card custom front image for all cards (overridable per card). Typically set per card rather than here."
          }
        },
        "type": "object",
        "required": [
          "cards"
        ],
        "title": "BulkRegisterPlatformCardsRequest",
        "description": "Request to register multiple platform-owned managed cards."
      },
      "CallToAction": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "email",
              "calendar",
              "contact"
            ],
            "title": "Type",
            "examples": [
              "email"
            ]
          },
          "label": {
            "type": "string",
            "title": "Label",
            "examples": [
              "Contact Me"
            ]
          },
          "url": {
            "type": "string",
            "title": "Url",
            "examples": [
              "mailto:john@example.com"
            ]
          }
        },
        "type": "object",
        "required": [
          "type",
          "label",
          "url"
        ],
        "title": "CallToAction",
        "description": "Call to action button configuration.",
        "example": {
          "type": "email",
          "label": "Contact Me",
          "url": "mailto:john@example.com"
        }
      },
      "CardModelResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "description": "Short, URL-friendly public identifier (nanoid).",
            "examples": [
              "V1StGXR8_Z"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Premium Gold Card"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "examples": [
              "Exclusive gold card design for premium members"
            ]
          },
          "organization_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "front_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Front Image Url",
            "examples": [
              "https://cdn.example.com/cards/premium-front.png"
            ]
          },
          "back_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Back Image Url",
            "examples": [
              "https://cdn.example.com/cards/premium-back.png"
            ]
          },
          "ordering_schema": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ordering Schema",
            "examples": [
              {
                "print_vendor": "acme",
                "sku": "GOLD-001"
              }
            ]
          },
          "template_data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Data",
            "description": "Raw template-kit design document, if the card model was published with one. Opaque, portable payload for rendering/authoring by consumers."
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "examples": [
              true
            ]
          },
          "profile_template_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Template Uuid",
            "description": "UUID of the profile page template attached to this card model. Must be platform-owned or owned by the same organization as the card model. When NULL, cards using this model do not auto-generate a profile.",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "name",
          "is_active",
          "created_at"
        ],
        "title": "CardModelResponse",
        "description": "Response model for card model.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "slug": "V1StGXR8_Z",
          "name": "Premium Gold Card",
          "is_active": true,
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "CardModelSummaryResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Premium Gold Card"
            ]
          },
          "front_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Front Image Url",
            "examples": [
              "https://cdn.example.com/cards/premium-front.png"
            ]
          },
          "back_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Back Image Url",
            "examples": [
              "https://cdn.example.com/cards/premium-back.png"
            ]
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "examples": [
              true
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "name",
          "is_active"
        ],
        "title": "CardModelSummaryResponse",
        "description": "Summary response for card model (used in card responses).",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "name": "Premium Gold Card",
          "is_active": true
        }
      },
      "CardProfileResponse": {
        "properties": {
          "profile": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProfileData"
              },
              {
                "type": "null"
              }
            ]
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username",
            "examples": [
              "johndoe"
            ]
          },
          "card_uuid": {
            "type": "string",
            "title": "Card Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "is_claimed": {
            "type": "boolean",
            "title": "Is Claimed",
            "examples": [
              true
            ]
          },
          "is_claimable": {
            "type": "boolean",
            "title": "Is Claimable",
            "description": "Whether this card can be claimed without org membership (system-issued cards)",
            "default": false
          },
          "is_frozen": {
            "type": "boolean",
            "title": "Is Frozen",
            "default": false,
            "examples": [
              false
            ]
          },
          "wallet_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wallet Address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "organization": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OrganizationBasicInfo"
              },
              {
                "type": "null"
              }
            ]
          },
          "card_model": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CardModelSummaryResponse"
              },
              {
                "type": "null"
              }
            ],
            "description": "Card design template with front/back image URLs"
          },
          "profile_page_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Page Uuid",
            "description": "UUID of the ProfilePage, if the card has one linked."
          },
          "is_locked": {
            "type": "boolean",
            "title": "Is Locked",
            "description": "True when the attached profile is org-issued and the owner's membership is inactive. Derived at read time.",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "card_uuid",
          "is_claimed"
        ],
        "title": "CardProfileResponse",
        "description": "Response for card profile lookup.\n\nUsed by frontend to decide routing:\n- username set -> redirect to /$username (works for both claimed and unclaimed profiles)\n- username null -> show \"Claim Card\" or \"Login\" prompt",
        "example": {
          "card_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "is_claimed": true,
          "is_claimable": false,
          "is_frozen": false,
          "is_locked": false
        }
      },
      "CardResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "identifier": {
            "type": "string",
            "title": "Identifier",
            "examples": [
              "NFC-ABC123"
            ]
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "examples": [
              "Work Card"
            ]
          },
          "card_type": {
            "$ref": "#/components/schemas/CardType",
            "examples": [
              "nfc_card"
            ]
          },
          "is_primary": {
            "type": "boolean",
            "title": "Is Primary",
            "default": false,
            "examples": [
              true
            ]
          },
          "is_frozen": {
            "type": "boolean",
            "title": "Is Frozen",
            "examples": [
              false
            ]
          },
          "organization_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "front_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Front Image Url",
            "description": "Resolved front image: custom override > card model > None",
            "examples": [
              "https://cdn.example.com/cards/default-front.png"
            ]
          },
          "back_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Back Image Url",
            "description": "Back image from card model design",
            "examples": [
              "https://cdn.example.com/cards/default-back.png"
            ]
          },
          "custom_front_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Front Image Url",
            "description": "User's custom front image override (if set)",
            "examples": [
              "https://cdn.example.com/cards/custom-front.png"
            ]
          },
          "profile_page_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Page Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "card_model_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Card Model Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "membership_tier_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Membership Tier Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "card_model": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CardModelSummaryResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "membership_tier": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MembershipTierSummaryResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "identifier",
          "card_type",
          "is_frozen",
          "created_at"
        ],
        "title": "CardResponse",
        "description": "Unified response model for a managed card.\n\nAlways includes resolved image URLs, card model summary, and primary status.\nUsed consistently across all card endpoints (list, detail, claim, rename, etc.).",
        "examples": {
          "active_card": {
            "summary": "Active managed card",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "identifier": "NFC-ABC123",
              "card_type": "nfc_card",
              "is_primary": true,
              "is_frozen": false,
              "created_at": "2024-01-15T10:30:00Z"
            }
          },
          "frozen_card": {
            "summary": "Frozen managed card",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "identifier": "NFC-ABC123",
              "card_type": "nfc_card",
              "is_primary": true,
              "is_frozen": true,
              "created_at": "2024-01-15T10:30:00Z"
            }
          }
        }
      },
      "CardType": {
        "type": "string",
        "enum": [
          "nfc_card",
          "virtual_card",
          "qr_card"
        ],
        "title": "CardType",
        "description": "Type of card for distinguishing different card technologies/formats."
      },
      "ChangeSubscriptionRequest": {
        "properties": {
          "tier": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tier",
            "examples": [
              "pro"
            ]
          },
          "valid_until": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid Until"
          },
          "cancel": {
            "type": "boolean",
            "title": "Cancel",
            "description": "Cancel the active subscription (takes precedence over tier).",
            "default": false
          }
        },
        "type": "object",
        "title": "ChangeSubscriptionRequest",
        "description": "Request body for PATCH /internal/users/{user_uuid}/subscription.\n\nAdmin-initiated subscription changes. Exactly one intent per request:\n- ``cancel=True`` deactivates the user's active subscription.\n- ``tier`` set creates-or-changes the active subscription to that tier.\n- neither set is a no-op that returns the current subscription.",
        "example": {
          "cancel": false
        }
      },
      "ChangeTierRequest": {
        "properties": {
          "membership_tier_slug": {
            "type": "string",
            "title": "Membership Tier Slug",
            "description": "Slug of the membership tier to move the member to"
          },
          "custom_tier_price_cents": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Price Cents",
            "description": "Custom price in cents for the new tier, if applicable"
          },
          "custom_tier_payment_interval": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "daily",
                  "weekly",
                  "monthly",
                  "yearly",
                  "one_time"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Payment Interval",
            "description": "Custom payment interval for the new tier, if applicable"
          }
        },
        "type": "object",
        "required": [
          "membership_tier_slug"
        ],
        "title": "ChangeTierRequest",
        "example": {
          "custom_tier_payment_interval": "daily"
        }
      },
      "CheckinRequest": {
        "properties": {
          "identifier": {
            "$ref": "#/components/schemas/IdentifierRef"
          },
          "idempotency_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Idempotency Key"
          },
          "proof_metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Proof Metadata"
          }
        },
        "type": "object",
        "required": [
          "identifier"
        ],
        "title": "CheckinRequest"
      },
      "CheckinResponse": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "examples": [
              "checked_in"
            ]
          },
          "action_taken": {
            "type": "string",
            "title": "Action Taken",
            "examples": [
              "checkin",
              "walkin_register_checkin"
            ]
          },
          "attendance_proof_tx_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attendance Proof Tx Id"
          },
          "ticket": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HeldTicketRef"
              },
              {
                "type": "null"
              }
            ]
          },
          "user": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CheckinUser"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "status",
          "action_taken"
        ],
        "title": "CheckinResponse",
        "example": {
          "status": "checked_in",
          "action_taken": "checkin"
        }
      },
      "CheckinUser": {
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          }
        },
        "type": "object",
        "title": "CheckinUser"
      },
      "ClaimCardRequest": {
        "properties": {
          "identifier": {
            "type": "string",
            "title": "Identifier",
            "description": "The card's identifier \u2014 its NFC serial or QR value. This is the one card operation keyed on the identifier rather than the uuid, because it is all a caller has after tapping a card they do not yet hold.",
            "examples": [
              "04A2B3C4D5E680"
            ]
          }
        },
        "type": "object",
        "required": [
          "identifier"
        ],
        "title": "ClaimCardRequest",
        "description": "Take possession of a card by the identifier printed on it.",
        "example": {
          "identifier": "04A2B3C4D5E680"
        }
      },
      "ClaimCardResponse": {
        "properties": {
          "card": {
            "$ref": "#/components/schemas/CardResponse",
            "description": "The claimed card"
          },
          "wallet_address": {
            "type": "string",
            "title": "Wallet Address",
            "description": "Wallet address linked to the card",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "membership_created": {
            "type": "boolean",
            "title": "Membership Created",
            "description": "Whether a new membership was created as part of claiming",
            "default": false,
            "examples": [
              true
            ]
          }
        },
        "type": "object",
        "required": [
          "card",
          "wallet_address"
        ],
        "title": "ClaimCardResponse",
        "description": "Response after claiming a card.",
        "example": {
          "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
          "membership_created": true
        }
      },
      "ClaimProfileRequest": {
        "properties": {
          "username": {
            "type": "string",
            "title": "Username",
            "description": "Username of the profile to claim"
          },
          "claim_code": {
            "type": "string",
            "title": "Claim Code",
            "description": "Secret claim code"
          }
        },
        "type": "object",
        "required": [
          "username",
          "claim_code"
        ],
        "title": "ClaimProfileRequest",
        "description": "Request to claim an unclaimed profile."
      },
      "ClientInfo": {
        "properties": {
          "client_id": {
            "type": "string",
            "title": "Client Id"
          },
          "client_name": {
            "type": "string",
            "title": "Client Name"
          },
          "client_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Description"
          },
          "icon_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon Url"
          },
          "client_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Uri"
          }
        },
        "type": "object",
        "required": [
          "client_id",
          "client_name"
        ],
        "title": "ClientInfo",
        "description": "OAuth client information for consent/login display."
      },
      "CompleteOnboardingRequest": {
        "properties": {
          "card_identifier": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Card Identifier",
            "description": "Card identifier to claim during onboarding. If provided, this card becomes the primary card instead of creating a virtual card."
          }
        },
        "type": "object",
        "title": "CompleteOnboardingRequest",
        "description": "Request to complete onboarding."
      },
      "CompleteOnboardingResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "wallet_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wallet Address"
          },
          "profile_claimed": {
            "type": "boolean",
            "title": "Profile Claimed",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "success"
        ],
        "title": "CompleteOnboardingResponse",
        "description": "Response after completing onboarding.",
        "example": {
          "profile_claimed": false
        }
      },
      "CompleteUploadRequest": {
        "properties": {
          "parts": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/CompletedPartInfo"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parts"
          }
        },
        "type": "object",
        "title": "CompleteUploadRequest"
      },
      "CompleteUploadResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid"
          },
          "slug": {
            "type": "string",
            "title": "Slug"
          },
          "file_name": {
            "type": "string",
            "title": "File Name"
          },
          "content_type": {
            "type": "string",
            "title": "Content Type"
          },
          "size_in_bytes": {
            "type": "integer",
            "title": "Size In Bytes"
          },
          "file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Url"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "file_name",
          "content_type",
          "size_in_bytes"
        ],
        "title": "CompleteUploadResponse"
      },
      "CompletedPartInfo": {
        "properties": {
          "part_number": {
            "type": "integer",
            "title": "Part Number"
          },
          "etag": {
            "type": "string",
            "title": "Etag"
          }
        },
        "type": "object",
        "required": [
          "part_number",
          "etag"
        ],
        "title": "CompletedPartInfo"
      },
      "ConflictErrorResponse": {
        "properties": {
          "errors": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Errors",
            "description": "Map of field names to error messages. Use '_root' for form-level errors.",
            "example": {
              "_root": "An error occurred"
            }
          },
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Human-readable error summary"
          },
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code",
            "description": "Machine-readable error code"
          }
        },
        "type": "object",
        "required": [
          "errors",
          "message"
        ],
        "title": "ConflictErrorResponse",
        "description": "409 Conflict - Resource already exists.",
        "example": {
          "code": "conflict",
          "errors": {
            "email": "Email already in use"
          },
          "message": "Email already in use"
        }
      },
      "ConnectPaymentBackendRequest": {
        "properties": {
          "credentials": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Credentials",
            "description": "Backend credential fields (e.g. Preceipt: merchant_id, api_key, webhook_secrets, payment_configuration_id)"
          }
        },
        "type": "object",
        "required": [
          "credentials"
        ],
        "title": "ConnectPaymentBackendRequest",
        "description": "Key-paste credentials for a backend (fields validated per backend)."
      },
      "ContactActivityResponse": {
        "properties": {
          "activity_uuid": {
            "type": "string",
            "title": "Activity Uuid"
          },
          "activity_name": {
            "type": "string",
            "title": "Activity Name"
          },
          "activity_slug": {
            "type": "string",
            "title": "Activity Slug"
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid"
          },
          "contact_count": {
            "type": "integer",
            "title": "Contact Count",
            "description": "Number of contacts met at this activity"
          }
        },
        "type": "object",
        "required": [
          "activity_uuid",
          "activity_name",
          "activity_slug",
          "organization_uuid",
          "contact_count"
        ],
        "title": "ContactActivityResponse",
        "description": "Activity where contacts were met."
      },
      "ContactDetailResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid"
          },
          "type": {
            "type": "string",
            "title": "Type",
            "default": "saved"
          },
          "is_registered": {
            "type": "boolean",
            "title": "Is Registered",
            "default": false
          },
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "position": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Company"
          },
          "phone_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number"
          },
          "image_url": {
            "type": "string",
            "title": "Image Url",
            "default": ""
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          },
          "profile_page_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Page Uuid"
          },
          "visit_count": {
            "type": "integer",
            "title": "Visit Count",
            "default": 0
          },
          "saved_at": {
            "type": "string",
            "format": "date-time",
            "title": "Saved At"
          },
          "last_visited_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Visited At"
          },
          "met_at": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActivitySessionContext"
              },
              {
                "type": "null"
              }
            ]
          },
          "profile": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProfileData"
              },
              {
                "type": "null"
              }
            ]
          },
          "visits": {
            "items": {
              "$ref": "#/components/schemas/ContactVisitResponse"
            },
            "type": "array",
            "title": "Visits",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "saved_at"
        ],
        "title": "ContactDetailResponse",
        "description": "Extended response with full profile data and visit history.",
        "example": {
          "type": "saved",
          "is_registered": false,
          "name": "",
          "image_url": "",
          "visit_count": 0,
          "visits": []
        }
      },
      "ContactDropRequest": {
        "properties": {
          "profile_page_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              }
            ],
            "title": "Profile Page Uuid",
            "description": "UUID of the profile page to drop contact info on"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "title": "Name",
            "description": "Name of the visitor"
          },
          "email": {
            "type": "string",
            "maxLength": 255,
            "title": "Email",
            "description": "Email of the visitor"
          },
          "position": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Position",
            "description": "Job position/title of the visitor"
          },
          "company": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Company",
            "description": "Company of the visitor"
          },
          "phone_number": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number",
            "description": "Phone number of the visitor (international format)"
          },
          "via_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Via Client Id",
            "description": "Ignored. Attribution is derived server-side from the caller's access token; a client_id sent here is an unverified claim about another app and is discarded.",
            "deprecated": true
          }
        },
        "type": "object",
        "required": [
          "profile_page_uuid",
          "name",
          "email"
        ],
        "title": "ContactDropRequest",
        "description": "Request to drop contact information on a user's profile."
      },
      "ContactDropResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid"
          },
          "message": {
            "type": "string",
            "title": "Message",
            "default": "Contact information submitted successfully"
          }
        },
        "type": "object",
        "required": [
          "uuid"
        ],
        "title": "ContactDropResponse",
        "description": "Response after successfully dropping contact information.",
        "example": {
          "message": "Contact information submitted successfully"
        }
      },
      "ContactSummaryResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid"
          },
          "type": {
            "type": "string",
            "title": "Type",
            "default": "saved"
          },
          "is_registered": {
            "type": "boolean",
            "title": "Is Registered",
            "default": false
          },
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "position": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Company"
          },
          "phone_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number"
          },
          "image_url": {
            "type": "string",
            "title": "Image Url",
            "default": ""
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          },
          "profile_page_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Page Uuid"
          },
          "visit_count": {
            "type": "integer",
            "title": "Visit Count",
            "default": 0
          },
          "saved_at": {
            "type": "string",
            "format": "date-time",
            "title": "Saved At"
          },
          "last_visited_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Visited At"
          },
          "met_at": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActivitySessionContext"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "saved_at"
        ],
        "title": "ContactSummaryResponse",
        "description": "Summary response for list views (no profile or visits).",
        "example": {
          "type": "saved",
          "is_registered": false,
          "name": "",
          "image_url": "",
          "visit_count": 0
        }
      },
      "ContactVisitResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid"
          },
          "visited_at": {
            "type": "string",
            "format": "date-time",
            "title": "Visited At"
          },
          "activity_session_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activity Session Uuid"
          },
          "via_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Via Client Id"
          },
          "met_at": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActivitySessionContext"
              },
              {
                "type": "null"
              }
            ]
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "visited_at",
          "created_at"
        ],
        "title": "ContactVisitResponse",
        "description": "Response for a single contact visit."
      },
      "ContentConfig": {
        "properties": {
          "storage_type": {
            "type": "string",
            "enum": [
              "platform",
              "external",
              "dynamic"
            ],
            "title": "Storage Type",
            "description": "Type of content storage",
            "examples": [
              "platform"
            ]
          },
          "content_template": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BaseRewardContent"
              },
              {
                "type": "null"
              }
            ],
            "description": "Template for reward content"
          },
          "external_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Id",
            "description": "Identifier for external content source",
            "examples": [
              "ext-reward-123"
            ]
          },
          "external_webhook_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Webhook Uuid",
            "description": "Webhook UUID to call for external content generation",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "generator_params": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generator Params",
            "description": "Parameters for dynamic content generation",
            "examples": [
              {
                "template_id": "badge-v1"
              }
            ]
          },
          "cache_strategy": {
            "type": "string",
            "enum": [
              "always",
              "on_demand",
              "never"
            ],
            "title": "Cache Strategy",
            "description": "Caching strategy for reward content",
            "default": "on_demand",
            "examples": [
              "on_demand"
            ]
          },
          "cache_ttl_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cache Ttl Seconds",
            "description": "Time-to-live for cached content in seconds",
            "examples": [
              86400
            ]
          },
          "content_immutable": {
            "type": "boolean",
            "title": "Content Immutable",
            "description": "Whether the content is immutable once created",
            "default": false,
            "examples": [
              true
            ]
          },
          "mirror_assets": {
            "type": "boolean",
            "title": "Mirror Assets",
            "description": "Copy externally-hosted images and documents named by this reward's items into Davi's storage, and serve them from there. On by default: the content of an issued reward is frozen but the URLs in it are not, so without this the artwork can be changed or taken down after issuance, and the holder's browser reveals their IP and viewing times to whoever serves it. Turn it off for artwork you intend to keep updating across already-issued rewards, or for assets too large to copy. Mirroring is best-effort \u2014 an asset that cannot be copied keeps its original URL.",
            "default": true,
            "examples": [
              true
            ]
          }
        },
        "type": "object",
        "required": [
          "storage_type"
        ],
        "title": "ContentConfig",
        "example": {
          "storage_type": "platform",
          "cache_strategy": "on_demand",
          "content_immutable": true,
          "mirror_assets": true
        }
      },
      "CreateActivityRequest": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the activity"
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "Description of the activity"
          },
          "image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image File Uuid",
            "description": "UUID of the image file associated with the activity"
          },
          "website_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website Url",
            "description": "Website URL for the activity"
          },
          "additional_data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Additional Data",
            "description": "Additional JSON data for the activity"
          },
          "max_attendees": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Attendees",
            "description": "Maximum number of attendees (None = unlimited)"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "Activity start time (for check-in validation)"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Activity end time (for check-in validation)"
          },
          "is_session_checkin_open": {
            "type": "boolean",
            "title": "Is Session Checkin Open",
            "description": "Master switch for session check-in (False = all session check-ins closed)",
            "default": true
          },
          "ticket_template_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ticket Template Uuid",
            "description": "Default ticket reward template for the event"
          },
          "requires_ticket": {
            "type": "boolean",
            "title": "Requires Ticket",
            "description": "Whether sessions require a ticket by default",
            "default": false
          },
          "required_entitlement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required Entitlement",
            "description": "Entitlement gate to attend (None = open; 'member' = any active member; a tier key = that capability). Sessions may override."
          }
        },
        "type": "object",
        "required": [
          "name",
          "description"
        ],
        "title": "CreateActivityRequest",
        "example": {
          "is_session_checkin_open": true,
          "requires_ticket": false
        }
      },
      "CreateCardModelRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "title": "Name",
            "description": "Display name for the card design"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Optional description of the card design"
          },
          "front_image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Front Image File Uuid",
            "description": "UUID of the uploaded file for the front image"
          },
          "back_image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Back Image File Uuid",
            "description": "UUID of the uploaded file for the back image"
          },
          "ordering_schema": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ordering Schema",
            "description": "JSON schema for ordering/printing workflows"
          },
          "template_data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Data",
            "description": "Raw template-kit design document (the source template). Stored as an opaque, portable payload so consumers can fetch and render the design; carries its own format_version."
          },
          "profile_template_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Template Uuid",
            "description": "UUID of the profile page template attached to this card model. Must be platform-owned or owned by the same organization as the card model. When NULL, cards using this model do not auto-generate a profile."
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether the card model is active and can be assigned to cards",
            "default": true
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "CreateCardModelRequest",
        "description": "Request to create a new card model.",
        "example": {
          "is_active": true
        }
      },
      "CreateContactRequest": {
        "properties": {
          "identifier": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IdentifierRef"
              },
              {
                "type": "null"
              }
            ],
            "description": "Identity to save (card, wallet, username, user_id, or link)"
          },
          "profile_page_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Page Uuid",
            "description": "UUID of the profile page to save as a contact"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Name of the anonymous contact (paired with `email`)"
          },
          "position": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Position",
            "description": "Job position/title of the anonymous contact"
          },
          "company": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Company",
            "description": "Company/organization of the anonymous contact"
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Email",
            "description": "Email of the anonymous contact (paired with `name`)"
          },
          "visited_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Visited At",
            "description": "Timestamp when the contact was encountered."
          },
          "activity_session_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activity Session Uuid",
            "description": "UUID of the activity session where the contact was met"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Notes about this encounter"
          },
          "via_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Via Client Id",
            "description": "Ignored. Attribution is derived server-side from the caller's access token; a client_id sent here is an unverified claim about another app and is discarded.",
            "deprecated": true
          }
        },
        "type": "object",
        "title": "CreateContactRequest",
        "description": "Save a contact, named one of three ways.\n\nExactly one of these identifies who is being saved:\n\n- ``identifier`` \u2014 a card, wallet, username, user_id or link, resolved to\n  the Davi account behind it. The form to use when the encounter produced a\n  scan or a tap rather than a uuid.\n- ``profile_page_uuid`` \u2014 a profile already in hand.\n- ``name`` + ``email`` \u2014 someone with no Davi account.\n\nThe rest of the fields describe the encounter and apply to all three."
      },
      "CreateInviteRequest": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email",
            "description": "Email address to invite"
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "manager",
              "member"
            ],
            "title": "Role",
            "description": "Role to assign: 'manager' or 'member'",
            "default": "member"
          }
        },
        "type": "object",
        "required": [
          "email"
        ],
        "title": "CreateInviteRequest",
        "description": "Request to create an organization member invite.",
        "example": {
          "role": "member"
        }
      },
      "CreateMembershipTierRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "price_cents": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Price Cents"
          },
          "payment_interval": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "one_time"
            ],
            "title": "Payment Interval",
            "description": "Payment interval: 'daily', 'weekly', 'monthly', 'yearly', or 'one_time'"
          },
          "entitlements": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Entitlements",
            "description": "Capability keys this tier grants, mapped to their value (null for a boolean capability). The reserved 'member' key is implicit and stripped if supplied."
          }
        },
        "type": "object",
        "required": [
          "name",
          "price_cents",
          "payment_interval"
        ],
        "title": "CreateMembershipTierRequest",
        "example": {
          "payment_interval": "daily"
        }
      },
      "CreateOAuthAppRequest": {
        "properties": {
          "client_name": {
            "type": "string",
            "maxLength": 255,
            "title": "Client Name",
            "description": "Display name of the app"
          },
          "client_description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Description",
            "description": "Description of the app"
          },
          "client_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Uri",
            "description": "Homepage URL of the app"
          },
          "client_type": {
            "type": "string",
            "enum": [
              "public",
              "confidential"
            ],
            "title": "Client Type",
            "description": "Client type: public (SPA/mobile) or confidential (server-side)"
          },
          "redirect_uris": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 10,
            "minItems": 1,
            "title": "Redirect Uris",
            "description": "Allowed redirect URIs for OAuth callbacks"
          },
          "scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scopes",
            "description": "Requested scopes (defaults to openid, profile, email)"
          }
        },
        "type": "object",
        "required": [
          "client_name",
          "client_type",
          "redirect_uris"
        ],
        "title": "CreateOAuthAppRequest",
        "description": "Request to create a new OAuth2 application.",
        "example": {
          "client_type": "public"
        }
      },
      "CreateOrganizationRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "owner_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              }
            ],
            "title": "Owner Uuid",
            "description": "UUID of the organization owner"
          }
        },
        "type": "object",
        "required": [
          "name",
          "owner_uuid"
        ],
        "title": "CreateOrganizationRequest"
      },
      "CreatePrimaryWalletResponse": {
        "properties": {
          "wallet_uuid": {
            "type": "string",
            "title": "Wallet Uuid",
            "description": "Created wallet UUID",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "wallet_address": {
            "type": "string",
            "title": "Wallet Address",
            "description": "Created wallet address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "virtual_card_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Virtual Card Uuid",
            "description": "Created virtual card UUID (primary identity anchor)",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          }
        },
        "type": "object",
        "required": [
          "wallet_uuid",
          "wallet_address"
        ],
        "title": "CreatePrimaryWalletResponse",
        "description": "Response model for creating a primary wallet with virtual card.",
        "example": {
          "wallet_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "wallet_address": "0x1234567890abcdef1234567890abcdef12345678"
        }
      },
      "CreateRewardTemplateRequest": {
        "properties": {
          "organization_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              }
            ],
            "title": "Organization Uuid",
            "description": "UUID of the organization creating the reward template"
          },
          "activity_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activity Uuid",
            "description": "UUID of the associated activity, if any"
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the reward template"
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "Description of the reward template",
            "default": ""
          },
          "points": {
            "type": "integer",
            "title": "Points",
            "description": "Points required to redeem the reward. Point values are not accepted yet: omit the field or send 0, and any other value is refused.",
            "default": 0
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category",
            "description": "Category of the reward"
          },
          "supply_total": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Supply Total",
            "description": "Total supply of the reward. None means unlimited"
          },
          "required_entitlement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required Entitlement",
            "description": "Entitlement gate. None = open to everyone; 'member' = any active member; any other key = the member's active tier must grant it (grant the same key to several tiers to allow all of them)."
          },
          "content_config": {
            "$ref": "#/components/schemas/ContentConfig",
            "description": "Configuration for the reward content"
          }
        },
        "type": "object",
        "required": [
          "organization_uuid",
          "name",
          "content_config"
        ],
        "title": "CreateRewardTemplateRequest",
        "example": {
          "description": "",
          "points": 0
        }
      },
      "CreateRewardTriggerRequest": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the trigger"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Optional description"
          },
          "reward_template_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              }
            ],
            "title": "Reward Template Uuid",
            "description": "UUID of the reward template to distribute"
          },
          "trigger_scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "minItems": 1,
            "title": "Trigger Scopes",
            "description": "List of scope patterns (e.g., ['activity.checked_in:count:5', 'activity.registered:first'])"
          },
          "reward_metadata": {
            "additionalProperties": true,
            "type": "object",
            "title": "Reward Metadata",
            "description": "Metadata to pass with the reward distribution"
          },
          "organization_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Organization Uuid",
            "description": "Organization UUID (optional, for organization-specific triggers)"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "description": "Whether the trigger is enabled",
            "default": true
          },
          "deduplication_window_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deduplication Window Seconds",
            "description": "Deduplication window in seconds, null = no deduplication",
            "default": 300
          }
        },
        "type": "object",
        "required": [
          "name",
          "reward_template_uuid",
          "trigger_scopes"
        ],
        "title": "CreateRewardTriggerRequest",
        "description": "Request model for creating a reward trigger.",
        "example": {
          "enabled": true
        }
      },
      "CreateSessionRequest": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the session (e.g., 'Day 1 - Morning')"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Session description"
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "title": "Start Time",
            "description": "Session start time"
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "title": "End Time",
            "description": "Session end time"
          },
          "max_attendees": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Attendees",
            "description": "Optional capacity override (None = inherit from activity)"
          },
          "is_checkin_open": {
            "type": "boolean",
            "title": "Is Checkin Open",
            "description": "Manual toggle for check-in",
            "default": true
          },
          "requires_ticket": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requires Ticket",
            "description": "Require a ticket for this session (None = inherit event default)"
          },
          "required_entitlement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required Entitlement",
            "description": "Entitlement gate for this session (None = inherit event's)"
          },
          "ticket_template_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ticket Template Uuid",
            "description": "Per-session ticket override (None = inherit event default)"
          }
        },
        "type": "object",
        "required": [
          "name",
          "start_time",
          "end_time"
        ],
        "title": "CreateSessionRequest",
        "example": {
          "is_checkin_open": true
        }
      },
      "CreateWebhookRequest": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 2083,
            "minLength": 1,
            "format": "uri",
            "title": "Url",
            "description": "Webhook endpoint URL"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Human-readable description"
          },
          "event_types": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Event Types",
            "description": "List of event types to subscribe to"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "description": "Whether webhook is enabled",
            "default": true
          },
          "metadata": {
            "additionalProperties": true,
            "type": "object",
            "title": "Metadata",
            "description": "Custom metadata"
          }
        },
        "type": "object",
        "required": [
          "url",
          "event_types"
        ],
        "title": "CreateWebhookRequest",
        "description": "Request model for creating a webhook.",
        "example": {
          "enabled": true
        }
      },
      "CurrentRole": {
        "properties": {
          "title": {
            "type": "string",
            "title": "Title",
            "examples": [
              "Software Engineer"
            ]
          },
          "company": {
            "type": "string",
            "title": "Company",
            "examples": [
              "Acme Corp"
            ]
          }
        },
        "type": "object",
        "required": [
          "title",
          "company"
        ],
        "title": "CurrentRole",
        "description": "Current professional role.",
        "example": {
          "title": "Software Engineer",
          "company": "Acme Corp"
        }
      },
      "CurrentSubscriptionResponse": {
        "properties": {
          "tier": {
            "type": "string",
            "title": "Tier",
            "examples": [
              "free"
            ]
          },
          "display_name": {
            "type": "string",
            "title": "Display Name",
            "examples": [
              "Free"
            ]
          },
          "status": {
            "type": "string",
            "title": "Status",
            "examples": [
              "active"
            ]
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "title": "Started At",
            "examples": [
              "2026-01-15T10:30:00Z"
            ]
          },
          "valid_until": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid Until",
            "examples": [
              "2026-12-31T23:59:59Z"
            ]
          },
          "entitlements": {
            "$ref": "#/components/schemas/Entitlements"
          }
        },
        "type": "object",
        "required": [
          "tier",
          "display_name",
          "status",
          "started_at",
          "entitlements"
        ],
        "title": "CurrentSubscriptionResponse",
        "description": "Response for GET /api/v1/me/subscription.",
        "examples": {
          "free": {
            "summary": "Free tier subscription",
            "value": {
              "tier": "free",
              "display_name": "Free",
              "status": "active",
              "started_at": "2026-01-15T10:30:00Z",
              "valid_until": null
            }
          },
          "pro_active": {
            "summary": "Active Pro subscription",
            "value": {
              "tier": "pro",
              "display_name": "Pro",
              "status": "active",
              "started_at": "2026-01-15T10:30:00Z",
              "valid_until": "2026-12-31T23:59:59Z"
            }
          }
        }
      },
      "CurrentUserResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "description": "User UUID",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username",
            "description": "Username (set during onboarding)",
            "examples": [
              "johndoe"
            ]
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name",
            "description": "First name (set during onboarding)",
            "examples": [
              "John"
            ]
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name",
            "description": "Last name",
            "examples": [
              "Doe"
            ]
          },
          "phone_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number",
            "description": "Phone number",
            "examples": [
              "+1234567890"
            ]
          },
          "avatar_image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Image File Url",
            "description": "Avatar image URL",
            "examples": [
              "https://cdn.example.com/avatars/johndoe.png"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Account creation timestamp",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "iam_user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Iam User Id",
            "description": "IAM user ID (without 'iam:' prefix)",
            "examples": [
              "usr_abc123"
            ]
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email",
            "description": "Email address from auth provider",
            "examples": [
              "john@example.com"
            ]
          },
          "email_verified": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Verified",
            "description": "Whether email is verified",
            "examples": [
              true
            ]
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes",
            "description": "Granted permission scopes",
            "examples": [
              [
                "openid",
                "profile",
                "email"
              ]
            ]
          },
          "wallet_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wallet Address",
            "description": "Primary wallet address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "primary_card_identifier": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Card Identifier",
            "description": "Primary card identifier (e.g., NFC serial number)",
            "examples": [
              "NFC-ABC123"
            ]
          },
          "profile_complete": {
            "type": "boolean",
            "title": "Profile Complete",
            "description": "Whether user has completed their profile setup",
            "examples": [
              true
            ]
          },
          "onboarding_required": {
            "type": "boolean",
            "title": "Onboarding Required",
            "description": "Whether user needs to complete onboarding",
            "default": false,
            "examples": [
              false
            ]
          },
          "subscription": {
            "$ref": "#/components/schemas/CurrentSubscriptionResponse",
            "description": "The user's subscription tier and entitlements"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "created_at",
          "profile_complete",
          "subscription"
        ],
        "title": "CurrentUserResponse",
        "description": "Combined response with auth and user profile data.",
        "examples": {
          "pre_onboarding": {
            "summary": "User before completing onboarding",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z",
              "scopes": [
                "openid",
                "profile",
                "email"
              ],
              "profile_complete": false,
              "onboarding_required": true,
              "username": null,
              "first_name": null,
              "last_name": null
            }
          },
          "incomplete_profile": {
            "summary": "User with partial profile",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z",
              "scopes": [
                "openid",
                "profile",
                "email"
              ],
              "profile_complete": false,
              "onboarding_required": false,
              "last_name": null,
              "avatar_image_file_url": null
            }
          },
          "complete": {
            "summary": "User with complete profile",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z",
              "scopes": [
                "openid",
                "profile",
                "email"
              ],
              "profile_complete": true,
              "onboarding_required": false
            }
          }
        }
      },
      "CustomBackground": {
        "properties": {
          "background": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Background",
            "examples": [
              "linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
            ]
          },
          "backgroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backgroundcolor",
            "examples": [
              "#1a1a2e"
            ]
          },
          "backgroundImage": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backgroundimage",
            "examples": [
              "url('https://cdn.example.com/bg.jpg')"
            ]
          },
          "backgroundPosition": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backgroundposition",
            "examples": [
              "center"
            ]
          },
          "backgroundSize": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backgroundsize",
            "examples": [
              "cover"
            ]
          },
          "backgroundRepeat": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backgroundrepeat",
            "examples": [
              "no-repeat"
            ]
          },
          "backgroundAttachment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backgroundattachment",
            "examples": [
              "fixed"
            ]
          }
        },
        "type": "object",
        "title": "CustomBackground",
        "description": "Custom CSS background configuration."
      },
      "DecryptTransactionRequest": {
        "properties": {
          "wallet_address": {
            "type": "string",
            "title": "Wallet Address",
            "description": "Address of a wallet the caller owns that took part in the transaction. Its key is what decrypts the payload.",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          }
        },
        "type": "object",
        "required": [
          "wallet_address"
        ],
        "title": "DecryptTransactionRequest",
        "description": "Which of the caller's wallets to decrypt a transaction with.",
        "example": {
          "wallet_address": "0x1234567890abcdef1234567890abcdef12345678"
        }
      },
      "DeviceListResponse": {
        "properties": {
          "devices": {
            "items": {
              "$ref": "#/components/schemas/DeviceResponse"
            },
            "type": "array",
            "title": "Devices"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          }
        },
        "type": "object",
        "required": [
          "devices",
          "total"
        ],
        "title": "DeviceListResponse",
        "description": "Response model for list of devices."
      },
      "DevicePlatform": {
        "type": "string",
        "enum": [
          "ios",
          "android",
          "web"
        ],
        "title": "DevicePlatform",
        "description": "Platform type for the device."
      },
      "DeviceResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid"
          },
          "platform": {
            "$ref": "#/components/schemas/DevicePlatform"
          },
          "device_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Name"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "platform",
          "is_active",
          "created_at"
        ],
        "title": "DeviceResponse",
        "description": "Response model for registered device."
      },
      "EligibilityResponse": {
        "properties": {
          "has_valid_ticket": {
            "type": "boolean",
            "title": "Has Valid Ticket"
          },
          "attendee_status": {
            "type": "string",
            "title": "Attendee Status",
            "examples": [
              "none",
              "registered",
              "attended",
              "waitlisted",
              "cancelled"
            ]
          },
          "can_checkin": {
            "type": "boolean",
            "title": "Can Checkin"
          },
          "blocked_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Blocked Reason",
            "description": "What stands in the way, when something does. `checkin_closed`: check-in is switched off for the session or its event. `membership_required`: the session is gated on a membership or tier the identity does not hold. `registration_closed`: a ticket is required, the identity has none, and the ticket behind it is withdrawn or sold out. Treat an unfamiliar value as a plain refusal \u2014 the set grows.",
            "examples": [
              "membership_required"
            ]
          },
          "recommended_action": {
            "type": "string",
            "title": "Recommended Action",
            "description": "The one action worth offering: `checkin` when it would succeed, `register` when a ticket is the only thing missing and one can still be issued, `none` when neither applies.",
            "examples": [
              "checkin",
              "register",
              "none"
            ]
          },
          "user": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CheckinUser"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "has_valid_ticket",
          "attendee_status",
          "can_checkin",
          "recommended_action"
        ],
        "title": "EligibilityResponse",
        "example": {
          "attendee_status": "none",
          "recommended_action": "checkin"
        }
      },
      "EmailChangeRequestSchema": {
        "properties": {
          "new_email": {
            "type": "string",
            "format": "email",
            "title": "New Email"
          }
        },
        "type": "object",
        "required": [
          "new_email"
        ],
        "title": "EmailChangeRequestSchema",
        "description": "Email change request."
      },
      "EmailVerifyConfirmSchema": {
        "properties": {
          "token": {
            "type": "string",
            "title": "Token"
          }
        },
        "type": "object",
        "required": [
          "token"
        ],
        "title": "EmailVerifyConfirmSchema",
        "description": "Email verification confirmation."
      },
      "EmailVerifyResendSchema": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email"
          }
        },
        "type": "object",
        "required": [
          "email"
        ],
        "title": "EmailVerifyResendSchema",
        "description": "Email verification resend request (unauthenticated)."
      },
      "EnhancedUserActivityLogResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "activity_type": {
            "type": "string",
            "title": "Activity Type",
            "examples": [
              "activity.registered"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "content": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActivityEventContent"
              },
              {
                "$ref": "#/components/schemas/RewardEventContent"
              },
              {
                "$ref": "#/components/schemas/MembershipEventContent"
              },
              {
                "$ref": "#/components/schemas/AuthEventContent"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "activity_type",
          "created_at"
        ],
        "title": "EnhancedUserActivityLogResponse",
        "description": "Enriched activity log entry display.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "activity_type": "activity.registered",
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "EntitlementCheckResponse": {
        "properties": {
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "key": {
            "type": "string",
            "title": "Key",
            "examples": [
              "content:premium"
            ]
          },
          "granted": {
            "type": "boolean",
            "title": "Granted",
            "examples": [
              true
            ]
          }
        },
        "type": "object",
        "required": [
          "user_uuid",
          "organization_uuid",
          "key",
          "granted"
        ],
        "title": "EntitlementCheckResponse",
        "description": "Focused check: whether the user's active tier grants a specific key.",
        "example": {
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "key": "content:premium",
          "granted": true
        }
      },
      "Entitlements": {
        "properties": {
          "custom_backgrounds": {
            "type": "boolean",
            "title": "Custom Backgrounds",
            "default": false
          },
          "max_profiles": {
            "type": "integer",
            "title": "Max Profiles",
            "default": 1
          },
          "extras": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "object",
            "title": "Extras"
          }
        },
        "type": "object",
        "title": "Entitlements",
        "description": "Platform feature entitlements resolved from a user's subscription tier.\n\nTyped fields for known features, extras dict for experimental ones.\nDefaults represent the free tier baseline.",
        "example": {
          "custom_backgrounds": false,
          "max_profiles": 1
        }
      },
      "EquipRequest": {
        "properties": {
          "profile_uuid": {
            "type": "string",
            "title": "Profile Uuid",
            "description": "The profile to equip the asset onto",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slot": {
            "type": "string",
            "enum": [
              "profile-picture",
              "avatar-frame",
              "background",
              "character"
            ],
            "title": "Slot",
            "description": "Which part of the profile the asset is equipped to",
            "examples": [
              "profile-picture"
            ]
          }
        },
        "type": "object",
        "required": [
          "profile_uuid",
          "slot"
        ],
        "title": "EquipRequest",
        "example": {
          "profile_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "slot": "profile-picture"
        }
      },
      "EquipResponse": {
        "properties": {
          "profile_uuid": {
            "type": "string",
            "title": "Profile Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "asset_uuid": {
            "type": "string",
            "title": "Asset Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slot": {
            "type": "string",
            "title": "Slot",
            "description": "Where the asset was equipped. For a character part this is the slot the asset itself declares, which the caller does not choose.",
            "examples": [
              "profile-picture"
            ]
          },
          "image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Url",
            "description": "The equipped image, where the slot renders one.",
            "examples": [
              "https://cdn.example.com/files/abc.png"
            ]
          }
        },
        "type": "object",
        "required": [
          "profile_uuid",
          "asset_uuid",
          "slot"
        ],
        "title": "EquipResponse",
        "example": {
          "profile_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "asset_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "slot": "profile-picture"
        }
      },
      "ExecuteTriggerRequest": {
        "properties": {
          "user_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              }
            ],
            "title": "User Uuid",
            "description": "User UUID to trigger reward for"
          },
          "bypass_scope_validation": {
            "type": "boolean",
            "title": "Bypass Scope Validation",
            "description": "Skip scope pattern matching (admin override)",
            "default": false
          },
          "bypass_deduplication": {
            "type": "boolean",
            "title": "Bypass Deduplication",
            "description": "Skip deduplication check (allow duplicate rewards)",
            "default": false
          },
          "metadata": {
            "additionalProperties": true,
            "type": "object",
            "title": "Metadata",
            "description": "Additional metadata to merge with trigger metadata"
          }
        },
        "type": "object",
        "required": [
          "user_uuid"
        ],
        "title": "ExecuteTriggerRequest",
        "description": "Request model for manually executing a reward trigger.",
        "example": {
          "bypass_scope_validation": false,
          "bypass_deduplication": false
        }
      },
      "ExecuteTriggerResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success",
            "examples": [
              true
            ]
          },
          "transaction_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Id",
            "examples": [
              "tx_abc123xyz"
            ]
          },
          "delivery_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delivery Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "trigger_name": {
            "type": "string",
            "title": "Trigger Name",
            "examples": [
              "5th Check-in Bonus"
            ]
          },
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "reward_template_uuid": {
            "type": "string",
            "title": "Reward Template Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "points_distributed": {
            "type": "integer",
            "title": "Points Distributed",
            "examples": [
              100
            ]
          },
          "matched_scope": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Matched Scope",
            "examples": [
              "activity.checked_in:count:5"
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "examples": [
              null
            ]
          },
          "details": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Details",
            "examples": [
              {
                "check_in_count": 5,
                "milestone_reached": true
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "success",
          "trigger_name",
          "user_uuid",
          "reward_template_uuid",
          "points_distributed"
        ],
        "title": "ExecuteTriggerResponse",
        "description": "Response model for manual trigger execution.",
        "example": {
          "success": true,
          "trigger_name": "5th Check-in Bonus",
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "reward_template_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "points_distributed": 100
        }
      },
      "ExternalRewardTaskResponse": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "completed",
              "failed"
            ],
            "title": "Status",
            "description": "Status of the external reward generation",
            "examples": [
              "completed"
            ]
          },
          "delivery_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delivery Uuid",
            "description": "Webhook delivery UUID for polling (when status is pending)",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "transaction_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Id",
            "description": "Transaction ID (when status is completed)",
            "examples": [
              "tx_abc123xyz"
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Error message (when status is failed)",
            "examples": [
              null
            ]
          }
        },
        "type": "object",
        "required": [
          "status"
        ],
        "title": "ExternalRewardTaskResponse",
        "description": "Response for async external reward redemptions (polling endpoint).",
        "example": {
          "status": "completed"
        }
      },
      "ForbiddenErrorResponse": {
        "properties": {
          "errors": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Errors",
            "description": "Map of field names to error messages. Use '_root' for form-level errors.",
            "example": {
              "_root": "An error occurred"
            }
          },
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Human-readable error summary"
          },
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code",
            "description": "Machine-readable error code"
          }
        },
        "type": "object",
        "required": [
          "errors",
          "message"
        ],
        "title": "ForbiddenErrorResponse",
        "description": "403 Forbidden - Insufficient permissions.",
        "example": {
          "code": "forbidden",
          "errors": {
            "_root": "Insufficient permissions"
          },
          "message": "Insufficient permissions"
        }
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "HeldTicketRef": {
        "properties": {
          "transaction_id": {
            "type": "string",
            "title": "Transaction Id",
            "description": "Ledger transaction ID of the redeemed ticket reward",
            "examples": [
              "tx_abc123xyz"
            ]
          },
          "template_uuid": {
            "type": "string",
            "title": "Template Uuid",
            "description": "UUID of the reward template the ticket was issued from",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "wallet_address": {
            "type": "string",
            "title": "Wallet Address",
            "description": "Wallet address holding the valid ticket",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          }
        },
        "type": "object",
        "required": [
          "transaction_id",
          "template_uuid",
          "wallet_address"
        ],
        "title": "HeldTicketRef",
        "description": "Reference to the valid ticket a resolved identity holds for a session.\n\nA \"ticket\" here is the redeemed reward transaction (tagged\n``template:{uuid}``) that satisfies a ticket-gated session \u2014 distinct from\n``RewardTicket``, which is the ticket's displayable reward *content*. Mirrors\n``services.ticket_service.ValidTicket`` so it can be built with\n``HeldTicketRef.model_validate(valid_ticket)``.",
        "example": {
          "transaction_id": "tx_abc123xyz",
          "template_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "wallet_address": "0x1234567890abcdef1234567890abcdef12345678"
        }
      },
      "IdentifierRef": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "card",
              "wallet",
              "username",
              "user_id",
              "link"
            ],
            "title": "Type",
            "description": "How to interpret `value`"
          },
          "value": {
            "type": "string",
            "title": "Value",
            "description": "Identifier value (card uid, wallet address, username, user uuid, or Davi link)"
          }
        },
        "type": "object",
        "required": [
          "type",
          "value"
        ],
        "title": "IdentifierRef",
        "example": {
          "type": "card"
        }
      },
      "InitiateUploadRequest": {
        "properties": {
          "owner_type": {
            "type": "string",
            "enum": [
              "user",
              "organization",
              "activity",
              "reward"
            ],
            "title": "Owner Type",
            "description": "What the file will belong to",
            "examples": [
              "organization"
            ]
          },
          "owner_uuid": {
            "type": "string",
            "title": "Owner Uuid",
            "description": "UUID of the owning user, organization, activity or reward",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "file_name": {
            "type": "string",
            "title": "File Name",
            "examples": [
              "photo.jpg"
            ]
          },
          "content_type": {
            "type": "string",
            "title": "Content Type",
            "examples": [
              "image/jpeg"
            ]
          },
          "size_in_bytes": {
            "type": "integer",
            "title": "Size In Bytes",
            "examples": [
              1048576
            ]
          }
        },
        "type": "object",
        "required": [
          "owner_type",
          "owner_uuid",
          "file_name",
          "content_type",
          "size_in_bytes"
        ],
        "title": "InitiateUploadRequest",
        "example": {
          "owner_type": "organization",
          "owner_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "file_name": "photo.jpg",
          "content_type": "image/jpeg",
          "size_in_bytes": 1048576
        }
      },
      "InitiateUploadResponse": {
        "properties": {
          "upload_id": {
            "type": "string",
            "title": "Upload Id"
          },
          "upload_type": {
            "type": "string",
            "title": "Upload Type",
            "examples": [
              "simple",
              "multipart"
            ]
          },
          "upload_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Upload Url"
          },
          "parts": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/UploadPartInfo"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parts"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "upload_id",
          "upload_type",
          "expires_at"
        ],
        "title": "InitiateUploadResponse",
        "example": {
          "upload_type": "simple"
        }
      },
      "InstallRewardAssetsRequest": {
        "properties": {
          "transaction_id": {
            "type": "string",
            "title": "Transaction Id",
            "description": "TRS transaction id of the earned reward to install",
            "examples": [
              "tx_abc123xyz"
            ]
          }
        },
        "type": "object",
        "required": [
          "transaction_id"
        ],
        "title": "InstallRewardAssetsRequest",
        "example": {
          "transaction_id": "tx_abc123xyz"
        }
      },
      "InstructionsAction": {
        "properties": {
          "type": {
            "type": "string",
            "const": "instructions",
            "title": "Type",
            "default": "instructions"
          },
          "amount_minor": {
            "type": "integer",
            "title": "Amount Minor"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "account_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Number"
          },
          "reference": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference"
          },
          "qr": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Qr"
          }
        },
        "type": "object",
        "required": [
          "amount_minor",
          "currency"
        ],
        "title": "InstructionsAction",
        "description": "Display transfer instructions; the customer pays out-of-band.\n\nUsed by reconciliation / manual backends that have no hosted page.",
        "example": {
          "type": "instructions"
        }
      },
      "InviteDetailsResponse": {
        "properties": {
          "organization_name": {
            "type": "string",
            "title": "Organization Name",
            "examples": [
              "Acme Corp"
            ]
          },
          "organization_slug": {
            "type": "string",
            "title": "Organization Slug",
            "examples": [
              "acme-corp"
            ]
          },
          "invited_email": {
            "type": "string",
            "title": "Invited Email",
            "examples": [
              "newmember@example.com"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "manager",
              "member"
            ],
            "title": "Role",
            "examples": [
              "member"
            ]
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At",
            "examples": [
              "2024-02-15T10:30:00Z"
            ]
          },
          "is_expired": {
            "type": "boolean",
            "title": "Is Expired",
            "examples": [
              false
            ]
          },
          "is_valid": {
            "type": "boolean",
            "title": "Is Valid",
            "examples": [
              true
            ]
          }
        },
        "type": "object",
        "required": [
          "organization_name",
          "organization_slug",
          "invited_email",
          "role",
          "expires_at",
          "is_expired",
          "is_valid"
        ],
        "title": "InviteDetailsResponse",
        "description": "Response for public invite lookup (token-based).\nLimited info to prevent email enumeration.",
        "example": {
          "organization_name": "Acme Corp",
          "organization_slug": "acme-corp",
          "invited_email": "newmember@example.com",
          "role": "member",
          "expires_at": "2024-02-15T10:30:00Z",
          "is_expired": false,
          "is_valid": true
        }
      },
      "InviteWithOrgResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "invited_email": {
            "type": "string",
            "title": "Invited Email",
            "examples": [
              "newmember@example.com"
            ]
          },
          "invited_by_user_uuid": {
            "type": "string",
            "title": "Invited By User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "manager",
              "member"
            ],
            "title": "Role",
            "examples": [
              "member"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "accepted",
              "declined",
              "expired",
              "revoked"
            ],
            "title": "Status",
            "examples": [
              "pending"
            ]
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At",
            "examples": [
              "2024-02-15T10:30:00Z"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "accepted_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted At",
            "examples": [
              "2024-01-16T14:20:00Z"
            ]
          },
          "accepted_by_user_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted By User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_name": {
            "type": "string",
            "title": "Organization Name",
            "examples": [
              "Acme Corp"
            ]
          },
          "organization_slug": {
            "type": "string",
            "title": "Organization Slug",
            "examples": [
              "acme-corp"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "organization_uuid",
          "invited_email",
          "invited_by_user_uuid",
          "role",
          "status",
          "expires_at",
          "created_at",
          "organization_name",
          "organization_slug"
        ],
        "title": "InviteWithOrgResponse",
        "description": "Invite response with organization details.",
        "examples": {
          "pending": {
            "summary": "Pending invitation awaiting response",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "invited_email": "newmember@example.com",
              "invited_by_user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "role": "member",
              "status": "pending",
              "expires_at": "2024-02-15T10:30:00Z",
              "created_at": "2024-01-15T10:30:00Z",
              "organization_name": "Acme Corp",
              "organization_slug": "acme-corp",
              "accepted_at": null,
              "accepted_by_user_uuid": null
            }
          },
          "accepted": {
            "summary": "Accepted invitation",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "invited_email": "newmember@example.com",
              "invited_by_user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "role": "member",
              "status": "accepted",
              "expires_at": "2024-02-15T10:30:00Z",
              "created_at": "2024-01-15T10:30:00Z",
              "organization_name": "Acme Corp",
              "organization_slug": "acme-corp"
            }
          },
          "expired": {
            "summary": "Expired invitation",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "invited_email": "newmember@example.com",
              "invited_by_user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "role": "member",
              "status": "expired",
              "expires_at": "2024-02-15T10:30:00Z",
              "created_at": "2024-01-15T10:30:00Z",
              "organization_name": "Acme Corp",
              "organization_slug": "acme-corp",
              "accepted_at": null,
              "accepted_by_user_uuid": null
            }
          }
        }
      },
      "InviteWithTokenResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "invited_email": {
            "type": "string",
            "title": "Invited Email",
            "examples": [
              "newmember@example.com"
            ]
          },
          "invited_by_user_uuid": {
            "type": "string",
            "title": "Invited By User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "manager",
              "member"
            ],
            "title": "Role",
            "examples": [
              "member"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "accepted",
              "declined",
              "expired",
              "revoked"
            ],
            "title": "Status",
            "examples": [
              "pending"
            ]
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At",
            "examples": [
              "2024-02-15T10:30:00Z"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "accepted_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted At",
            "examples": [
              "2024-01-16T14:20:00Z"
            ]
          },
          "accepted_by_user_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted By User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "token": {
            "type": "string",
            "title": "Token",
            "description": "Invite token to build the invite URL",
            "examples": [
              "inv_abc123xyz"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "organization_uuid",
          "invited_email",
          "invited_by_user_uuid",
          "role",
          "status",
          "expires_at",
          "created_at",
          "token"
        ],
        "title": "InviteWithTokenResponse",
        "description": "Invite response with token included (for admin creating/refreshing invites).",
        "examples": {
          "pending": {
            "summary": "Pending invitation awaiting response",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "invited_email": "newmember@example.com",
              "invited_by_user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "role": "member",
              "status": "pending",
              "expires_at": "2024-02-15T10:30:00Z",
              "created_at": "2024-01-15T10:30:00Z",
              "token": "inv_abc123xyz",
              "accepted_at": null,
              "accepted_by_user_uuid": null
            }
          },
          "accepted": {
            "summary": "Accepted invitation",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "invited_email": "newmember@example.com",
              "invited_by_user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "role": "member",
              "status": "accepted",
              "expires_at": "2024-02-15T10:30:00Z",
              "created_at": "2024-01-15T10:30:00Z",
              "token": "inv_abc123xyz"
            }
          },
          "expired": {
            "summary": "Expired invitation",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "invited_email": "newmember@example.com",
              "invited_by_user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "role": "member",
              "status": "expired",
              "expires_at": "2024-02-15T10:30:00Z",
              "created_at": "2024-01-15T10:30:00Z",
              "token": "inv_abc123xyz",
              "accepted_at": null,
              "accepted_by_user_uuid": null
            }
          }
        }
      },
      "IssuedRewardContent": {
        "properties": {
          "data": {
            "additionalProperties": true,
            "type": "object",
            "title": "Data",
            "description": "Custom data of the reward",
            "examples": [
              {
                "coupon_code": "SAVE20"
              }
            ]
          },
          "items": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/RewardAttachment"
                },
                {
                  "$ref": "#/components/schemas/RewardCertificate"
                },
                {
                  "$ref": "#/components/schemas/RewardBadge"
                },
                {
                  "$ref": "#/components/schemas/RewardCoupon"
                },
                {
                  "$ref": "#/components/schemas/RewardTicket"
                },
                {
                  "$ref": "#/components/schemas/RewardAsset"
                }
              ]
            },
            "type": "array",
            "title": "Items",
            "description": "List of reward items (attachments, badges, certificates, coupons)"
          },
          "content_version": {
            "type": "string",
            "title": "Content Version",
            "description": "The version of the reward content schema",
            "examples": [
              "1.0"
            ]
          },
          "generated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generated At",
            "description": "The timestamp when the reward content was generated",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Reward template name at time of issuance",
            "examples": [
              "Conference Badge"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Reward template description at time of issuance",
            "examples": [
              "Digital badge for conference attendance"
            ]
          },
          "issuer": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IssuerSnapshot"
              },
              {
                "type": "null"
              }
            ],
            "description": "Issuer details captured at time of issuance"
          },
          "activity": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActivitySnapshot"
              },
              {
                "type": "null"
              }
            ],
            "description": "Activity details at issuance (if activity-linked reward)"
          }
        },
        "type": "object",
        "required": [
          "data",
          "content_version",
          "name"
        ],
        "title": "IssuedRewardContent",
        "description": "Full reward content as issued to a user.\nExtends BaseRewardContent with issuer/activity context snapshots.",
        "example": {
          "data": {
            "coupon_code": "SAVE20"
          },
          "content_version": "1.0",
          "name": "Conference Badge"
        }
      },
      "IssuerSnapshot": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Organization unique identifier",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Organization name at issuance",
            "examples": [
              "Acme Corp"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "description": "Organization slug at issuance",
            "examples": [
              "acme-corp"
            ]
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Url",
            "description": "Logo URL at issuance",
            "examples": [
              "https://cdn.example.com/logos/acme.png"
            ]
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website",
            "description": "Website at issuance",
            "examples": [
              "https://acme.example.com"
            ]
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "slug"
        ],
        "title": "IssuerSnapshot",
        "description": "Issuer (organization) details captured at time of reward issuance.",
        "example": {
          "id": "01234567-89ab-cdef-0123-456789abcdef",
          "name": "Acme Corp",
          "slug": "acme-corp"
        }
      },
      "JoinMembershipRequest": {
        "properties": {
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "description": "UUID of the user joining the membership"
          },
          "membership_tier_slug": {
            "type": "string",
            "title": "Membership Tier Slug",
            "description": "Slug of the membership tier to join"
          },
          "custom_tier_price_cents": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Price Cents",
            "description": "Custom price in cents, if applicable"
          },
          "custom_tier_payment_interval": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "daily",
                  "weekly",
                  "monthly",
                  "yearly",
                  "one_time"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Payment Interval",
            "description": "Custom payment interval, if applicable"
          }
        },
        "type": "object",
        "required": [
          "user_uuid",
          "membership_tier_slug"
        ],
        "title": "JoinMembershipRequest",
        "example": {
          "custom_tier_payment_interval": "daily"
        }
      },
      "LoginRequest": {
        "properties": {
          "strategy": {
            "type": "string",
            "title": "Strategy",
            "description": "Authentication strategy name (e.g., 'password')",
            "default": "password"
          },
          "payload": {
            "additionalProperties": true,
            "type": "object",
            "title": "Payload",
            "description": "Strategy-specific credential payload"
          },
          "scope": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scope",
            "description": "Space-separated list of requested scopes (OAuth2 format)"
          }
        },
        "type": "object",
        "required": [
          "payload"
        ],
        "title": "LoginRequest",
        "description": "User login request with strategy-specific payload.",
        "example": {
          "strategy": "password"
        }
      },
      "MemberEntitlementsResponse": {
        "properties": {
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "is_member": {
            "type": "boolean",
            "title": "Is Member",
            "examples": [
              true
            ]
          },
          "tier_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tier Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "tier_slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tier Slug",
            "examples": [
              "premium"
            ]
          },
          "entitlements": {
            "additionalProperties": true,
            "type": "object",
            "title": "Entitlements",
            "examples": [
              {
                "reward.points_multiplier": {
                  "multiplier": 2.0
                }
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "user_uuid",
          "organization_uuid",
          "is_member"
        ],
        "title": "MemberEntitlementsResponse",
        "description": "A user's active membership + tier entitlements in an org.\n\nThe external (M2M) view a third party reads to gate its own features:\n``is_member`` plus the active tier and the entitlement keys it grants\n(``entitlements`` maps key -> value; value is null for a boolean\ncapability). A non-member returns ``is_member=false`` with empty\nentitlements rather than a 404.",
        "example": {
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "is_member": true,
          "entitlements": {
            "reward.points_multiplier": {
              "multiplier": 2.0
            }
          }
        }
      },
      "MemberUserSummary": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name",
            "examples": [
              "John"
            ]
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name",
            "examples": [
              "Doe"
            ]
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username",
            "examples": [
              "johndoe"
            ]
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email",
            "examples": [
              "john@example.com"
            ]
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url",
            "examples": [
              "https://cdn.example.com/avatars/johndoe.png"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid"
        ],
        "title": "MemberUserSummary",
        "description": "Lightweight user info for membership responses.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef"
        }
      },
      "MembershipCardResponse": {
        "properties": {
          "card_uuid": {
            "type": "string",
            "title": "Card Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "identifier": {
            "type": "string",
            "title": "Identifier",
            "examples": [
              "NFC-ABC123"
            ]
          },
          "card_type": {
            "type": "string",
            "enum": [
              "nfc_card",
              "virtual_card",
              "qr_card"
            ],
            "title": "Card Type",
            "examples": [
              "nfc_card"
            ]
          },
          "is_frozen": {
            "type": "boolean",
            "title": "Is Frozen",
            "examples": [
              false
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "card_uuid",
          "identifier",
          "card_type",
          "is_frozen",
          "created_at"
        ],
        "title": "MembershipCardResponse",
        "description": "Card linked to a membership wallet.",
        "example": {
          "card_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "identifier": "NFC-ABC123",
          "card_type": "nfc_card",
          "is_frozen": false,
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "MembershipEventContent": {
        "properties": {
          "organization": {
            "$ref": "#/components/schemas/OrganizationSummary"
          },
          "tier": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MembershipTierSummary"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "organization"
        ],
        "title": "MembershipEventContent",
        "description": "Content for membership.joined, membership.left, membership.renewed."
      },
      "MembershipTierResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "premium"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Premium"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "examples": [
              "Access to all premium features and events"
            ]
          },
          "price_cents": {
            "type": "integer",
            "title": "Price Cents",
            "examples": [
              999
            ]
          },
          "payment_interval": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "one_time"
            ],
            "title": "Payment Interval",
            "examples": [
              "monthly"
            ]
          },
          "entitlements": {
            "additionalProperties": true,
            "type": "object",
            "title": "Entitlements",
            "description": "Capability keys this tier grants, mapped to their value (null for a boolean capability). Excludes the implicit 'member' key every active member holds.",
            "examples": [
              {
                "reward.points_multiplier": 2
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "organization_uuid",
          "name",
          "price_cents",
          "payment_interval",
          "created_at"
        ],
        "title": "MembershipTierResponse",
        "examples": {
          "free_tier": {
            "summary": "Free membership tier",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "premium",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Premium",
              "price_cents": 0,
              "payment_interval": "one_time",
              "entitlements": {
                "reward.points_multiplier": 2
              },
              "created_at": "2024-01-15T10:30:00Z"
            }
          },
          "monthly_paid": {
            "summary": "Monthly paid subscription tier",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "premium",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Premium",
              "price_cents": 999,
              "payment_interval": "monthly",
              "entitlements": {
                "reward.points_multiplier": 2
              },
              "created_at": "2024-01-15T10:30:00Z"
            }
          },
          "yearly_paid": {
            "summary": "Annual paid subscription tier",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "premium",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Premium",
              "price_cents": 9999,
              "payment_interval": "yearly",
              "entitlements": {
                "reward.points_multiplier": 2
              },
              "created_at": "2024-01-15T10:30:00Z"
            }
          }
        }
      },
      "MembershipTierSummary": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "premium"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Premium"
            ]
          },
          "organization": {
            "$ref": "#/components/schemas/OrganizationSummary"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "name",
          "organization"
        ],
        "title": "MembershipTierSummary",
        "description": "Lightweight membership tier info.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "slug": "premium",
          "name": "Premium"
        }
      },
      "MembershipTierSummaryResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "premium"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Premium"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "name"
        ],
        "title": "MembershipTierSummaryResponse",
        "description": "Summary response for membership tier (used in card responses).",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "slug": "premium",
          "name": "Premium"
        }
      },
      "MembershipWalletResponse": {
        "properties": {
          "wallet_uuid": {
            "type": "string",
            "title": "Wallet Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "wallet_address": {
            "type": "string",
            "title": "Wallet Address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "user_membership_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "User Membership Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "wallet_uuid",
          "wallet_address",
          "user_uuid",
          "created_at"
        ],
        "title": "MembershipWalletResponse",
        "description": "Membership-specific wallet details.",
        "example": {
          "wallet_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "NotFoundErrorResponse": {
        "properties": {
          "errors": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Errors",
            "description": "Map of field names to error messages. Use '_root' for form-level errors.",
            "example": {
              "_root": "An error occurred"
            }
          },
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Human-readable error summary"
          },
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code",
            "description": "Machine-readable error code"
          }
        },
        "type": "object",
        "required": [
          "errors",
          "message"
        ],
        "title": "NotFoundErrorResponse",
        "description": "404 Not Found - Resource does not exist.",
        "example": {
          "code": "not_found",
          "errors": {
            "_root": "Resource not found"
          },
          "message": "Resource not found"
        }
      },
      "OAuth2IntrospectResponse": {
        "properties": {
          "active": {
            "type": "boolean",
            "title": "Active",
            "description": "Whether the token is active"
          },
          "scope": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scope"
          },
          "client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Id"
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          },
          "token_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Token Type"
          },
          "exp": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Exp",
            "description": "Expiration timestamp"
          },
          "iat": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Iat",
            "description": "Issued at timestamp"
          },
          "nbf": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Nbf",
            "description": "Not before timestamp"
          },
          "sub": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sub",
            "description": "Subject (user identifier)"
          },
          "aud": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Aud",
            "description": "Audience"
          },
          "iss": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Iss",
            "description": "Issuer"
          },
          "jti": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Jti",
            "description": "JWT ID"
          }
        },
        "type": "object",
        "required": [
          "active"
        ],
        "title": "OAuth2IntrospectResponse",
        "description": "Token introspection response (RFC 7662)."
      },
      "OAuth2TokenResponse": {
        "properties": {
          "access_token": {
            "type": "string",
            "title": "Access Token"
          },
          "token_type": {
            "type": "string",
            "title": "Token Type",
            "default": "Bearer"
          },
          "expires_in": {
            "type": "integer",
            "title": "Expires In",
            "description": "Token lifetime in seconds"
          },
          "refresh_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refresh Token"
          },
          "scope": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scope",
            "description": "Space-separated granted scopes"
          },
          "id_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id Token",
            "description": "OIDC ID token (when openid scope granted)"
          },
          "issued_token_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Issued Token Type",
            "description": "RFC 8693: Type of token issued (for token exchange responses)"
          }
        },
        "type": "object",
        "required": [
          "access_token",
          "expires_in"
        ],
        "title": "OAuth2TokenResponse",
        "description": "OAuth2 token response (RFC 6749) with OIDC and RFC 8693 extensions.",
        "example": {
          "token_type": "Bearer"
        }
      },
      "OAuthAppCreated": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "description": "App UUID",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "client_id": {
            "type": "string",
            "title": "Client Id",
            "description": "OAuth2 client identifier",
            "examples": [
              "client_abc123xyz"
            ]
          },
          "client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Secret",
            "description": "Client secret (only shown once, only for confidential clients)",
            "examples": [
              "secret_xyz789abc123def456"
            ]
          },
          "client_name": {
            "type": "string",
            "title": "Client Name",
            "description": "Display name",
            "examples": [
              "My App"
            ]
          },
          "client_type": {
            "type": "string",
            "title": "Client Type",
            "description": "public or confidential",
            "examples": [
              "confidential"
            ]
          },
          "redirect_uris": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Redirect Uris",
            "description": "Registered redirect URIs",
            "examples": [
              [
                "https://myapp.example.com/callback"
              ]
            ]
          },
          "allowed_scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Allowed Scopes",
            "description": "Allowed scopes",
            "examples": [
              [
                "openid",
                "profile",
                "email"
              ]
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Creation timestamp",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "client_id",
          "client_name",
          "client_type",
          "redirect_uris",
          "allowed_scopes",
          "created_at"
        ],
        "title": "OAuthAppCreated",
        "description": "Response when creating an OAuth2 application (includes secret).",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "client_id": "client_abc123xyz",
          "client_name": "My App",
          "client_type": "confidential",
          "redirect_uris": [
            "https://myapp.example.com/callback"
          ],
          "allowed_scopes": [
            "openid",
            "profile",
            "email"
          ],
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "OAuthAppDetails": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "description": "App UUID",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "client_id": {
            "type": "string",
            "title": "Client Id",
            "description": "OAuth2 client identifier",
            "examples": [
              "client_abc123xyz"
            ]
          },
          "client_name": {
            "type": "string",
            "title": "Client Name",
            "description": "Display name",
            "examples": [
              "My App"
            ]
          },
          "client_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Description",
            "description": "Description",
            "examples": [
              "My awesome OAuth app"
            ]
          },
          "client_type": {
            "type": "string",
            "title": "Client Type",
            "description": "public or confidential",
            "examples": [
              "confidential"
            ]
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether the app is active",
            "examples": [
              true
            ]
          },
          "icon_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon File Url",
            "description": "URL of the app icon",
            "examples": [
              "https://cdn.example.com/icons/myapp.png"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Creation timestamp",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "last_used_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At",
            "description": "Last token issued timestamp",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          },
          "client_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Uri",
            "description": "Homepage URL",
            "examples": [
              "https://myapp.example.com"
            ]
          },
          "icon_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon File Uuid",
            "description": "UUID of the uploaded icon file",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "redirect_uris": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Redirect Uris",
            "description": "Registered redirect URIs",
            "examples": [
              [
                "https://myapp.example.com/callback"
              ]
            ]
          },
          "allowed_scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Allowed Scopes",
            "description": "Allowed scopes",
            "examples": [
              [
                "openid",
                "profile",
                "email"
              ]
            ]
          },
          "grant_types": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Grant Types",
            "description": "Allowed grant types",
            "examples": [
              [
                "authorization_code",
                "refresh_token"
              ]
            ]
          },
          "access_token_ttl": {
            "type": "integer",
            "title": "Access Token Ttl",
            "description": "Access token TTL in seconds",
            "examples": [
              3600
            ]
          },
          "refresh_token_ttl": {
            "type": "integer",
            "title": "Refresh Token Ttl",
            "description": "Refresh token TTL in seconds",
            "examples": [
              2592000
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "description": "Last update timestamp",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "client_id",
          "client_name",
          "client_type",
          "is_active",
          "created_at",
          "redirect_uris",
          "allowed_scopes",
          "grant_types",
          "access_token_ttl",
          "refresh_token_ttl"
        ],
        "title": "OAuthAppDetails",
        "description": "Full details of an OAuth2 application.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "client_id": "client_abc123xyz",
          "client_name": "My App",
          "client_type": "confidential",
          "is_active": true,
          "created_at": "2024-01-15T10:30:00Z",
          "redirect_uris": [
            "https://myapp.example.com/callback"
          ],
          "allowed_scopes": [
            "openid",
            "profile",
            "email"
          ],
          "grant_types": [
            "authorization_code",
            "refresh_token"
          ],
          "access_token_ttl": 3600,
          "refresh_token_ttl": 2592000
        }
      },
      "OAuthAppSummary": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "description": "App UUID",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "client_id": {
            "type": "string",
            "title": "Client Id",
            "description": "OAuth2 client identifier",
            "examples": [
              "client_abc123xyz"
            ]
          },
          "client_name": {
            "type": "string",
            "title": "Client Name",
            "description": "Display name",
            "examples": [
              "My App"
            ]
          },
          "client_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Description",
            "description": "Description",
            "examples": [
              "My awesome OAuth app"
            ]
          },
          "client_type": {
            "type": "string",
            "title": "Client Type",
            "description": "public or confidential",
            "examples": [
              "confidential"
            ]
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether the app is active",
            "examples": [
              true
            ]
          },
          "icon_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon File Url",
            "description": "URL of the app icon",
            "examples": [
              "https://cdn.example.com/icons/myapp.png"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Creation timestamp",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "last_used_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At",
            "description": "Last token issued timestamp",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "client_id",
          "client_name",
          "client_type",
          "is_active",
          "created_at"
        ],
        "title": "OAuthAppSummary",
        "description": "Summary of an OAuth2 application for list views.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "client_id": "client_abc123xyz",
          "client_name": "My App",
          "client_type": "confidential",
          "is_active": true,
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "OAuthClientInfoResponse": {
        "properties": {
          "client": {
            "$ref": "#/components/schemas/ClientInfo"
          },
          "organization": {
            "$ref": "#/components/schemas/OrganizationInfo"
          },
          "scope_groups": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ScopeGroup"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scope Groups"
          }
        },
        "type": "object",
        "required": [
          "client",
          "organization"
        ],
        "title": "OAuthClientInfoResponse",
        "description": "Response for OAuth app details endpoint."
      },
      "OIDCDiscoveryDocument": {
        "properties": {
          "issuer": {
            "type": "string",
            "title": "Issuer"
          },
          "authorization_endpoint": {
            "type": "string",
            "title": "Authorization Endpoint"
          },
          "token_endpoint": {
            "type": "string",
            "title": "Token Endpoint"
          },
          "userinfo_endpoint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Userinfo Endpoint"
          },
          "revocation_endpoint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revocation Endpoint"
          },
          "introspection_endpoint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Introspection Endpoint"
          },
          "jwks_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Jwks Uri"
          },
          "response_types_supported": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Response Types Supported"
          },
          "grant_types_supported": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Grant Types Supported"
          },
          "code_challenge_methods_supported": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Code Challenge Methods Supported"
          },
          "token_endpoint_auth_methods_supported": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Token Endpoint Auth Methods Supported"
          },
          "scopes_supported": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes Supported"
          },
          "claims_supported": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Claims Supported"
          },
          "subject_types_supported": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subject Types Supported"
          },
          "id_token_signing_alg_values_supported": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id Token Signing Alg Values Supported"
          }
        },
        "type": "object",
        "required": [
          "issuer",
          "authorization_endpoint",
          "token_endpoint",
          "response_types_supported",
          "grant_types_supported",
          "code_challenge_methods_supported",
          "token_endpoint_auth_methods_supported",
          "scopes_supported"
        ],
        "title": "OIDCDiscoveryDocument",
        "description": "OpenID Connect Discovery document."
      },
      "OnboardingData": {
        "properties": {
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "social_links": {
            "items": {
              "$ref": "#/components/schemas/ProfileLink"
            },
            "type": "array",
            "title": "Social Links"
          },
          "links": {
            "items": {
              "$ref": "#/components/schemas/ProfileLink"
            },
            "type": "array",
            "title": "Links"
          },
          "avatar_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar File Uuid"
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          }
        },
        "type": "object",
        "title": "OnboardingData",
        "description": "All data collected during onboarding."
      },
      "OnboardingStatusResponse": {
        "properties": {
          "user_uuid": {
            "type": "string",
            "title": "User Uuid"
          },
          "is_complete": {
            "type": "boolean",
            "title": "Is Complete"
          },
          "data": {
            "$ref": "#/components/schemas/OnboardingData"
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          },
          "claiming_profile": {
            "type": "boolean",
            "title": "Claiming Profile",
            "description": "Whether user is claiming an existing profile",
            "default": false
          },
          "required_username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required Username",
            "description": "Username required for claim (must match exactly)"
          },
          "card_identifier": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Card Identifier",
            "description": "Card identifier to claim during onboarding completion"
          }
        },
        "type": "object",
        "required": [
          "user_uuid",
          "is_complete",
          "data"
        ],
        "title": "OnboardingStatusResponse",
        "description": "Current onboarding state for a user.",
        "example": {
          "claiming_profile": false
        }
      },
      "OrganizationBasicInfo": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Acme Corp"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "acme-corp"
            ]
          },
          "logo_image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Image File Url",
            "examples": [
              "https://cdn.example.com/logos/acme.png"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "name",
          "slug"
        ],
        "title": "OrganizationBasicInfo",
        "description": "Basic organization info for card display.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "name": "Acme Corp",
          "slug": "acme-corp"
        }
      },
      "OrganizationInfo": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Url"
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "OrganizationInfo",
        "description": "Organization details for consent/login display."
      },
      "OrganizationMemberEnrichedResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "manager",
              "member"
            ],
            "title": "Role",
            "examples": [
              "member"
            ]
          },
          "joined_at": {
            "type": "string",
            "format": "date-time",
            "title": "Joined At",
            "examples": [
              "2024-03-01T12:00:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          },
          "user": {
            "$ref": "#/components/schemas/StaffUserSummary"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "user_uuid",
          "organization_uuid",
          "role",
          "joined_at",
          "user"
        ],
        "title": "OrganizationMemberEnrichedResponse",
        "description": "Organization member response with enriched user info.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "role": "member",
          "joined_at": "2024-03-01T12:00:00Z"
        }
      },
      "OrganizationMemberResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "manager",
              "member"
            ],
            "title": "Role",
            "examples": [
              "member"
            ]
          },
          "joined_at": {
            "type": "string",
            "format": "date-time",
            "title": "Joined At",
            "examples": [
              "2024-03-01T12:00:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "user_uuid",
          "organization_uuid",
          "role",
          "joined_at"
        ],
        "title": "OrganizationMemberResponse",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "role": "member",
          "joined_at": "2024-03-01T12:00:00Z"
        }
      },
      "OrganizationMembershipResponse": {
        "properties": {
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_slug": {
            "type": "string",
            "title": "Organization Slug",
            "description": "Path identifier",
            "examples": [
              "acme-corp"
            ]
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role",
            "description": "The caller's role in this organization. `admin` when the caller holds the platform ownership bypass rather than a membership.",
            "examples": [
              "org_manager"
            ]
          }
        },
        "type": "object",
        "required": [
          "organization_uuid",
          "organization_slug"
        ],
        "title": "OrganizationMembershipResponse",
        "description": "The caller's own standing in an organization.",
        "example": {
          "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "organization_slug": "acme-corp"
        }
      },
      "OrganizationPresentationResponse": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Acme Corp"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "acme-corp"
            ]
          },
          "logo_image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Image File Url",
            "examples": [
              "https://cdn.example.com/logos/acme.png"
            ]
          }
        },
        "type": "object",
        "required": [
          "name",
          "slug"
        ],
        "title": "OrganizationPresentationResponse",
        "description": "How an organization appears to someone who is not in it.\n\nThe three fields a page needs to say who is offering something \u2014 and\nnothing more. Deliberately narrower than `OrganizationResponse`, which\ncarries the owner, the website and the record's timestamps: a caller that\nonly has to name and picture the issuer should not receive those.",
        "example": {
          "name": "Acme Corp",
          "slug": "acme-corp"
        }
      },
      "OrganizationResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Acme Corp"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "description": "The organization's address in `/api/v1/organizations/{slug}`. Derived from the name when the organization is created and fixed from then on, so renaming does not move it. Organizations created before slugs were derived carry a random one.",
            "examples": [
              "acme-corp"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "examples": [
              "Leading provider of innovative solutions"
            ]
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website",
            "examples": [
              "https://acme.example.com"
            ]
          },
          "logo_image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Image File Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "logo_image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Image File Url",
            "examples": [
              "https://cdn.example.com/logos/acme.png"
            ]
          },
          "owner_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Owner Uuid",
            "description": "User UUID of the organization owner (the OWNER-role member)",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "role": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "owner",
                  "manager",
                  "member"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Role",
            "description": "Current user's role in this organization (populated in user-context listings)",
            "examples": [
              "owner"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "name",
          "slug",
          "created_at"
        ],
        "title": "OrganizationResponse",
        "examples": {
          "new_org": {
            "summary": "Newly created organization with minimal info",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Acme Corp",
              "slug": "acme-corp",
              "role": "owner",
              "created_at": "2024-01-15T10:30:00Z",
              "description": null,
              "website": null,
              "logo_image_file_uuid": null,
              "logo_image_file_url": null
            }
          },
          "established_org": {
            "summary": "Established organization with full profile",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Acme Corp",
              "slug": "acme-corp",
              "role": "owner",
              "created_at": "2024-01-15T10:30:00Z"
            }
          }
        }
      },
      "OrganizationStatsResponse": {
        "properties": {
          "org_members_count": {
            "type": "integer",
            "title": "Org Members Count",
            "description": "Number of organization team members",
            "examples": [
              5
            ]
          },
          "membership_tiers_count": {
            "type": "integer",
            "title": "Membership Tiers Count",
            "description": "Number of membership tiers",
            "examples": [
              3
            ]
          },
          "membership_members_count": {
            "type": "integer",
            "title": "Membership Members Count",
            "description": "Number of active membership subscribers",
            "examples": [
              150
            ]
          },
          "activities_count": {
            "type": "integer",
            "title": "Activities Count",
            "description": "Number of activities",
            "examples": [
              12
            ]
          },
          "rewards_count": {
            "type": "integer",
            "title": "Rewards Count",
            "description": "Number of reward templates",
            "examples": [
              8
            ]
          },
          "cards_count": {
            "type": "integer",
            "title": "Cards Count",
            "description": "Number of issued cards",
            "examples": [
              200
            ]
          }
        },
        "type": "object",
        "required": [
          "org_members_count",
          "membership_tiers_count",
          "membership_members_count",
          "activities_count",
          "rewards_count",
          "cards_count"
        ],
        "title": "OrganizationStatsResponse",
        "description": "Stats for an organization dashboard.",
        "example": {
          "org_members_count": 5,
          "membership_tiers_count": 3,
          "membership_members_count": 150,
          "activities_count": 12,
          "rewards_count": 8,
          "cards_count": 200
        }
      },
      "OrganizationSummary": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Acme Corp"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "acme-corp"
            ]
          },
          "logo_image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Image File Url",
            "examples": [
              "https://cdn.example.com/logos/acme.png"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "name",
          "slug"
        ],
        "title": "OrganizationSummary",
        "description": "Lightweight organization info for embedding in other responses.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "name": "Acme Corp",
          "slug": "acme-corp"
        }
      },
      "OwnedProfileLinkedCard": {
        "properties": {
          "card_uuid": {
            "type": "string",
            "title": "Card Uuid"
          },
          "identifier": {
            "type": "string",
            "title": "Identifier",
            "examples": [
              "ABC123"
            ]
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Friendly name from card_connections.name, if set.",
            "examples": [
              "Silver card"
            ]
          }
        },
        "type": "object",
        "required": [
          "card_uuid",
          "identifier"
        ],
        "title": "OwnedProfileLinkedCard",
        "description": "Card info shown as the subtitle in the customize-page profile picker.",
        "example": {
          "identifier": "ABC123"
        }
      },
      "OwnedProfileSummary": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid"
          },
          "profile_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Name",
            "description": "profile.data.name \u2014 may be empty. Frontend falls back to template_name then 'Untitled Profile'."
          },
          "template_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Name",
            "description": "Name of the template that spawned this profile, if still joinable."
          },
          "is_primary": {
            "type": "boolean",
            "title": "Is Primary",
            "default": false
          },
          "linked_cards": {
            "items": {
              "$ref": "#/components/schemas/OwnedProfileLinkedCard"
            },
            "type": "array",
            "title": "Linked Cards"
          }
        },
        "type": "object",
        "required": [
          "uuid"
        ],
        "title": "OwnedProfileSummary",
        "description": "Row in the owned-profiles list. Shaped for the picker; not a ProfileData.",
        "example": {
          "is_primary": false
        }
      },
      "PaginatedResponse_ActivityAttendeeResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ActivityAttendeeResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[ActivityAttendeeResponse]",
        "example": {
          "total_items": 4,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "status": "registered",
              "registered_at": "2024-09-10T15:30:00Z",
              "created_at": "2024-09-10T15:30:00Z",
              "attended_at": null,
              "proof_verified": null
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "status": "attended",
              "registered_at": "2024-09-10T15:30:00Z",
              "created_at": "2024-09-10T15:30:00Z",
              "proof_verified": true
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "status": "waitlisted",
              "registered_at": "2024-09-10T15:30:00Z",
              "created_at": "2024-09-10T15:30:00Z",
              "attended_at": null,
              "proof_verified": null
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "status": "cancelled",
              "registered_at": "2024-09-10T15:30:00Z",
              "created_at": "2024-09-10T15:30:00Z",
              "attended_at": null,
              "proof_verified": null
            }
          ]
        }
      },
      "PaginatedResponse_ActivityResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ActivityResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[ActivityResponse]",
        "example": {
          "total_items": 3,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "annual-conference-2024",
              "name": "Annual Conference 2024",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z",
              "is_session_checkin_open": true,
              "requires_ticket": false,
              "start_time": null,
              "end_time": null
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "annual-conference-2024",
              "name": "Annual Conference 2024",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z",
              "is_session_checkin_open": true,
              "requires_ticket": false
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "annual-conference-2024",
              "name": "Annual Conference 2024",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z",
              "is_session_checkin_open": true,
              "requires_ticket": false,
              "max_attendees": 500
            }
          ]
        }
      },
      "PaginatedResponse_CardModelResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/CardModelResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[CardModelResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "V1StGXR8_Z",
              "name": "Premium Gold Card",
              "is_active": true,
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_CardResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/CardResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[CardResponse]",
        "example": {
          "total_items": 2,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "identifier": "NFC-ABC123",
              "card_type": "nfc_card",
              "is_primary": true,
              "is_frozen": false,
              "created_at": "2024-01-15T10:30:00Z"
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "identifier": "NFC-ABC123",
              "card_type": "nfc_card",
              "is_primary": true,
              "is_frozen": true,
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_ContactActivityResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ContactActivityResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[ContactActivityResponse]"
      },
      "PaginatedResponse_ContactDetailResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ContactDetailResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[ContactDetailResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "type": "saved",
              "is_registered": false,
              "name": "",
              "image_url": "",
              "visit_count": 0,
              "visits": []
            }
          ]
        }
      },
      "PaginatedResponse_ContactSummaryResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ContactSummaryResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[ContactSummaryResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "type": "saved",
              "is_registered": false,
              "name": "",
              "image_url": "",
              "visit_count": 0
            }
          ]
        }
      },
      "PaginatedResponse_EnhancedUserActivityLogResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/EnhancedUserActivityLogResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[EnhancedUserActivityLogResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "activity_type": "activity.registered",
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_InviteWithOrgResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/InviteWithOrgResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[InviteWithOrgResponse]",
        "example": {
          "total_items": 3,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "invited_email": "newmember@example.com",
              "invited_by_user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "role": "member",
              "status": "pending",
              "expires_at": "2024-02-15T10:30:00Z",
              "created_at": "2024-01-15T10:30:00Z",
              "organization_name": "Acme Corp",
              "organization_slug": "acme-corp",
              "accepted_at": null,
              "accepted_by_user_uuid": null
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "invited_email": "newmember@example.com",
              "invited_by_user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "role": "member",
              "status": "accepted",
              "expires_at": "2024-02-15T10:30:00Z",
              "created_at": "2024-01-15T10:30:00Z",
              "organization_name": "Acme Corp",
              "organization_slug": "acme-corp"
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "invited_email": "newmember@example.com",
              "invited_by_user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "role": "member",
              "status": "expired",
              "expires_at": "2024-02-15T10:30:00Z",
              "created_at": "2024-01-15T10:30:00Z",
              "organization_name": "Acme Corp",
              "organization_slug": "acme-corp",
              "accepted_at": null,
              "accepted_by_user_uuid": null
            }
          ]
        }
      },
      "PaginatedResponse_MembershipCardResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/MembershipCardResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[MembershipCardResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "card_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "identifier": "NFC-ABC123",
              "card_type": "nfc_card",
              "is_frozen": false,
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_MembershipTierResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/MembershipTierResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[MembershipTierResponse]",
        "example": {
          "total_items": 3,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "premium",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Premium",
              "price_cents": 0,
              "payment_interval": "one_time",
              "entitlements": {
                "reward.points_multiplier": 2
              },
              "created_at": "2024-01-15T10:30:00Z"
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "premium",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Premium",
              "price_cents": 999,
              "payment_interval": "monthly",
              "entitlements": {
                "reward.points_multiplier": 2
              },
              "created_at": "2024-01-15T10:30:00Z"
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "premium",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Premium",
              "price_cents": 9999,
              "payment_interval": "yearly",
              "entitlements": {
                "reward.points_multiplier": 2
              },
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_OrganizationMemberEnrichedResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/OrganizationMemberEnrichedResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[OrganizationMemberEnrichedResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "role": "member",
              "joined_at": "2024-03-01T12:00:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_OrganizationResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/OrganizationResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[OrganizationResponse]",
        "example": {
          "total_items": 2,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Acme Corp",
              "slug": "acme-corp",
              "role": "owner",
              "created_at": "2024-01-15T10:30:00Z",
              "description": null,
              "website": null,
              "logo_image_file_uuid": null,
              "logo_image_file_url": null
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Acme Corp",
              "slug": "acme-corp",
              "role": "owner",
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_OwnedProfileSummary_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/OwnedProfileSummary"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[OwnedProfileSummary]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "is_primary": false
            }
          ]
        }
      },
      "PaginatedResponse_RecentTransactionItem_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/RecentTransactionItem"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[RecentTransactionItem]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "transaction_id": "tx_abc123xyz",
              "transaction_type": "reward",
              "direction": "incoming",
              "sender_name": "Acme Corp",
              "sender_address": "0x1234567890abcdef1234567890abcdef12345678",
              "amount": 100.0,
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_RewardPropagationResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/RewardPropagationResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[RewardPropagationResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "reward_template_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "from_version": 1,
              "to_version": 2,
              "total_count": 50,
              "completed_count": 48,
              "failed_count": 2,
              "status": "completed",
              "points_delta": 0,
              "initiated_by": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_RewardTemplateResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/RewardTemplateResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[RewardTemplateResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "version": 1,
              "slug": "conference-badge",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Conference Badge",
              "points": 100,
              "supply_redeemed": 150,
              "status": "published",
              "is_draft": false,
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_RewardTriggerResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/RewardTriggerResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[RewardTriggerResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "created_at": "2024-01-15T10:30:00Z",
              "name": "5th Check-in Bonus",
              "enabled": true,
              "reward_template_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "trigger_scopes": [
                "activity.checked_in:count:5"
              ],
              "reward_metadata": {
                "bonus_type": "milestone"
              }
            }
          ]
        }
      },
      "PaginatedResponse_SessionResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/SessionResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[SessionResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "day-1-morning",
              "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "name": "Day 1 - Morning",
              "start_time": "2024-09-15T09:00:00Z",
              "end_time": "2024-09-15T12:00:00Z",
              "is_checkin_open": true,
              "sequence_number": 1,
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_TemplateBackground_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/TemplateBackground"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[TemplateBackground]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "id": "tmpl-bg-aurora",
              "label": "Aurora",
              "url": "https://cdn.example.com/templates/aurora.png"
            }
          ]
        }
      },
      "PaginatedResponse_Transaction_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/Transaction"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[Transaction]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "id": "tx_abc123xyz",
              "from_address": "0x1234567890abcdef1234567890abcdef12345678",
              "to_address": "0xabcdef1234567890abcdef1234567890abcdef12",
              "amount": 100.0,
              "transaction_type": "reward",
              "status": "confirmed",
              "transaction_hash": "0xabc123def456789...",
              "previous_hash": "0x000000...",
              "signature": "MEUCIQDx...",
              "public_key": "-----BEGIN PUBLIC KEY-----...",
              "encrypted_data": "U2FsdGVkX1...",
              "data_hash": "sha256:abc123...",
              "description": "Reward for attendance",
              "reference_id": "reward_template_123",
              "original_transaction_id": "",
              "failure_reason": "",
              "reversal_reason": "",
              "created_at": "2024-01-15T10:30:00Z",
              "tags": [
                "reward",
                "template:abc123"
              ]
            }
          ]
        }
      },
      "PaginatedResponse_UploadedFileResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UploadedFileResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[UploadedFileResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "avatar-johndoe-abc123",
              "file_name": "avatar.png",
              "content_type": "image/png",
              "size_in_bytes": 102400,
              "storage_id": "s3",
              "storage_key": "uploads/avatars/abc123.png",
              "storage_bucket": "davi-uploads",
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_UserAssetResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UserAssetResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[UserAssetResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "asset_type": "background",
              "source": "reward"
            }
          ]
        }
      },
      "PaginatedResponse_UserMembershipHistoryResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UserMembershipHistoryResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[UserMembershipHistoryResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "daily",
              "joined_at": "2024-03-01T12:00:00Z",
              "status": "cancelled",
              "created_at": "2024-01-15T10:30:00Z",
              "tier_name": "Premium",
              "tier_slug": "premium"
            }
          ]
        }
      },
      "PaginatedResponse_UserMembershipWithOrgResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UserMembershipWithOrgResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[UserMembershipWithOrgResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "daily",
              "joined_at": "2024-03-01T12:00:00Z",
              "created_at": "2024-01-15T10:30:00Z",
              "organization_name": "Acme Corp",
              "organization_slug": "acme-corp",
              "tier_name": "Premium",
              "tier_slug": "premium"
            }
          ]
        }
      },
      "PaginatedResponse_UserMembershipWithUserResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UserMembershipWithUserResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[UserMembershipWithUserResponse]",
        "example": {
          "total_items": 4,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": null,
              "created_at": "2024-01-15T10:30:00Z",
              "valid_until": null,
              "custom_tier_price_cents": null
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "daily",
              "created_at": "2024-01-15T10:30:00Z",
              "valid_until": "2024-01-20T10:30:00Z"
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "daily",
              "created_at": "2024-01-15T10:30:00Z",
              "valid_until": "2023-12-15T10:30:00Z"
            },
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "monthly",
              "created_at": "2024-01-15T10:30:00Z",
              "custom_tier_price_cents": 4999
            }
          ]
        }
      },
      "PaginatedResponse_UserRegisteredActivityResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UserRegisteredActivityResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[UserRegisteredActivityResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "slug": "annual-conference-2024",
              "name": "Annual Conference 2024",
              "first_registered_at": "2024-09-10T15:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_UserRewardCacheResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UserRewardCacheResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[UserRewardCacheResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "transaction_id": "tx_abc123xyz",
              "content_hash": "sha256:abc123...",
              "cached_at": "2024-01-15T10:30:00Z",
              "cache_hit_count": 5,
              "source_type": "platform"
            }
          ]
        }
      },
      "PaginatedResponse_UserSearchSuggestion_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UserSearchSuggestion"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[UserSearchSuggestion]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef"
            }
          ]
        }
      },
      "PaginatedResponse_UserWalletResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UserWalletResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[UserWalletResponse]",
        "example": {
          "total_items": 1,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "public_key_pem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBg...",
              "created_at": "2024-01-15T10:30:00Z"
            }
          ]
        }
      },
      "PaginatedResponse_UserWalletWithContextResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/UserWalletWithContextResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[UserWalletWithContextResponse]",
        "example": {
          "total_items": 3,
          "total_pages": 1,
          "current_page": 1,
          "items": [
            {
              "wallet_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "balance": 500.0,
              "is_primary": true
            },
            {
              "wallet_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "balance": 0.0,
              "is_primary": false
            },
            {
              "wallet_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "balance": 1250.5,
              "is_primary": true
            }
          ]
        }
      },
      "PaginatedResponse_WebhookDeliveryResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/WebhookDeliveryResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[WebhookDeliveryResponse]"
      },
      "PaginatedResponse_WebhookResponse_": {
        "properties": {
          "total_items": {
            "type": "integer",
            "title": "Total Items",
            "description": "Total number of items available"
          },
          "total_pages": {
            "type": "integer",
            "title": "Total Pages",
            "description": "Total number of pages available"
          },
          "current_page": {
            "type": "integer",
            "title": "Current Page",
            "description": "Current page number"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/WebhookResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items on the current page"
          }
        },
        "type": "object",
        "required": [
          "total_items",
          "total_pages",
          "current_page",
          "items"
        ],
        "title": "PaginatedResponse[WebhookResponse]"
      },
      "PasswordChangeRequest": {
        "properties": {
          "current_password": {
            "type": "string",
            "title": "Current Password"
          },
          "new_password": {
            "type": "string",
            "maxLength": 128,
            "minLength": 8,
            "title": "New Password"
          }
        },
        "type": "object",
        "required": [
          "current_password",
          "new_password"
        ],
        "title": "PasswordChangeRequest",
        "description": "Password change request."
      },
      "PasswordResetConfirmSchema": {
        "properties": {
          "token": {
            "type": "string",
            "title": "Token"
          },
          "new_password": {
            "type": "string",
            "maxLength": 128,
            "minLength": 8,
            "title": "New Password"
          }
        },
        "type": "object",
        "required": [
          "token",
          "new_password"
        ],
        "title": "PasswordResetConfirmSchema",
        "description": "Password reset confirmation with new password."
      },
      "PasswordResetRequestSchema": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email"
          }
        },
        "type": "object",
        "required": [
          "email"
        ],
        "title": "PasswordResetRequestSchema",
        "description": "Password reset request (forgot password)."
      },
      "PaymentBackendConnectionResponse": {
        "properties": {
          "backend": {
            "type": "string",
            "title": "Backend"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "connected_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Connected At"
          },
          "webhook_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Webhook Url"
          }
        },
        "type": "object",
        "required": [
          "backend",
          "status"
        ],
        "title": "PaymentBackendConnectionResponse"
      },
      "ProfileData": {
        "properties": {
          "imageUrl": {
            "type": "string",
            "title": "Imageurl",
            "default": "",
            "examples": [
              "https://cdn.example.com/avatars/johndoe.png"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "default": "",
            "examples": [
              "John Doe"
            ]
          },
          "first_name": {
            "type": "string",
            "title": "First Name",
            "default": "",
            "examples": [
              "John"
            ]
          },
          "last_name": {
            "type": "string",
            "title": "Last Name",
            "default": "",
            "examples": [
              "Doe"
            ]
          },
          "shortDescription": {
            "type": "string",
            "title": "Shortdescription",
            "default": "",
            "examples": [
              "Full-stack developer"
            ]
          },
          "longDescription": {
            "type": "string",
            "title": "Longdescription",
            "default": "",
            "examples": [
              "Passionate about building great software and solving complex problems."
            ]
          },
          "callToAction": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CallToAction"
              },
              {
                "type": "null"
              }
            ]
          },
          "currentRole": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CurrentRole"
              },
              {
                "type": "null"
              }
            ]
          },
          "customBackground": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CustomBackground"
              },
              {
                "type": "null"
              }
            ]
          },
          "avatarFrame": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatarframe",
            "examples": [
              "https://cdn.example.com/frames/gold.png"
            ]
          },
          "socialLinks": {
            "items": {
              "$ref": "#/components/schemas/ProfileLink"
            },
            "type": "array",
            "title": "Sociallinks"
          },
          "links": {
            "items": {
              "$ref": "#/components/schemas/ProfileLink"
            },
            "type": "array",
            "title": "Links"
          },
          "longDescriptionContent": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Longdescriptioncontent"
          },
          "stickers": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Stickers"
          }
        },
        "type": "object",
        "title": "ProfileData",
        "description": "The main profile data structure stored in the data JSONB column.",
        "example": {
          "imageUrl": "https://cdn.example.com/avatars/johndoe.png",
          "name": "John Doe",
          "first_name": "John",
          "last_name": "Doe",
          "shortDescription": "Full-stack developer",
          "longDescription": "Passionate about building great software and solving complex problems."
        }
      },
      "ProfileDataResponse": {
        "properties": {
          "imageUrl": {
            "type": "string",
            "title": "Imageurl",
            "default": "",
            "examples": [
              "https://cdn.example.com/avatars/johndoe.png"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "default": "",
            "examples": [
              "John Doe"
            ]
          },
          "first_name": {
            "type": "string",
            "title": "First Name",
            "default": "",
            "examples": [
              "John"
            ]
          },
          "last_name": {
            "type": "string",
            "title": "Last Name",
            "default": "",
            "examples": [
              "Doe"
            ]
          },
          "shortDescription": {
            "type": "string",
            "title": "Shortdescription",
            "default": "",
            "examples": [
              "Full-stack developer"
            ]
          },
          "longDescription": {
            "type": "string",
            "title": "Longdescription",
            "default": "",
            "examples": [
              "Passionate about building great software and solving complex problems."
            ]
          },
          "callToAction": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CallToAction"
              },
              {
                "type": "null"
              }
            ]
          },
          "currentRole": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CurrentRole"
              },
              {
                "type": "null"
              }
            ]
          },
          "customBackground": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CustomBackground"
              },
              {
                "type": "null"
              }
            ]
          },
          "avatarFrame": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatarframe",
            "examples": [
              "https://cdn.example.com/frames/gold.png"
            ]
          },
          "socialLinks": {
            "items": {
              "$ref": "#/components/schemas/ProfileLink"
            },
            "type": "array",
            "title": "Sociallinks"
          },
          "links": {
            "items": {
              "$ref": "#/components/schemas/ProfileLink"
            },
            "type": "array",
            "title": "Links"
          },
          "longDescriptionContent": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Longdescriptioncontent"
          },
          "stickers": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Stickers"
          },
          "profile_page_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Page Uuid",
            "description": "UUID of the profile page (for use in save-contact flows)"
          },
          "is_locked": {
            "type": "boolean",
            "title": "Is Locked",
            "description": "True when the profile was issued by an organization and the owner's membership in that org is inactive. Derived at read time.",
            "default": false
          },
          "primary_card_uid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Card Uid",
            "description": "Identifier of the owner's primary card \u2014 the `uid` in /c/{uid} URLs. Lets the profile page advertise the card+json discovery link (/c/{uid}/json). NULL for bearer profiles and owners with no primary card.",
            "examples": [
              "DAVI-1A2B3C4D"
            ]
          }
        },
        "type": "object",
        "title": "ProfileDataResponse",
        "description": "Profile data response with profile page metadata.",
        "example": {
          "imageUrl": "https://cdn.example.com/avatars/johndoe.png",
          "name": "John Doe",
          "first_name": "John",
          "last_name": "Doe",
          "shortDescription": "Full-stack developer",
          "longDescription": "Passionate about building great software and solving complex problems.",
          "is_locked": false
        }
      },
      "ProfileLink": {
        "properties": {
          "label": {
            "type": "string",
            "title": "Label",
            "examples": [
              "LinkedIn"
            ]
          },
          "url": {
            "type": "string",
            "title": "Url",
            "examples": [
              "https://linkedin.com/in/johndoe"
            ]
          }
        },
        "type": "object",
        "required": [
          "label",
          "url"
        ],
        "title": "ProfileLink",
        "description": "A link displayed on the profile.",
        "example": {
          "label": "LinkedIn",
          "url": "https://linkedin.com/in/johndoe"
        }
      },
      "ProfileResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username",
            "examples": [
              "johndoe"
            ]
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProfileData"
              },
              {
                "additionalProperties": true,
                "type": "object"
              }
            ],
            "title": "Data"
          },
          "is_claimed": {
            "type": "boolean",
            "title": "Is Claimed",
            "default": false
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          },
          "longDescriptionContent": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Longdescriptioncontent"
          },
          "stickers": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Stickers"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "created_at"
        ],
        "title": "ProfileResponse",
        "description": "Response model for profile page (claimed or unclaimed).",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "is_claimed": false,
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "PublicProfileCountResponse": {
        "properties": {
          "count": {
            "type": "integer",
            "title": "Count",
            "description": "Number of publicly-indexable profiles.",
            "examples": [
              1234
            ]
          }
        },
        "type": "object",
        "required": [
          "count"
        ],
        "title": "PublicProfileCountResponse",
        "example": {
          "count": 1234
        }
      },
      "PublicProfileSitemapEntry": {
        "properties": {
          "username": {
            "type": "string",
            "title": "Username"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "description": "Last profile edit \u2014 used as the sitemap <lastmod>.",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "username"
        ],
        "title": "PublicProfileSitemapEntry",
        "description": "One publicly-indexable profile, shaped for the sitemap generator."
      },
      "PublicProfilesSitemapResponse": {
        "properties": {
          "profiles": {
            "items": {
              "$ref": "#/components/schemas/PublicProfileSitemapEntry"
            },
            "type": "array",
            "title": "Profiles"
          }
        },
        "type": "object",
        "title": "PublicProfilesSitemapResponse"
      },
      "RecentTransactionItem": {
        "properties": {
          "transaction_id": {
            "type": "string",
            "title": "Transaction Id",
            "description": "Transaction ID (CUID2)",
            "examples": [
              "tx_abc123xyz"
            ]
          },
          "transaction_type": {
            "type": "string",
            "enum": [
              "transfer",
              "reward",
              "refund",
              "reversal",
              "adjustment",
              "proof"
            ],
            "title": "Transaction Type",
            "description": "Type: transfer, reward, refund, etc.",
            "examples": [
              "reward"
            ]
          },
          "direction": {
            "type": "string",
            "enum": [
              "incoming",
              "outgoing"
            ],
            "title": "Direction",
            "description": "'incoming' if wallet received, 'outgoing' if wallet sent",
            "examples": [
              "incoming"
            ]
          },
          "sender_name": {
            "type": "string",
            "title": "Sender Name",
            "description": "Sender name from metadata, or wallet address as fallback",
            "examples": [
              "Acme Corp"
            ]
          },
          "sender_address": {
            "type": "string",
            "title": "Sender Address",
            "description": "Sender wallet address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "amount": {
            "type": "number",
            "title": "Amount",
            "description": "Transaction amount in points",
            "examples": [
              100.0
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Transaction timestamp",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "has_reward_content": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has Reward Content",
            "description": "For reward transactions: True if has content (voucher, etc.), False if points-only. None for non-reward types.",
            "examples": [
              true
            ]
          }
        },
        "type": "object",
        "required": [
          "transaction_id",
          "transaction_type",
          "direction",
          "sender_name",
          "sender_address",
          "amount",
          "created_at"
        ],
        "title": "RecentTransactionItem",
        "description": "Response model for recent transactions with enriched display data.",
        "example": {
          "transaction_id": "tx_abc123xyz",
          "transaction_type": "reward",
          "direction": "incoming",
          "sender_name": "Acme Corp",
          "sender_address": "0x1234567890abcdef1234567890abcdef12345678",
          "amount": 100.0,
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "RedeemRewardRequest": {
        "properties": {
          "identifier": {
            "$ref": "#/components/schemas/IdentifierRef",
            "description": "Tagged-union recipient identifier (wallet/card/username/user_id/link). Resolves to a wallet, including custodial wallets with no Davi account. Use {type: 'user_id', value: <uuid>} to issue to a known Davi user."
          },
          "scope": {
            "type": "string",
            "title": "Scope",
            "description": "Scope of the redemption"
          },
          "metadata": {
            "additionalProperties": true,
            "type": "object",
            "title": "Metadata",
            "description": "Additional metadata"
          },
          "idempotency_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Idempotency Key",
            "description": "Client-provided idempotency key. If not provided, will be derived from stable identifiers"
          }
        },
        "type": "object",
        "required": [
          "identifier",
          "scope"
        ],
        "title": "RedeemRewardRequest"
      },
      "RedemptionResultCompleted": {
        "properties": {
          "status": {
            "type": "string",
            "const": "completed",
            "title": "Status",
            "default": "completed",
            "examples": [
              "completed"
            ]
          },
          "transaction_id": {
            "type": "string",
            "title": "Transaction Id",
            "description": "Transaction ID for the redemption",
            "examples": [
              "tx_abc123xyz"
            ]
          }
        },
        "type": "object",
        "required": [
          "transaction_id"
        ],
        "title": "RedemptionResultCompleted",
        "description": "Result for completed (sync) reward redemption.",
        "example": {
          "status": "completed",
          "transaction_id": "tx_abc123xyz"
        }
      },
      "RedemptionResultPending": {
        "properties": {
          "status": {
            "type": "string",
            "const": "pending",
            "title": "Status",
            "default": "pending",
            "examples": [
              "pending"
            ]
          },
          "delivery_uuid": {
            "type": "string",
            "title": "Delivery Uuid",
            "description": "Webhook delivery UUID for polling status",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          }
        },
        "type": "object",
        "required": [
          "delivery_uuid"
        ],
        "title": "RedemptionResultPending",
        "description": "Result for pending (async) external reward redemption.",
        "example": {
          "status": "pending",
          "delivery_uuid": "01234567-89ab-cdef-0123-456789abcdef"
        }
      },
      "RedirectAction": {
        "properties": {
          "type": {
            "type": "string",
            "const": "redirect",
            "title": "Type",
            "default": "redirect"
          },
          "url": {
            "type": "string",
            "title": "Url"
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "RedirectAction",
        "description": "Send the customer to a hosted checkout page.",
        "example": {
          "type": "redirect"
        }
      },
      "RefreshTokenRequest": {
        "properties": {
          "refresh_token": {
            "type": "string",
            "title": "Refresh Token"
          }
        },
        "type": "object",
        "required": [
          "refresh_token"
        ],
        "title": "RefreshTokenRequest",
        "description": "Token refresh request."
      },
      "RegisterDeviceRequest": {
        "properties": {
          "device_token": {
            "type": "string",
            "maxLength": 4096,
            "minLength": 10,
            "title": "Device Token",
            "description": "FCM device token from the client app"
          },
          "platform": {
            "$ref": "#/components/schemas/DevicePlatform",
            "description": "Device platform (ios, android, web)"
          },
          "device_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Name",
            "description": "Optional friendly name for the device"
          }
        },
        "type": "object",
        "required": [
          "device_token",
          "platform"
        ],
        "title": "RegisterDeviceRequest",
        "description": "Request to register a device for push notifications."
      },
      "RegisterPlatformCardRequest": {
        "properties": {
          "identifier": {
            "type": "string",
            "title": "Identifier",
            "description": "Unique identifier for the card (e.g., serial number, card ID)"
          },
          "card_type": {
            "$ref": "#/components/schemas/CardType",
            "description": "Type of the card (e.g., NFC_CARD, VIRTUAL_CARD, QR_CARD)"
          },
          "membership_tier_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Membership Tier Uuid",
            "description": "Not supported for platform cards \u2014 memberships require an issuing organization, so a non-null value is rejected. Reserved."
          },
          "card_model_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Card Model Uuid",
            "description": "Optional platform card model (design) to assign to the card"
          },
          "custom_front_image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Front Image File Uuid",
            "description": "Optional per-card front image (uploaded file uuid) baked at fulfillment, e.g. a personalized card. Overrides the card model's front in the display resolver (below the holder's own override)."
          }
        },
        "type": "object",
        "required": [
          "identifier",
          "card_type"
        ],
        "title": "RegisterPlatformCardRequest",
        "description": "Request to register a single platform-owned managed card.\n\nPlatform cards have no issuing organization (organization_uuid IS NULL).\nUnlike the org variant, a card model can be assigned at registration time\nso the design is visible from first tap/claim (e.g. cards produced by the\norder fulfillment site are registered with the model they were printed with)."
      },
      "RegisterRequest": {
        "properties": {
          "strategy": {
            "type": "string",
            "title": "Strategy",
            "description": "Authentication strategy name (e.g., 'password')",
            "default": "password"
          },
          "payload": {
            "additionalProperties": true,
            "type": "object",
            "title": "Payload",
            "description": "Strategy-specific credential payload"
          }
        },
        "type": "object",
        "required": [
          "payload"
        ],
        "title": "RegisterRequest",
        "description": "User registration request with strategy-specific payload.",
        "example": {
          "strategy": "password"
        }
      },
      "RegisterResponse": {
        "properties": {
          "auth_user_uuid": {
            "type": "string",
            "title": "Auth User Uuid"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "email_verified": {
            "type": "boolean",
            "title": "Email Verified",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "auth_user_uuid",
          "email"
        ],
        "title": "RegisterResponse",
        "description": "Registration response (no tokens - user must login separately).",
        "example": {
          "email_verified": false
        }
      },
      "RewardAsset": {
        "properties": {
          "type": {
            "type": "string",
            "const": "asset",
            "title": "Type",
            "description": "The type of reward item",
            "examples": [
              "asset"
            ]
          },
          "asset_type": {
            "type": "string",
            "enum": [
              "character_part",
              "avatar_frame",
              "profile_picture",
              "sticker",
              "background"
            ],
            "title": "Asset Type",
            "description": "The customization surface this asset targets",
            "examples": [
              "background"
            ]
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Display name shown on the rewards page",
            "examples": [
              "Aurora Background"
            ]
          },
          "uploaded_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Uploaded File Uuid",
            "description": "Platform file backing the asset (resolved to a URL at read time)",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "external_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Url",
            "description": "External URL backing the asset (e.g. giphy/klipy sticker)",
            "examples": [
              "https://media.giphy.com/media/xyz/giphy.gif"
            ]
          },
          "metadata": {
            "additionalProperties": true,
            "type": "object",
            "title": "Metadata",
            "description": "Per-type extras (e.g. character-part slot + customization schema from the .daviasset manifest, sticker rating, frame scale)",
            "examples": [
              {
                "palette": "cool",
                "slot": "background"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "type",
          "asset_type"
        ],
        "title": "RewardAsset",
        "description": "A profile asset granted by a reward \u2014 a background, sticker, profile\npicture, avatar frame, or 3D character part.\n\nUnlike the other reward items (which are display artifacts), a RewardAsset\nis a durable entitlement: on the user's explicit *Install* it is expanded\ninto a `user_assets` row and becomes equippable. A reward whose `items`\ncarry several RewardAssets is a *pack* \u2014 one Install yields many rows.\n\nFile-shaped: a platform file (`uploaded_file_uuid`) XOR an external URL\n(`external_url`) \u2014 exactly one is set. This first-classes the intent the\n`RewardAttachment` `attachment_type: \"asset\"` slot only gestured at.",
        "example": {
          "type": "asset",
          "asset_type": "background",
          "metadata": {
            "palette": "cool",
            "slot": "background"
          }
        }
      },
      "RewardAttachment": {
        "properties": {
          "type": {
            "type": "string",
            "const": "attachment",
            "title": "Type",
            "description": "The type of attachment",
            "examples": [
              "attachment"
            ]
          },
          "attachment_type": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "link",
              "file",
              "asset"
            ],
            "title": "Attachment Type",
            "description": "The type of attachment",
            "examples": [
              "image"
            ]
          },
          "content_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Type",
            "description": "The MIME type of the attachment",
            "examples": [
              "image/png"
            ]
          },
          "url": {
            "type": "string",
            "title": "Url",
            "description": "The URL of the attachment",
            "examples": [
              "https://cdn.example.com/rewards/voucher.png"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "The name of the attachment",
            "examples": [
              "Gift Voucher"
            ]
          },
          "file_size": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Size",
            "description": "The file size in bytes (provided for uploaded files, null for external URLs)",
            "examples": [
              102400
            ]
          },
          "additional_instructions": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Additional Instructions",
            "description": "Additional instructions for the attachment",
            "examples": [
              "Print this voucher and present at checkout"
            ]
          }
        },
        "type": "object",
        "required": [
          "type",
          "attachment_type",
          "url",
          "name"
        ],
        "title": "RewardAttachment",
        "example": {
          "type": "attachment",
          "attachment_type": "image",
          "url": "https://cdn.example.com/rewards/voucher.png",
          "name": "Gift Voucher"
        }
      },
      "RewardBadge": {
        "properties": {
          "type": {
            "type": "string",
            "const": "badge",
            "title": "Type",
            "description": "The type of badge",
            "examples": [
              "badge"
            ]
          },
          "title": {
            "type": "string",
            "title": "Title",
            "description": "The title of the badge",
            "examples": [
              "Conference Attendee"
            ]
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "The description of the badge",
            "examples": [
              "Awarded for attending the 2024 Annual Conference"
            ]
          },
          "badge_url": {
            "type": "string",
            "title": "Badge Url",
            "description": "The URL of the badge image",
            "examples": [
              "https://cdn.example.com/badges/conference-2024.png"
            ]
          },
          "social_share_text_template": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Social Share Text Template",
            "description": "The template for sharing the badge on social media",
            "examples": [
              "I attended the 2024 Annual Conference! #conference2024"
            ]
          }
        },
        "type": "object",
        "required": [
          "type",
          "title",
          "description",
          "badge_url"
        ],
        "title": "RewardBadge",
        "example": {
          "type": "badge",
          "title": "Conference Attendee",
          "description": "Awarded for attending the 2024 Annual Conference",
          "badge_url": "https://cdn.example.com/badges/conference-2024.png"
        }
      },
      "RewardCertificate": {
        "properties": {
          "type": {
            "type": "string",
            "const": "certificate",
            "title": "Type",
            "description": "The type of certificate",
            "examples": [
              "certificate"
            ]
          },
          "title": {
            "type": "string",
            "title": "Title",
            "description": "The title of the certificate",
            "examples": [
              "Certificate of Attendance"
            ]
          },
          "certificate_id": {
            "type": "string",
            "title": "Certificate Id",
            "description": "The ID of the certificate",
            "examples": [
              "CERT-2024-001"
            ]
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "The description of the certificate",
            "examples": [
              "This certifies attendance at the 2024 Annual Conference"
            ]
          },
          "image_url": {
            "type": "string",
            "title": "Image Url",
            "description": "The URL of the certificate image",
            "examples": [
              "https://cdn.example.com/certs/conference-2024.pdf"
            ]
          },
          "social_share_text_template": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Social Share Text Template",
            "description": "The template for sharing the certificate on social media",
            "examples": [
              "I received my certificate! #certified"
            ]
          },
          "validity": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Validity",
            "description": "The number of days the certificate is valid for",
            "examples": [
              365
            ]
          }
        },
        "type": "object",
        "required": [
          "type",
          "title",
          "certificate_id",
          "description",
          "image_url"
        ],
        "title": "RewardCertificate",
        "example": {
          "type": "certificate",
          "title": "Certificate of Attendance",
          "certificate_id": "CERT-2024-001",
          "description": "This certifies attendance at the 2024 Annual Conference",
          "image_url": "https://cdn.example.com/certs/conference-2024.pdf"
        }
      },
      "RewardCoupon": {
        "properties": {
          "type": {
            "type": "string",
            "const": "coupon",
            "title": "Type",
            "description": "The type of coupon",
            "examples": [
              "coupon"
            ]
          },
          "code": {
            "type": "string",
            "title": "Code",
            "description": "The coupon code",
            "examples": [
              "SAVE20"
            ]
          },
          "discount_type": {
            "type": "string",
            "enum": [
              "percentage",
              "fixed_amount"
            ],
            "title": "Discount Type",
            "description": "The type of discount",
            "examples": [
              "percentage"
            ]
          },
          "discount_value": {
            "type": "number",
            "title": "Discount Value",
            "description": "The value of the discount",
            "examples": [
              20.0
            ]
          },
          "instructions": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Instructions",
            "description": "Instructions for using the coupon",
            "examples": [
              "Enter code at checkout to receive 20% off"
            ]
          },
          "expiration_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiration Date",
            "description": "The expiration date of the coupon",
            "examples": [
              "2024-12-31T23:59:59Z"
            ]
          },
          "usage_limit": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Usage Limit",
            "description": "The usage limit of the coupon",
            "examples": [
              1
            ]
          }
        },
        "type": "object",
        "required": [
          "type",
          "code",
          "discount_type",
          "discount_value"
        ],
        "title": "RewardCoupon",
        "example": {
          "type": "coupon",
          "code": "SAVE20",
          "discount_type": "percentage",
          "discount_value": 20.0
        }
      },
      "RewardEventContent": {
        "properties": {
          "reward_template": {
            "$ref": "#/components/schemas/RewardTemplateSummary"
          },
          "transaction_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Id",
            "examples": [
              "tx_abc123xyz"
            ]
          }
        },
        "type": "object",
        "required": [
          "reward_template"
        ],
        "title": "RewardEventContent",
        "description": "Content for reward.redeemed."
      },
      "RewardFileResponse": {
        "properties": {
          "transaction_id": {
            "type": "string",
            "title": "Transaction Id",
            "description": "Transaction ID of the cached reward",
            "examples": [
              "tx_abc123xyz"
            ]
          },
          "content_version": {
            "type": "string",
            "title": "Content Version",
            "description": "Version of the reward content schema",
            "examples": [
              "1.0"
            ]
          },
          "generated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Generated At",
            "description": "When the reward content was generated",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "reward_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reward Name",
            "description": "Reward template name at issuance",
            "examples": [
              "Conference Badge"
            ]
          },
          "reward_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reward Description",
            "description": "Reward template description at issuance",
            "examples": [
              "Digital badge for conference attendance"
            ]
          },
          "issuer": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IssuerSnapshot"
              },
              {
                "type": "null"
              }
            ],
            "description": "Issuer details at time of issuance"
          },
          "activity": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActivitySnapshot"
              },
              {
                "type": "null"
              }
            ],
            "description": "Activity details at time of issuance (if activity-linked)"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RewardBadge"
              },
              {
                "$ref": "#/components/schemas/RewardCertificate"
              },
              {
                "$ref": "#/components/schemas/RewardAttachment"
              },
              {
                "$ref": "#/components/schemas/RewardCoupon"
              },
              {
                "$ref": "#/components/schemas/RewardTicket"
              },
              {
                "$ref": "#/components/schemas/RewardAsset"
              }
            ],
            "title": "Data",
            "description": "The file data (badge, certificate, attachment, coupon, ticket, asset)"
          },
          "preview_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preview Url",
            "description": "Resolved media URL for previewing an asset item (media viewer). Populated for installable asset previews; null otherwise.",
            "examples": [
              "https://cdn.example.com/files/aurora.png"
            ]
          },
          "installable": {
            "type": "boolean",
            "title": "Installable",
            "description": "Whether this item is an installable reward asset (show an Install button).",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "transaction_id",
          "content_version",
          "data"
        ],
        "title": "RewardFileResponse",
        "description": "Response for fetching a specific file (badge, certificate, attachment, coupon) from cached reward.",
        "example": {
          "transaction_id": "tx_abc123xyz",
          "content_version": "1.0",
          "installable": false
        }
      },
      "RewardPropagationResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "reward_template_uuid": {
            "type": "string",
            "title": "Reward Template Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "from_version": {
            "type": "integer",
            "title": "From Version",
            "examples": [
              1
            ]
          },
          "to_version": {
            "type": "integer",
            "title": "To Version",
            "examples": [
              2
            ]
          },
          "total_count": {
            "type": "integer",
            "title": "Total Count",
            "examples": [
              50
            ]
          },
          "completed_count": {
            "type": "integer",
            "title": "Completed Count",
            "examples": [
              48
            ]
          },
          "failed_count": {
            "type": "integer",
            "title": "Failed Count",
            "examples": [
              2
            ]
          },
          "status": {
            "type": "string",
            "title": "Status",
            "examples": [
              "completed"
            ]
          },
          "points_delta": {
            "type": "integer",
            "title": "Points Delta",
            "examples": [
              0
            ]
          },
          "initiated_by": {
            "type": "string",
            "title": "Initiated By",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "failure_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Reason"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "reward_template_uuid",
          "from_version",
          "to_version",
          "total_count",
          "completed_count",
          "failed_count",
          "status",
          "points_delta",
          "initiated_by",
          "created_at"
        ],
        "title": "RewardPropagationResponse",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "reward_template_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "from_version": 1,
          "to_version": 2,
          "total_count": 50,
          "completed_count": 48,
          "failed_count": 2,
          "status": "completed",
          "points_delta": 0,
          "initiated_by": "01234567-89ab-cdef-0123-456789abcdef",
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "RewardTemplateResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "version": {
            "type": "integer",
            "title": "Version",
            "examples": [
              1
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "conference-badge"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "activity_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activity Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Conference Badge"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "examples": [
              "Digital badge for conference attendance"
            ]
          },
          "points": {
            "type": "integer",
            "title": "Points",
            "examples": [
              100
            ]
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category",
            "examples": [
              "badges"
            ]
          },
          "supply_total": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Supply Total",
            "examples": [
              1000
            ]
          },
          "supply_redeemed": {
            "type": "integer",
            "title": "Supply Redeemed",
            "examples": [
              150
            ]
          },
          "required_entitlement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required Entitlement",
            "examples": [
              "reward.access:summer-drop"
            ]
          },
          "content_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Config",
            "examples": [
              {
                "storage_type": "platform"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ],
            "title": "Status",
            "description": "Lifecycle state, derived from is_draft and archived_at.",
            "examples": [
              "published"
            ]
          },
          "is_draft": {
            "type": "boolean",
            "title": "Is Draft",
            "examples": [
              false
            ]
          },
          "archived_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Archived At",
            "examples": [
              null
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "version",
          "slug",
          "organization_uuid",
          "name",
          "points",
          "supply_redeemed",
          "status",
          "is_draft",
          "created_at"
        ],
        "title": "RewardTemplateResponse",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "version": 1,
          "slug": "conference-badge",
          "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "name": "Conference Badge",
          "points": 100,
          "supply_redeemed": 150,
          "status": "published",
          "is_draft": false,
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "RewardTemplateSummary": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Conference Badge"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "examples": [
              "Digital badge for conference attendance"
            ]
          },
          "image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image File Url",
            "examples": [
              "https://cdn.example.com/badges/conference.png"
            ]
          },
          "organization": {
            "$ref": "#/components/schemas/OrganizationSummary"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "name",
          "organization"
        ],
        "title": "RewardTemplateSummary",
        "description": "Lightweight reward template info.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "name": "Conference Badge"
        }
      },
      "RewardTicket": {
        "properties": {
          "type": {
            "type": "string",
            "const": "ticket",
            "title": "Type",
            "description": "The type of reward item",
            "examples": [
              "ticket"
            ]
          },
          "title": {
            "type": "string",
            "title": "Title",
            "description": "The name of the ticket / admission tier",
            "examples": [
              "General Admission"
            ]
          },
          "event_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Name",
            "description": "The name of the event the ticket admits to. For activity-linked ticket templates, inherited from the activity at issuance when blank.",
            "examples": [
              "Annual Conference 2024"
            ]
          },
          "ticket_number": {
            "type": "string",
            "title": "Ticket Number",
            "description": "Human-readable unique ticket number printed on the ticket",
            "examples": [
              "TICKET-2024-000123"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Additional description of the ticket",
            "examples": [
              "Full-day access to all conference tracks"
            ]
          },
          "venue": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Venue",
            "description": "The venue name and/or address",
            "examples": [
              "Moscone Center, 747 Howard St, San Francisco, CA"
            ]
          },
          "starts_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Starts At",
            "description": "When the event / admission window starts",
            "examples": [
              "2024-09-15T09:00:00Z"
            ]
          },
          "ends_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ends At",
            "description": "When the event / admission window ends",
            "examples": [
              "2024-09-15T18:00:00Z"
            ]
          },
          "admission_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Admission Type",
            "description": "Admission tier or category",
            "examples": [
              "VIP"
            ]
          },
          "seat": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Seat",
            "description": "Free-form seat assignment (section / row / seat), if any",
            "examples": [
              "Section A \u00b7 Row 3 \u00b7 Seat 12"
            ]
          },
          "barcode_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Barcode Value",
            "description": "The value encoded in the scannable code presented at entry",
            "examples": [
              "TCKT-8F3A-19C2-77BE"
            ]
          },
          "barcode_format": {
            "type": "string",
            "enum": [
              "qrcode",
              "code128",
              "pdf417",
              "aztec",
              "ean13"
            ],
            "title": "Barcode Format",
            "description": "Encoding format of the scannable code",
            "default": "qrcode",
            "examples": [
              "qrcode"
            ]
          },
          "image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Url",
            "description": "URL of the ticket artwork or rendered pass image",
            "examples": [
              "https://cdn.example.com/tickets/conference-2024.png"
            ]
          },
          "instructions": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Instructions",
            "description": "Entry instructions for the ticket holder",
            "examples": [
              "Present this QR code at the main entrance for scanning"
            ]
          }
        },
        "type": "object",
        "required": [
          "type",
          "title",
          "ticket_number"
        ],
        "title": "RewardTicket",
        "description": "An admission ticket issued as reward content \u2014 a self-describing pass to\nan event or session.\n\nA first-class reward item alongside badges, certificates, and coupons: it\ncarries everything a holder needs to be admitted (event, timing, venue,\nseat, and a scannable code) without depending on any davi-internal ledger or\nwallet reference. The scan code is what a gate/kiosk reads to admit the\nholder; how that code maps to a redeemed reward is a davi concern kept out\nof this portable structure.",
        "example": {
          "type": "ticket",
          "title": "General Admission",
          "ticket_number": "TICKET-2024-000123",
          "barcode_format": "qrcode"
        }
      },
      "RewardTriggerResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "5th Check-in Bonus"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "examples": [
              "Rewards users after their 5th check-in"
            ]
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "examples": [
              true
            ]
          },
          "reward_template_uuid": {
            "type": "string",
            "title": "Reward Template Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "trigger_scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Trigger Scopes",
            "examples": [
              [
                "activity.checked_in:count:5"
              ]
            ]
          },
          "reward_metadata": {
            "additionalProperties": true,
            "type": "object",
            "title": "Reward Metadata",
            "examples": [
              {
                "bonus_type": "milestone"
              }
            ]
          },
          "organization_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "deduplication_window_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deduplication Window Seconds",
            "default": 300,
            "examples": [
              300
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "created_at",
          "name",
          "enabled",
          "reward_template_uuid",
          "trigger_scopes",
          "reward_metadata"
        ],
        "title": "RewardTriggerResponse",
        "description": "Response model for reward trigger.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "created_at": "2024-01-15T10:30:00Z",
          "name": "5th Check-in Bonus",
          "enabled": true,
          "reward_template_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "trigger_scopes": [
            "activity.checked_in:count:5"
          ],
          "reward_metadata": {
            "bonus_type": "milestone"
          }
        }
      },
      "RotateSecretResponse": {
        "properties": {
          "client_id": {
            "type": "string",
            "title": "Client Id",
            "description": "OAuth2 client identifier",
            "examples": [
              "client_abc123xyz"
            ]
          },
          "client_secret": {
            "type": "string",
            "title": "Client Secret",
            "description": "New client secret (only shown once)",
            "examples": [
              "secret_newxyz789abc123"
            ]
          },
          "rotated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Rotated At",
            "description": "Rotation timestamp",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "client_id",
          "client_secret",
          "rotated_at"
        ],
        "title": "RotateSecretResponse",
        "description": "Response when rotating a client secret.",
        "example": {
          "client_id": "client_abc123xyz",
          "client_secret": "secret_newxyz789abc123",
          "rotated_at": "2024-06-20T14:45:00Z"
        }
      },
      "ScopeGroup": {
        "properties": {
          "consent_description": {
            "type": "string",
            "title": "Consent Description",
            "description": "User-friendly description for consent screen"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes",
            "description": "List of scope identifiers in this group"
          },
          "sensitive": {
            "type": "boolean",
            "title": "Sensitive",
            "description": "True if any scope in the group is sensitive",
            "default": false
          },
          "category": {
            "type": "string",
            "title": "Category",
            "description": "Scope category"
          },
          "requires_resource_access": {
            "type": "boolean",
            "title": "Requires Resource Access",
            "description": "True if scopes apply to resources user has access to, not personal resources",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "consent_description",
          "scopes",
          "category"
        ],
        "title": "ScopeGroup",
        "description": "A group of related scopes with a combined consent description.",
        "example": {
          "sensitive": false,
          "requires_resource_access": false
        }
      },
      "ScopeGroupsResponse": {
        "properties": {
          "groups": {
            "items": {
              "$ref": "#/components/schemas/ScopeGroup"
            },
            "type": "array",
            "title": "Groups",
            "description": "Scopes grouped by category with combined descriptions"
          }
        },
        "type": "object",
        "required": [
          "groups"
        ],
        "title": "ScopeGroupsResponse",
        "description": "Response containing grouped scopes for consent screen."
      },
      "SendInviteEmailRequest": {
        "properties": {
          "invite_url": {
            "type": "string",
            "title": "Invite Url",
            "description": "Full invite URL for the email (e.g., https://app.example.com/invites/abc123)"
          }
        },
        "type": "object",
        "required": [
          "invite_url"
        ],
        "title": "SendInviteEmailRequest",
        "description": "Request to send invite email with custom URL."
      },
      "SessionInfo": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "user_agent": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "User Agent"
          },
          "ip_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ip Address"
          },
          "is_current": {
            "type": "boolean",
            "title": "Is Current",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "created_at"
        ],
        "title": "SessionInfo",
        "description": "Information about a user session.",
        "example": {
          "is_current": false
        }
      },
      "SessionListResponse": {
        "properties": {
          "sessions": {
            "items": {
              "$ref": "#/components/schemas/SessionInfo"
            },
            "type": "array",
            "title": "Sessions"
          }
        },
        "type": "object",
        "required": [
          "sessions"
        ],
        "title": "SessionListResponse",
        "description": "List of user sessions."
      },
      "SessionPresentationResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "day-1-morning"
            ]
          },
          "activity_uuid": {
            "type": "string",
            "title": "Activity Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Day 1 - Morning"
            ]
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "title": "Start Time",
            "examples": [
              "2024-09-15T09:00:00Z"
            ]
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "title": "End Time",
            "examples": [
              "2024-09-15T12:00:00Z"
            ]
          },
          "is_checkin_open": {
            "type": "boolean",
            "title": "Is Checkin Open",
            "default": true,
            "examples": [
              true
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "activity_uuid",
          "name",
          "start_time",
          "end_time"
        ],
        "title": "SessionPresentationResponse",
        "description": "What a door page shows about a session before anyone identifies themselves.\n\nNarrower than `SessionResponse`, which also carries the capacity, the ticket\nand entitlement configuration and the record's timestamps. A page that only\nhas to say which session this is, whether it is running and whether check-in\nis open should not receive the rest.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "slug": "day-1-morning",
          "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "name": "Day 1 - Morning",
          "start_time": "2024-09-15T09:00:00Z",
          "end_time": "2024-09-15T12:00:00Z",
          "is_checkin_open": true
        }
      },
      "SessionResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "day-1-morning"
            ]
          },
          "activity_uuid": {
            "type": "string",
            "title": "Activity Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Day 1 - Morning"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "examples": [
              "Opening keynote and morning sessions"
            ]
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "title": "Start Time",
            "examples": [
              "2024-09-15T09:00:00Z"
            ]
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "title": "End Time",
            "examples": [
              "2024-09-15T12:00:00Z"
            ]
          },
          "max_attendees": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Attendees",
            "examples": [
              100
            ]
          },
          "is_checkin_open": {
            "type": "boolean",
            "title": "Is Checkin Open",
            "default": true,
            "examples": [
              true
            ]
          },
          "requires_ticket": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requires Ticket",
            "examples": [
              null
            ]
          },
          "required_entitlement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required Entitlement",
            "examples": [
              null
            ]
          },
          "ticket_template_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ticket Template Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "sequence_number": {
            "type": "integer",
            "title": "Sequence Number",
            "examples": [
              1
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "activity_uuid",
          "name",
          "start_time",
          "end_time",
          "sequence_number",
          "created_at"
        ],
        "title": "SessionResponse",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "slug": "day-1-morning",
          "activity_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "name": "Day 1 - Morning",
          "start_time": "2024-09-15T09:00:00Z",
          "end_time": "2024-09-15T12:00:00Z",
          "is_checkin_open": true,
          "sequence_number": 1,
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "SessionRevokeResponse": {
        "properties": {
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Success message",
            "examples": [
              "Session revoked successfully"
            ]
          }
        },
        "type": "object",
        "required": [
          "message"
        ],
        "title": "SessionRevokeResponse",
        "example": {
          "message": "Session revoked successfully"
        }
      },
      "SetUsernameRequest": {
        "properties": {
          "username": {
            "type": "string",
            "maxLength": 30,
            "minLength": 3,
            "title": "Username"
          }
        },
        "type": "object",
        "required": [
          "username"
        ],
        "title": "SetUsernameRequest",
        "description": "Request to set username during onboarding."
      },
      "SetUsernameResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "username": {
            "type": "string",
            "title": "Username"
          }
        },
        "type": "object",
        "required": [
          "success",
          "username"
        ],
        "title": "SetUsernameResponse",
        "description": "Response after setting username."
      },
      "StaffUserSummary": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username",
            "examples": [
              "johndoe"
            ]
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name",
            "examples": [
              "John"
            ]
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name",
            "examples": [
              "Doe"
            ]
          },
          "avatar_image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Image File Url",
            "examples": [
              "https://cdn.example.com/avatars/johndoe.png"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid"
        ],
        "title": "StaffUserSummary",
        "description": "Summary of user info for staff listings.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef"
        }
      },
      "StartMembershipPaymentRequest": {
        "properties": {
          "membership_tier_slug": {
            "type": "string",
            "title": "Membership Tier Slug"
          },
          "intent_kind": {
            "type": "string",
            "enum": [
              "join",
              "renew",
              "change_tier"
            ],
            "title": "Intent Kind",
            "default": "join"
          },
          "custom_tier_price_cents": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Price Cents"
          },
          "custom_tier_payment_interval": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Payment Interval"
          },
          "return_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Return Url"
          }
        },
        "type": "object",
        "required": [
          "membership_tier_slug"
        ],
        "title": "StartMembershipPaymentRequest",
        "description": "Start a paid join / renewal / tier change.",
        "example": {
          "intent_kind": "join"
        }
      },
      "StartMembershipPaymentResponse": {
        "properties": {
          "payment_uuid": {
            "type": "string",
            "title": "Payment Uuid"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "session_id": {
            "type": "string",
            "title": "Session Id"
          },
          "next_action": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/RedirectAction"
              },
              {
                "$ref": "#/components/schemas/InstructionsAction"
              }
            ],
            "title": "Next Action",
            "discriminator": {
              "propertyName": "type",
              "mapping": {
                "instructions": "#/components/schemas/InstructionsAction",
                "redirect": "#/components/schemas/RedirectAction"
              }
            }
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "payment_uuid",
          "status",
          "session_id",
          "next_action"
        ],
        "title": "StartMembershipPaymentResponse"
      },
      "TemplateBackground": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "examples": [
              "tmpl-bg-aurora"
            ]
          },
          "label": {
            "type": "string",
            "title": "Label",
            "examples": [
              "Aurora"
            ]
          },
          "url": {
            "type": "string",
            "title": "Url",
            "description": "Background image URL",
            "examples": [
              "https://cdn.example.com/templates/aurora.png"
            ]
          },
          "size": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Size",
            "examples": [
              "cover"
            ]
          },
          "position": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position",
            "examples": [
              "center"
            ]
          },
          "repeat": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Repeat",
            "examples": [
              "no-repeat"
            ]
          },
          "fallback_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fallback Color",
            "examples": [
              "#1a1a2e"
            ]
          }
        },
        "type": "object",
        "required": [
          "id",
          "label",
          "url"
        ],
        "title": "TemplateBackground",
        "description": "A background provided by a profile's template (a provision \u2014 available by\ncontext, not individually earned). Read from the source template's\n`template_data.provisioned_backgrounds`.",
        "example": {
          "id": "tmpl-bg-aurora",
          "label": "Aurora",
          "url": "https://cdn.example.com/templates/aurora.png"
        }
      },
      "TokenExchangeRequest": {
        "properties": {
          "resource": {
            "type": "string",
            "title": "Resource",
            "description": "Resource URI to scope the token to (e.g., 'org:<uuid>')"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ],
        "title": "TokenExchangeRequest",
        "description": "Token exchange request for org-scoped tokens.\n\nAllows exchanging a user's access token for an org-scoped token\nwithout requiring an OAuth2 client_id (first-party use)."
      },
      "TokenExchangeResponse": {
        "properties": {
          "access_token": {
            "type": "string",
            "title": "Access Token"
          },
          "token_type": {
            "type": "string",
            "title": "Token Type",
            "default": "Bearer"
          },
          "expires_in": {
            "type": "integer",
            "title": "Expires In"
          },
          "scope": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scope"
          },
          "issued_token_type": {
            "type": "string",
            "title": "Issued Token Type",
            "default": "urn:ietf:params:oauth:token-type:access_token"
          }
        },
        "type": "object",
        "required": [
          "access_token",
          "expires_in"
        ],
        "title": "TokenExchangeResponse",
        "description": "Token exchange response (no refresh token per RFC 8693).",
        "example": {
          "token_type": "Bearer",
          "issued_token_type": "urn:ietf:params:oauth:token-type:access_token"
        }
      },
      "TokenResponse": {
        "properties": {
          "access_token": {
            "type": "string",
            "title": "Access Token"
          },
          "refresh_token": {
            "type": "string",
            "title": "Refresh Token"
          },
          "token_type": {
            "type": "string",
            "title": "Token Type",
            "default": "Bearer"
          },
          "expires_in": {
            "type": "integer",
            "title": "Expires In"
          },
          "scope": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scope"
          }
        },
        "type": "object",
        "required": [
          "access_token",
          "refresh_token",
          "expires_in"
        ],
        "title": "TokenResponse",
        "description": "OAuth2 token response.",
        "example": {
          "token_type": "Bearer"
        }
      },
      "Transaction": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Transaction ID (CUID2)",
            "examples": [
              "tx_abc123xyz"
            ]
          },
          "from_address": {
            "type": "string",
            "title": "From Address",
            "description": "Sender wallet address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "to_address": {
            "type": "string",
            "title": "To Address",
            "description": "Receiver wallet address",
            "examples": [
              "0xabcdef1234567890abcdef1234567890abcdef12"
            ]
          },
          "amount": {
            "type": "number",
            "title": "Amount",
            "description": "Transaction amount",
            "examples": [
              100.0
            ]
          },
          "transaction_type": {
            "type": "string",
            "title": "Transaction Type",
            "description": "Type of transaction",
            "examples": [
              "reward"
            ]
          },
          "status": {
            "type": "string",
            "title": "Status",
            "description": "Status of the transaction",
            "examples": [
              "confirmed"
            ]
          },
          "transaction_hash": {
            "type": "string",
            "title": "Transaction Hash",
            "description": "Hash of the transaction",
            "examples": [
              "0xabc123def456789..."
            ]
          },
          "previous_hash": {
            "type": "string",
            "title": "Previous Hash",
            "description": "Hash of the previous transaction",
            "examples": [
              "0x000000..."
            ]
          },
          "signature": {
            "type": "string",
            "title": "Signature",
            "description": "Digital signature of the transaction",
            "examples": [
              "MEUCIQDx..."
            ]
          },
          "public_key": {
            "type": "string",
            "title": "Public Key",
            "description": "Public key in PEM format",
            "examples": [
              "-----BEGIN PUBLIC KEY-----..."
            ]
          },
          "encrypted_data": {
            "type": "string",
            "title": "Encrypted Data",
            "description": "Encrypted transaction data",
            "examples": [
              "U2FsdGVkX1..."
            ]
          },
          "data_hash": {
            "type": "string",
            "title": "Data Hash",
            "description": "Hash of the transaction data",
            "examples": [
              "sha256:abc123..."
            ]
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "Description of the transaction",
            "examples": [
              "Reward for attendance"
            ]
          },
          "reference_id": {
            "type": "string",
            "title": "Reference Id",
            "description": "Reference ID for the transaction",
            "examples": [
              "reward_template_123"
            ]
          },
          "original_transaction_id": {
            "type": "string",
            "title": "Original Transaction Id",
            "description": "Original transaction ID for reversals/refunds (CUID2)",
            "examples": [
              ""
            ]
          },
          "failure_reason": {
            "type": "string",
            "title": "Failure Reason",
            "description": "Reason for failure, if any",
            "examples": [
              ""
            ]
          },
          "reversal_reason": {
            "type": "string",
            "title": "Reversal Reason",
            "description": "Reason for reversal, if any",
            "examples": [
              ""
            ]
          },
          "failed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failed At",
            "description": "Timestamp when the transaction failed",
            "examples": [
              null
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Timestamp when the transaction was created",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "confirmed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmed At",
            "description": "Timestamp when the transaction was confirmed",
            "examples": [
              "2024-01-15T10:30:05Z"
            ]
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags",
            "description": "Tags attached to the transaction at creation time",
            "examples": [
              [
                "reward",
                "template:abc123"
              ]
            ]
          }
        },
        "type": "object",
        "required": [
          "id",
          "from_address",
          "to_address",
          "amount",
          "transaction_type",
          "status",
          "transaction_hash",
          "previous_hash",
          "signature",
          "public_key",
          "encrypted_data",
          "data_hash",
          "description",
          "reference_id",
          "original_transaction_id",
          "failure_reason",
          "reversal_reason",
          "failed_at",
          "created_at",
          "confirmed_at"
        ],
        "title": "Transaction",
        "example": {
          "id": "tx_abc123xyz",
          "from_address": "0x1234567890abcdef1234567890abcdef12345678",
          "to_address": "0xabcdef1234567890abcdef1234567890abcdef12",
          "amount": 100.0,
          "transaction_type": "reward",
          "status": "confirmed",
          "transaction_hash": "0xabc123def456789...",
          "previous_hash": "0x000000...",
          "signature": "MEUCIQDx...",
          "public_key": "-----BEGIN PUBLIC KEY-----...",
          "encrypted_data": "U2FsdGVkX1...",
          "data_hash": "sha256:abc123...",
          "description": "Reward for attendance",
          "reference_id": "reward_template_123",
          "original_transaction_id": "",
          "failure_reason": "",
          "reversal_reason": "",
          "created_at": "2024-01-15T10:30:00Z",
          "tags": [
            "reward",
            "template:abc123"
          ]
        }
      },
      "TransactionData": {
        "properties": {
          "manifest_url": {
            "type": "string",
            "title": "Manifest Url",
            "description": "The URL of the reward manifest",
            "examples": [
              "https://cdn.example.com/rewards/manifest.json"
            ]
          },
          "content_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Hash",
            "description": "The hash of the reward content. Used for integrity checking",
            "examples": [
              "sha256:abc123..."
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At",
            "description": "The expiration date of the reward manifest",
            "examples": [
              "2025-01-15T10:30:00Z"
            ]
          },
          "access_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Access Key",
            "description": "The access key for the reward manifest",
            "examples": [
              "key_abc123"
            ]
          },
          "access_key_type": {
            "type": "string",
            "enum": [
              "bearer",
              "signature",
              "none"
            ],
            "title": "Access Key Type",
            "description": "The type of access key for the reward manifest",
            "default": "none",
            "examples": [
              "bearer"
            ]
          },
          "additional_data": {
            "additionalProperties": true,
            "type": "object",
            "title": "Additional Data",
            "description": "Additional transaction-specific custom data",
            "examples": [
              {
                "source": "activity_checkin"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "manifest_url",
          "additional_data"
        ],
        "title": "TransactionData",
        "example": {
          "manifest_url": "https://cdn.example.com/rewards/manifest.json",
          "access_key_type": "bearer",
          "additional_data": {
            "source": "activity_checkin"
          }
        }
      },
      "TransferOwnershipRequest": {
        "properties": {
          "new_owner_user_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              }
            ],
            "title": "New Owner User Uuid",
            "description": "UUID of the member who will become the new organization owner"
          }
        },
        "type": "object",
        "required": [
          "new_owner_user_uuid"
        ],
        "title": "TransferOwnershipRequest"
      },
      "UnassignProfileRequest": {
        "properties": {
          "card_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              }
            ],
            "title": "Card Uuid",
            "description": "UUID of the card to unassign the profile from"
          }
        },
        "type": "object",
        "required": [
          "card_uuid"
        ],
        "title": "UnassignProfileRequest",
        "description": "Request to unassign a profile from a card."
      },
      "UnauthorizedErrorResponse": {
        "properties": {
          "errors": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Errors",
            "description": "Map of field names to error messages. Use '_root' for form-level errors.",
            "example": {
              "_root": "An error occurred"
            }
          },
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Human-readable error summary"
          },
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code",
            "description": "Machine-readable error code"
          }
        },
        "type": "object",
        "required": [
          "errors",
          "message"
        ],
        "title": "UnauthorizedErrorResponse",
        "description": "401 Unauthorized - Authentication required or failed.",
        "example": {
          "code": "invalid_credentials",
          "errors": {
            "_root": "Invalid credentials"
          },
          "message": "Invalid credentials"
        }
      },
      "UpdateActivityRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Name of the activity"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Description of the activity"
          },
          "image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image File Uuid",
            "description": "UUID of the image file associated with the activity"
          },
          "website_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website Url",
            "description": "Website URL for the activity"
          },
          "additional_data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Additional Data",
            "description": "Additional JSON data for the activity"
          },
          "max_attendees": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Attendees",
            "description": "Maximum number of attendees (None = unlimited)"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "Activity start time (for check-in validation)"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Activity end time (for check-in validation)"
          },
          "is_session_checkin_open": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Session Checkin Open",
            "description": "Master switch for session check-in (False = all session check-ins closed)"
          },
          "ticket_template_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ticket Template Uuid",
            "description": "Default ticket reward template for the event"
          },
          "requires_ticket": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requires Ticket",
            "description": "Whether sessions require a ticket by default"
          },
          "required_entitlement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required Entitlement",
            "description": "Entitlement gate to attend (send null to clear)"
          }
        },
        "type": "object",
        "title": "UpdateActivityRequest"
      },
      "UpdateCardModelRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Display name for the card design"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Optional description of the card design"
          },
          "front_image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Front Image File Uuid",
            "description": "UUID of the uploaded file for the front image"
          },
          "back_image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Back Image File Uuid",
            "description": "UUID of the uploaded file for the back image"
          },
          "ordering_schema": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ordering Schema",
            "description": "JSON schema for ordering/printing workflows"
          },
          "template_data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Data",
            "description": "Raw template-kit design document (the source template). Stored as an opaque, portable payload so consumers can fetch and render the design; carries its own format_version."
          },
          "profile_template_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Template Uuid",
            "description": "UUID of the profile page template attached to this card model. Must be platform-owned or owned by the same organization as the card model. When NULL, cards using this model do not auto-generate a profile."
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active",
            "description": "Whether the card model is active and can be assigned to cards"
          }
        },
        "type": "object",
        "title": "UpdateCardModelRequest",
        "description": "Request to update a card model."
      },
      "UpdateCardRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string",
                    "const": ""
                  },
                  {
                    "type": "string"
                  }
                ],
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Friendly name for the card. Set to empty string to remove."
          },
          "is_primary": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Primary",
            "description": "Make this the caller's primary card, the identity anchor whose profile answers a default lookup. Only `true` is meaningful: a primary card is unset by naming a different one."
          },
          "frozen": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Frozen",
            "description": "Whether the holder has frozen this card. The issuer keeps a separate registry freeze, and a card is frozen if either is set."
          }
        },
        "type": "object",
        "title": "UpdateCardRequest",
        "description": "Change how the caller holds one of their own cards.\n\nEvery field here belongs to the holder's side of the card. The issuer's\nsettings \u2014 design, tier, registry freeze \u2014 are on the organization's copy\nof the card and are not reachable from here."
      },
      "UpdateContactRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "position": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "company": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Company"
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          }
        },
        "type": "object",
        "title": "UpdateContactRequest",
        "description": "Request to update an anonymous contact's details."
      },
      "UpdateDeviceRequest": {
        "properties": {
          "device_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Name",
            "description": "Optional friendly name for the device"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active",
            "description": "Enable/disable push notifications for this device"
          }
        },
        "type": "object",
        "title": "UpdateDeviceRequest",
        "description": "Request to update a device registration."
      },
      "UpdateMembershipTierRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "price_cents": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Price Cents"
          },
          "payment_interval": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "daily",
                  "weekly",
                  "monthly",
                  "yearly",
                  "one_time"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Payment Interval",
            "description": "Payment interval: 'daily', 'weekly', 'monthly', 'yearly', or 'one_time'"
          },
          "entitlements": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Entitlements",
            "description": "Full replacement of the capability keys this tier grants (null leaves them unchanged; {} clears all). The reserved 'member' key is implicit and stripped if supplied."
          }
        },
        "type": "object",
        "title": "UpdateMembershipTierRequest",
        "example": {
          "payment_interval": "daily"
        }
      },
      "UpdateOAuthAppRequest": {
        "properties": {
          "client_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Name",
            "description": "Display name"
          },
          "client_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Description",
            "description": "Description of the app"
          },
          "client_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Uri",
            "description": "Homepage URL of the app"
          },
          "icon_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon File Uuid",
            "description": "UUID of the uploaded icon file"
          },
          "redirect_uris": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array",
                "maxItems": 10,
                "minItems": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Redirect Uris",
            "description": "Allowed redirect URIs"
          },
          "allowed_scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allowed Scopes",
            "description": "Allowed scopes for this client"
          },
          "grant_types": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Grant Types",
            "description": "Allowed grant types (e.g. authorization_code, refresh_token, urn:ietf:params:oauth:grant-type:token-exchange)"
          }
        },
        "type": "object",
        "title": "UpdateOAuthAppRequest",
        "description": "Request to update an existing OAuth2 application."
      },
      "UpdateOnboardingDataRequest": {
        "properties": {
          "first_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "social_links": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ProfileLink"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Social Links"
          },
          "links": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ProfileLink"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Links"
          },
          "avatar_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar File Uuid"
          }
        },
        "type": "object",
        "title": "UpdateOnboardingDataRequest",
        "description": "Update onboarding data (partial updates allowed)."
      },
      "UpdateOnboardingDataResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "data": {
            "$ref": "#/components/schemas/OnboardingData"
          }
        },
        "type": "object",
        "required": [
          "success",
          "data"
        ],
        "title": "UpdateOnboardingDataResponse",
        "description": "Response after updating onboarding data."
      },
      "UpdateOrgCardRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "string",
                    "const": ""
                  },
                  {
                    "type": "string"
                  }
                ],
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Friendly name for the card. Set to empty string to remove."
          },
          "card_model_uuid": {
            "anyOf": [
              {
                "type": "string",
                "const": ""
              },
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Card Model Uuid",
            "description": "UUID of the card model (design template) to assign. Set to empty string to remove."
          },
          "membership_tier_uuid": {
            "anyOf": [
              {
                "type": "string",
                "const": ""
              },
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Membership Tier Uuid",
            "description": "UUID of the membership tier to auto-assign when claimed. Set to empty string to remove."
          },
          "frozen": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Frozen",
            "description": "Whether the card is frozen. Freezing is a state the card is in, not an event: set it true or false and omit to leave it alone."
          }
        },
        "type": "object",
        "title": "UpdateOrgCardRequest",
        "description": "Request to update an organization-issued card's properties."
      },
      "UpdateOrganizationMemberRequest": {
        "properties": {
          "role": {
            "type": "string",
            "title": "Role",
            "description": "Role in the organization, e.g. 'manager', 'member'",
            "examples": [
              "manager"
            ]
          }
        },
        "type": "object",
        "required": [
          "role"
        ],
        "title": "UpdateOrganizationMemberRequest",
        "description": "Change what a staff member may do in the organization.",
        "example": {
          "role": "manager"
        }
      },
      "UpdateOrganizationMemberRoleRequest": {
        "properties": {
          "role": {
            "type": "string",
            "title": "Role",
            "description": "New role, e.g. 'manager' or 'member'"
          }
        },
        "type": "object",
        "required": [
          "role"
        ],
        "title": "UpdateOrganizationMemberRoleRequest"
      },
      "UpdateOrganizationRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "website": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Website"
          },
          "logo_image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Image File Uuid"
          }
        },
        "type": "object",
        "title": "UpdateOrganizationRequest"
      },
      "UpdateProfileDataRequest": {
        "properties": {
          "profile_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Uuid",
            "description": "UUID of the profile to update. If not provided, updates the user's default profile."
          },
          "imageUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Imageurl"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "shortDescription": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Shortdescription"
          },
          "longDescription": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longdescription"
          },
          "callToAction": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CallToAction"
              },
              {
                "type": "null"
              }
            ]
          },
          "currentRole": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CurrentRole"
              },
              {
                "type": "null"
              }
            ]
          },
          "customBackground": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CustomBackground"
              },
              {
                "type": "null"
              }
            ]
          },
          "socialLinks": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ProfileLink"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sociallinks"
          },
          "links": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ProfileLink"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Links"
          },
          "longDescriptionContent": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longdescriptioncontent",
            "description": "Full list replacement when provided; null leaves existing value."
          },
          "stickers": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stickers",
            "description": "Full list replacement when provided; null leaves existing value."
          }
        },
        "type": "object",
        "title": "UpdateProfileDataRequest",
        "description": "Request to partially update profile data. Only provided fields are updated."
      },
      "UpdateRewardTemplateRequest": {
        "properties": {
          "status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "draft",
                  "published",
                  "archived"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Status",
            "description": "Move the reward through its lifecycle. `published` makes a draft live, `draft` returns a published reward to draft (only while it has no redemptions), and `archived` withdraws it. Omit to leave the state alone."
          },
          "activity_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activity Uuid",
            "description": "UUID of the associated activity, if any"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Name of the reward template"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Description of the reward template"
          },
          "points": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Points",
            "description": "Points required to redeem the reward. Point values are not accepted yet: omit the field or send 0, and any other value is refused."
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category",
            "description": "Category of the reward"
          },
          "supply_total": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Supply Total",
            "description": "Total supply of the reward. None means unlimited"
          },
          "required_entitlement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required Entitlement",
            "description": "Entitlement gate ('member' = any member; a tier key = that capability). Empty string clears the requirement."
          },
          "content_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ContentConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Configuration for the reward content"
          }
        },
        "type": "object",
        "title": "UpdateRewardTemplateRequest",
        "example": {
          "status": "draft"
        }
      },
      "UpdateRewardTriggerRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Name of the trigger"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Optional description"
          },
          "trigger_scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array",
                "minItems": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Trigger Scopes",
            "description": "List of scope patterns"
          },
          "reward_metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reward Metadata",
            "description": "Metadata to pass with the reward distribution"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled",
            "description": "Whether the trigger is enabled"
          },
          "deduplication_window_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deduplication Window Seconds",
            "description": "Deduplication window in seconds"
          }
        },
        "type": "object",
        "title": "UpdateRewardTriggerRequest",
        "description": "Request model for updating a reward trigger."
      },
      "UpdateSessionRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Name of the session"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Session description"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "Session start time"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Session end time"
          },
          "max_attendees": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Attendees",
            "description": "Optional capacity override (None = inherit from activity)"
          },
          "is_checkin_open": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Checkin Open",
            "description": "Manual toggle for check-in"
          },
          "requires_ticket": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requires Ticket",
            "description": "Require a ticket for this session (None = inherit event default)"
          },
          "required_entitlement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required Entitlement",
            "description": "Entitlement gate for this session (None = inherit event's)"
          },
          "ticket_template_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ticket Template Uuid",
            "description": "Per-session ticket override (None = inherit event default)"
          }
        },
        "type": "object",
        "title": "UpdateSessionRequest"
      },
      "UpdateUserProfileRequest": {
        "properties": {
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name",
            "description": "User's first name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name",
            "description": "User's last name"
          },
          "phone_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number",
            "description": "Phone number"
          },
          "avatar_image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Image File Uuid",
            "description": "UUID of the avatar image file"
          }
        },
        "type": "object",
        "title": "UpdateUserProfileRequest"
      },
      "UpdateWebhookRequest": {
        "properties": {
          "url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2083,
                "minLength": 1,
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url",
            "description": "Webhook endpoint URL"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Human-readable description"
          },
          "event_types": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Types",
            "description": "List of event types to subscribe to"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled",
            "description": "Whether webhook is enabled"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata",
            "description": "Custom metadata"
          }
        },
        "type": "object",
        "title": "UpdateWebhookRequest",
        "description": "Request model for updating a webhook."
      },
      "UploadPartInfo": {
        "properties": {
          "part_number": {
            "type": "integer",
            "title": "Part Number"
          },
          "upload_url": {
            "type": "string",
            "title": "Upload Url"
          },
          "start_byte": {
            "type": "integer",
            "title": "Start Byte"
          },
          "end_byte": {
            "type": "integer",
            "title": "End Byte"
          }
        },
        "type": "object",
        "required": [
          "part_number",
          "upload_url",
          "start_byte",
          "end_byte"
        ],
        "title": "UploadPartInfo"
      },
      "UploadedFileResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "avatar-johndoe-abc123"
            ]
          },
          "file_name": {
            "type": "string",
            "title": "File Name",
            "examples": [
              "avatar.png"
            ]
          },
          "content_type": {
            "type": "string",
            "title": "Content Type",
            "examples": [
              "image/png"
            ]
          },
          "size_in_bytes": {
            "type": "integer",
            "title": "Size In Bytes",
            "examples": [
              102400
            ]
          },
          "storage_id": {
            "type": "string",
            "title": "Storage Id",
            "examples": [
              "s3"
            ]
          },
          "storage_key": {
            "type": "string",
            "title": "Storage Key",
            "examples": [
              "uploads/avatars/abc123.png"
            ]
          },
          "storage_bucket": {
            "type": "string",
            "title": "Storage Bucket",
            "examples": [
              "davi-uploads"
            ]
          },
          "file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Url",
            "examples": [
              "https://cdn.example.com/uploads/avatars/abc123.png"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "file_name",
          "content_type",
          "size_in_bytes",
          "storage_id",
          "storage_key",
          "storage_bucket",
          "created_at"
        ],
        "title": "UploadedFileResponse",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "slug": "avatar-johndoe-abc123",
          "file_name": "avatar.png",
          "content_type": "image/png",
          "size_in_bytes": 102400,
          "storage_id": "s3",
          "storage_key": "uploads/avatars/abc123.png",
          "storage_bucket": "davi-uploads",
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "UserAssetResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "asset_type": {
            "type": "string",
            "title": "Asset Type",
            "examples": [
              "background"
            ]
          },
          "source": {
            "type": "string",
            "title": "Source",
            "examples": [
              "reward"
            ]
          },
          "uploaded_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Uploaded File Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "external_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Url",
            "examples": [
              "https://media.giphy.com/media/xyz/giphy.gif"
            ]
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url",
            "description": "Resolved displayable URL (platform file resolved at read time, or the external URL). Null for assets with no media (e.g. GLBs).",
            "examples": [
              "https://cdn.example.com/files/aurora.png"
            ]
          },
          "transaction_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Id",
            "examples": [
              "tx_abc123xyz"
            ]
          },
          "metadata": {
            "additionalProperties": true,
            "type": "object",
            "title": "Metadata"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "revoked_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked At"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "asset_type",
          "source",
          "created_at"
        ],
        "title": "UserAssetResponse",
        "description": "An installed asset in the user's customization inventory.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "asset_type": "background",
          "source": "reward"
        }
      },
      "UserAssetType": {
        "type": "string",
        "enum": [
          "character_part",
          "avatar_frame",
          "profile_picture",
          "sticker",
          "background"
        ],
        "title": "UserAssetType",
        "description": "The customization surface an installed asset targets.\n\nFile-shaped by design so a new axis costs an enum value, not a schema\nchange. `character_part` is an extracted `.daviasset` (its slot lives in\n`asset_metadata`); the others are 2D."
      },
      "UserInfoResponse": {
        "properties": {
          "sub": {
            "type": "string",
            "title": "Sub"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "email_verified": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Verified"
          }
        },
        "type": "object",
        "required": [
          "sub"
        ],
        "title": "UserInfoResponse",
        "description": "OIDC UserInfo response."
      },
      "UserMembershipHistoryResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "tier_uuid": {
            "type": "string",
            "title": "Tier Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "custom_tier_price_cents": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Price Cents",
            "examples": [
              4999
            ]
          },
          "custom_tier_payment_interval": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "daily",
                  "weekly",
                  "monthly",
                  "yearly",
                  "one_time"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Payment Interval",
            "examples": [
              "monthly"
            ]
          },
          "valid_until": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid Until",
            "examples": [
              "2025-01-15T10:30:00Z"
            ]
          },
          "joined_at": {
            "type": "string",
            "format": "date-time",
            "title": "Joined At",
            "examples": [
              "2024-03-01T12:00:00Z"
            ]
          },
          "deleted_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At",
            "examples": [
              "2024-12-31T23:59:59Z"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "expired",
              "cancelled"
            ],
            "title": "Status",
            "examples": [
              "cancelled"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          },
          "tier_name": {
            "type": "string",
            "title": "Tier Name",
            "examples": [
              "Premium"
            ]
          },
          "tier_slug": {
            "type": "string",
            "title": "Tier Slug",
            "examples": [
              "premium"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "user_uuid",
          "organization_uuid",
          "tier_uuid",
          "joined_at",
          "status",
          "created_at",
          "tier_name",
          "tier_slug"
        ],
        "title": "UserMembershipHistoryResponse",
        "description": "User membership history including soft-deleted records.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "custom_tier_payment_interval": "daily",
          "joined_at": "2024-03-01T12:00:00Z",
          "status": "cancelled",
          "created_at": "2024-01-15T10:30:00Z",
          "tier_name": "Premium",
          "tier_slug": "premium"
        }
      },
      "UserMembershipResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "tier_uuid": {
            "type": "string",
            "title": "Tier Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "custom_tier_price_cents": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Price Cents",
            "examples": [
              4999
            ]
          },
          "custom_tier_payment_interval": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "daily",
                  "weekly",
                  "monthly",
                  "yearly",
                  "one_time"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Payment Interval",
            "examples": [
              "monthly"
            ]
          },
          "valid_until": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid Until",
            "examples": [
              "2025-01-15T10:30:00Z"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "user_uuid",
          "organization_uuid",
          "tier_uuid",
          "created_at"
        ],
        "title": "UserMembershipResponse",
        "examples": {
          "active": {
            "summary": "Active membership with no expiration",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": null,
              "created_at": "2024-01-15T10:30:00Z",
              "valid_until": null,
              "custom_tier_price_cents": null
            }
          },
          "expiring_soon": {
            "summary": "Membership expiring within 7 days",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "daily",
              "created_at": "2024-01-15T10:30:00Z",
              "valid_until": "2024-01-20T10:30:00Z"
            }
          },
          "expired": {
            "summary": "Expired membership",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "daily",
              "created_at": "2024-01-15T10:30:00Z",
              "valid_until": "2023-12-15T10:30:00Z"
            }
          },
          "custom_pricing": {
            "summary": "Membership with custom pricing override",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "monthly",
              "created_at": "2024-01-15T10:30:00Z",
              "custom_tier_price_cents": 4999
            }
          }
        }
      },
      "UserMembershipWithOrgResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "tier_uuid": {
            "type": "string",
            "title": "Tier Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "custom_tier_price_cents": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Price Cents",
            "examples": [
              4999
            ]
          },
          "custom_tier_payment_interval": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "daily",
                  "weekly",
                  "monthly",
                  "yearly",
                  "one_time"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Payment Interval",
            "examples": [
              "monthly"
            ]
          },
          "valid_until": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid Until",
            "examples": [
              "2025-01-15T10:30:00Z"
            ]
          },
          "joined_at": {
            "type": "string",
            "format": "date-time",
            "title": "Joined At",
            "examples": [
              "2024-03-01T12:00:00Z"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          },
          "organization_name": {
            "type": "string",
            "title": "Organization Name",
            "examples": [
              "Acme Corp"
            ]
          },
          "organization_slug": {
            "type": "string",
            "title": "Organization Slug",
            "examples": [
              "acme-corp"
            ]
          },
          "tier_name": {
            "type": "string",
            "title": "Tier Name",
            "examples": [
              "Premium"
            ]
          },
          "tier_slug": {
            "type": "string",
            "title": "Tier Slug",
            "examples": [
              "premium"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "user_uuid",
          "organization_uuid",
          "tier_uuid",
          "joined_at",
          "created_at",
          "organization_name",
          "organization_slug",
          "tier_name",
          "tier_slug"
        ],
        "title": "UserMembershipWithOrgResponse",
        "description": "User membership with organization and tier details for user-side view.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "custom_tier_payment_interval": "daily",
          "joined_at": "2024-03-01T12:00:00Z",
          "created_at": "2024-01-15T10:30:00Z",
          "organization_name": "Acme Corp",
          "organization_slug": "acme-corp",
          "tier_name": "Premium",
          "tier_slug": "premium"
        }
      },
      "UserMembershipWithUserResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "organization_uuid": {
            "type": "string",
            "title": "Organization Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "tier_uuid": {
            "type": "string",
            "title": "Tier Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "custom_tier_price_cents": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Price Cents",
            "examples": [
              4999
            ]
          },
          "custom_tier_payment_interval": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "daily",
                  "weekly",
                  "monthly",
                  "yearly",
                  "one_time"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Tier Payment Interval",
            "examples": [
              "monthly"
            ]
          },
          "valid_until": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid Until",
            "examples": [
              "2025-01-15T10:30:00Z"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          },
          "user": {
            "$ref": "#/components/schemas/MemberUserSummary"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "user_uuid",
          "organization_uuid",
          "tier_uuid",
          "created_at",
          "user"
        ],
        "title": "UserMembershipWithUserResponse",
        "description": "Membership response with embedded user details.",
        "examples": {
          "active": {
            "summary": "Active membership with no expiration",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": null,
              "created_at": "2024-01-15T10:30:00Z",
              "valid_until": null,
              "custom_tier_price_cents": null
            }
          },
          "expiring_soon": {
            "summary": "Membership expiring within 7 days",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "daily",
              "created_at": "2024-01-15T10:30:00Z",
              "valid_until": "2024-01-20T10:30:00Z"
            }
          },
          "expired": {
            "summary": "Expired membership",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "daily",
              "created_at": "2024-01-15T10:30:00Z",
              "valid_until": "2023-12-15T10:30:00Z"
            }
          },
          "custom_pricing": {
            "summary": "Membership with custom pricing override",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "organization_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "tier_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "custom_tier_payment_interval": "monthly",
              "created_at": "2024-01-15T10:30:00Z",
              "custom_tier_price_cents": 4999
            }
          }
        }
      },
      "UserRegisteredActivityResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "examples": [
              "annual-conference-2024"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "examples": [
              "Annual Conference 2024"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "examples": [
              "Join us for our annual tech conference"
            ]
          },
          "organization": {
            "$ref": "#/components/schemas/OrganizationSummary"
          },
          "image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image File Url",
            "examples": [
              "https://cdn.example.com/events/conference.jpg"
            ]
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "examples": [
              "2024-09-15T09:00:00Z"
            ]
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "examples": [
              "2024-09-15T18:00:00Z"
            ]
          },
          "first_registered_at": {
            "type": "string",
            "format": "date-time",
            "title": "First Registered At",
            "examples": [
              "2024-09-10T15:30:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "slug",
          "name",
          "organization",
          "first_registered_at"
        ],
        "title": "UserRegisteredActivityResponse",
        "description": "Activity that a user has registered for or checked into.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "slug": "annual-conference-2024",
          "name": "Annual Conference 2024",
          "first_registered_at": "2024-09-10T15:30:00Z"
        }
      },
      "UserResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "username": {
            "type": "string",
            "title": "Username",
            "examples": [
              "johndoe"
            ]
          },
          "first_name": {
            "type": "string",
            "title": "First Name",
            "examples": [
              "John"
            ]
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name",
            "examples": [
              "Doe"
            ]
          },
          "account_type": {
            "type": "string",
            "enum": [
              "personal",
              "business"
            ],
            "title": "Account Type",
            "examples": [
              "personal"
            ]
          },
          "avatar_image_file_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Image File Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "avatar_image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Image File Url",
            "examples": [
              "https://cdn.example.com/avatars/johndoe.png"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "username",
          "first_name",
          "account_type",
          "created_at"
        ],
        "title": "UserResponse",
        "description": "A user as anyone may see them.\n\nDeliberately excludes `phone_number`: that is account contact data, not\nsomething a user chose to publish. A user who wants to be reachable by\nphone puts it in their profile's links, which they control. The account\nnumber stays on `CurrentUserResponse`, which only the user themselves can\nread.",
        "examples": {
          "new_user": {
            "summary": "Newly registered user with incomplete profile",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "username": "johndoe",
              "first_name": "John",
              "account_type": "personal",
              "created_at": "2024-01-15T10:30:00Z",
              "last_name": null,
              "avatar_image_file_uuid": null,
              "avatar_image_file_url": null
            }
          },
          "complete_profile": {
            "summary": "User with complete profile and avatar",
            "value": {
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "username": "johndoe",
              "first_name": "John",
              "account_type": "personal",
              "created_at": "2024-01-15T10:30:00Z"
            }
          }
        }
      },
      "UserRewardCacheResponse": {
        "properties": {
          "transaction_id": {
            "type": "string",
            "title": "Transaction Id",
            "examples": [
              "tx_abc123xyz"
            ]
          },
          "wallet_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wallet Address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "cached_content": {
            "$ref": "#/components/schemas/IssuedRewardContent"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash",
            "examples": [
              "sha256:abc123..."
            ]
          },
          "cached_at": {
            "type": "string",
            "format": "date-time",
            "title": "Cached At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "cache_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cache Expires At",
            "examples": [
              "2024-01-16T10:30:00Z"
            ]
          },
          "cache_hit_count": {
            "type": "integer",
            "title": "Cache Hit Count",
            "examples": [
              5
            ]
          },
          "last_accessed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Accessed At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          },
          "source_type": {
            "type": "string",
            "title": "Source Type",
            "examples": [
              "platform"
            ]
          },
          "source_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Url",
            "examples": [
              "https://cdn.example.com/rewards/manifest.json"
            ]
          },
          "fetch_latency_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fetch Latency Ms",
            "examples": [
              150
            ]
          }
        },
        "type": "object",
        "required": [
          "transaction_id",
          "cached_content",
          "content_hash",
          "cached_at",
          "cache_hit_count",
          "source_type"
        ],
        "title": "UserRewardCacheResponse",
        "example": {
          "transaction_id": "tx_abc123xyz",
          "content_hash": "sha256:abc123...",
          "cached_at": "2024-01-15T10:30:00Z",
          "cache_hit_count": 5,
          "source_type": "platform"
        }
      },
      "UserRoleResponse": {
        "properties": {
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          }
        },
        "type": "object",
        "title": "UserRoleResponse",
        "description": "Response for user role lookup."
      },
      "UserSearchSuggestion": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username",
            "examples": [
              "johndoe"
            ]
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email",
            "examples": [
              "john@example.com"
            ]
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name",
            "examples": [
              "John"
            ]
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name",
            "examples": [
              "Doe"
            ]
          },
          "avatar_image_file_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Image File Url",
            "examples": [
              "https://cdn.example.com/avatars/johndoe.png"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid"
        ],
        "title": "UserSearchSuggestion",
        "description": "Lightweight user data for search suggestions/autocomplete.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef"
        }
      },
      "UserWalletResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "user_uuid": {
            "type": "string",
            "title": "User Uuid",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "wallet_address": {
            "type": "string",
            "title": "Wallet Address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "public_key_pem": {
            "type": "string",
            "title": "Public Key Pem",
            "examples": [
              "-----BEGIN PUBLIC KEY-----\nMIIBIjANBg..."
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "examples": [
              "2024-01-15T10:30:00Z"
            ]
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "examples": [
              "2024-06-20T14:45:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "user_uuid",
          "wallet_address",
          "public_key_pem",
          "created_at"
        ],
        "title": "UserWalletResponse",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "user_uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
          "public_key_pem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBg...",
          "created_at": "2024-01-15T10:30:00Z"
        }
      },
      "UserWalletWithContextResponse": {
        "properties": {
          "wallet_uuid": {
            "type": "string",
            "title": "Wallet Uuid",
            "description": "Wallet UUID",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "wallet_address": {
            "type": "string",
            "title": "Wallet Address",
            "description": "Wallet address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "balance": {
            "type": "number",
            "title": "Balance",
            "description": "Current wallet balance",
            "examples": [
              500.0
            ]
          },
          "is_primary": {
            "type": "boolean",
            "title": "Is Primary",
            "description": "Whether this is the user's primary wallet",
            "examples": [
              true
            ]
          },
          "organization": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WalletOrganizationInfo"
              },
              {
                "type": "null"
              }
            ],
            "description": "Organization this wallet belongs to, if any"
          },
          "membership": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WalletMembershipInfo"
              },
              {
                "type": "null"
              }
            ],
            "description": "Membership associated with this wallet, if any"
          }
        },
        "type": "object",
        "required": [
          "wallet_uuid",
          "wallet_address",
          "balance",
          "is_primary"
        ],
        "title": "UserWalletWithContextResponse",
        "description": "User wallet with balance and organization/membership context.",
        "examples": {
          "primary_wallet": {
            "summary": "User's primary wallet with balance",
            "value": {
              "wallet_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "balance": 500.0,
              "is_primary": true
            }
          },
          "secondary_wallet": {
            "summary": "User's secondary wallet with zero balance",
            "value": {
              "wallet_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "balance": 0.0,
              "is_primary": false
            }
          },
          "org_context": {
            "summary": "Wallet with organization membership context",
            "value": {
              "wallet_uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
              "balance": 1250.5,
              "is_primary": true
            }
          }
        }
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "ValidationErrorResponse": {
        "properties": {
          "errors": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Errors",
            "description": "Map of field names to error messages. Use '_root' for form-level errors.",
            "example": {
              "_root": "An error occurred"
            }
          },
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Human-readable error summary"
          },
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code",
            "description": "Machine-readable error code"
          }
        },
        "type": "object",
        "required": [
          "errors",
          "message"
        ],
        "title": "ValidationErrorResponse",
        "description": "422 Unprocessable Entity - Pydantic validation errors.",
        "example": {
          "code": "validation_error",
          "errors": {
            "email": "Invalid email format",
            "password": "Too short"
          },
          "message": "Validation failed"
        }
      },
      "VerifyClaimRequest": {
        "properties": {
          "username": {
            "type": "string",
            "title": "Username",
            "description": "Username of the profile to claim"
          },
          "claim_code": {
            "type": "string",
            "title": "Claim Code",
            "description": "Secret claim code"
          }
        },
        "type": "object",
        "required": [
          "username",
          "claim_code"
        ],
        "title": "VerifyClaimRequest",
        "description": "Request to verify a claim code (public, no auth required)."
      },
      "VerifyClaimResponse": {
        "properties": {
          "valid": {
            "type": "boolean",
            "title": "Valid",
            "examples": [
              true
            ]
          },
          "username": {
            "type": "string",
            "title": "Username",
            "examples": [
              "johndoe"
            ]
          },
          "registration_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Registration Code",
            "examples": [
              "reg_abc123xyz"
            ]
          },
          "profile_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile Name",
            "examples": [
              "John Doe"
            ]
          }
        },
        "type": "object",
        "required": [
          "valid",
          "username"
        ],
        "title": "VerifyClaimResponse",
        "description": "Response for claim code verification.",
        "example": {
          "valid": true,
          "username": "johndoe"
        }
      },
      "WalletBalanceResponse": {
        "properties": {
          "balance": {
            "type": "number",
            "title": "Balance",
            "description": "Current wallet balance",
            "examples": [
              1000.0
            ]
          }
        },
        "type": "object",
        "required": [
          "balance"
        ],
        "title": "WalletBalanceResponse",
        "example": {
          "balance": 1000.0
        }
      },
      "WalletMembershipInfo": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "description": "UserMembership UUID",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "tier_name": {
            "type": "string",
            "title": "Tier Name",
            "description": "Membership tier name",
            "examples": [
              "Premium"
            ]
          },
          "joined_at": {
            "type": "string",
            "format": "date-time",
            "title": "Joined At",
            "description": "When user joined this membership",
            "examples": [
              "2024-03-01T12:00:00Z"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "tier_name",
          "joined_at"
        ],
        "title": "WalletMembershipInfo",
        "description": "Membership context for a wallet.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "tier_name": "Premium",
          "joined_at": "2024-03-01T12:00:00Z"
        }
      },
      "WalletOrganizationInfo": {
        "properties": {
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "description": "Organization UUID",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Organization name",
            "examples": [
              "Acme Corp"
            ]
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "description": "Organization slug",
            "examples": [
              "acme-corp"
            ]
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "name",
          "slug"
        ],
        "title": "WalletOrganizationInfo",
        "description": "Organization context for a wallet.",
        "example": {
          "uuid": "01234567-89ab-cdef-0123-456789abcdef",
          "name": "Acme Corp",
          "slug": "acme-corp"
        }
      },
      "WalletResponse": {
        "properties": {
          "address": {
            "type": "string",
            "title": "Address",
            "description": "Wallet address",
            "examples": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "uuid": {
            "type": "string",
            "title": "Uuid",
            "description": "Wallet UUID",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "user_uuid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "User Uuid",
            "description": "Owner user UUID (None for org treasury wallets)",
            "examples": [
              "01234567-89ab-cdef-0123-456789abcdef"
            ]
          },
          "public_key_pem": {
            "type": "string",
            "title": "Public Key Pem",
            "description": "Public key in PEM format",
            "examples": [
              "-----BEGIN PUBLIC KEY-----\nMIIBIjANBg..."
            ]
          }
        },
        "type": "object",
        "required": [
          "address",
          "uuid",
          "public_key_pem"
        ],
        "title": "WalletResponse",
        "examples": {
          "default": {
            "summary": "Standard wallet response",
            "value": {
              "address": "0x1234567890abcdef1234567890abcdef12345678",
              "uuid": "01234567-89ab-cdef-0123-456789abcdef",
              "public_key_pem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBg..."
            }
          }
        }
      },
      "WebhookDeliveryResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "title": "Uuid"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "webhook_uuid": {
            "type": "string",
            "format": "uuid",
            "title": "Webhook Uuid"
          },
          "event_type": {
            "type": "string",
            "title": "Event Type"
          },
          "attempt_number": {
            "type": "integer",
            "title": "Attempt Number"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "request_payload": {
            "additionalProperties": true,
            "type": "object",
            "title": "Request Payload"
          },
          "response_status_code": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Response Status Code"
          },
          "response_body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Response Body"
          },
          "started_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "duration_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Ms"
          },
          "error_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Message"
          },
          "next_retry_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Retry At"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "created_at",
          "webhook_uuid",
          "event_type",
          "attempt_number",
          "status",
          "request_payload",
          "response_status_code",
          "response_body",
          "started_at",
          "completed_at",
          "duration_ms",
          "error_message",
          "next_retry_at"
        ],
        "title": "WebhookDeliveryResponse",
        "description": "Response model for webhook delivery data."
      },
      "WebhookResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "title": "Uuid"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "organization_uuid": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Organization Uuid"
          },
          "user_uuid": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "User Uuid"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "event_types": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Event Types"
          },
          "metadata": {
            "additionalProperties": true,
            "type": "object",
            "title": "Metadata"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "created_at",
          "updated_at",
          "organization_uuid",
          "user_uuid",
          "url",
          "description",
          "enabled",
          "event_types",
          "metadata"
        ],
        "title": "WebhookResponse",
        "description": "Response model for webhook data."
      },
      "WebhookWithSecretResponse": {
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "title": "Uuid"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "organization_uuid": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Organization Uuid"
          },
          "user_uuid": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "User Uuid"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "event_types": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Event Types"
          },
          "metadata": {
            "additionalProperties": true,
            "type": "object",
            "title": "Metadata"
          },
          "secret": {
            "type": "string",
            "title": "Secret",
            "description": "Webhook secret (show once)"
          }
        },
        "type": "object",
        "required": [
          "uuid",
          "created_at",
          "updated_at",
          "organization_uuid",
          "user_uuid",
          "url",
          "description",
          "enabled",
          "event_types",
          "metadata",
          "secret"
        ],
        "title": "WebhookWithSecretResponse",
        "description": "Response that includes the plain text secret (only on creation/rotation)."
      },
      "data_models__common__MessageResponse": {
        "properties": {
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Success or status message"
          }
        },
        "type": "object",
        "required": [
          "message"
        ],
        "title": "MessageResponse",
        "description": "Generic response for operations that return a simple success message"
      },
      "lib__iam__schemas__responses__MessageResponse": {
        "properties": {
          "message": {
            "type": "string",
            "title": "Message"
          }
        },
        "type": "object",
        "required": [
          "message"
        ],
        "title": "MessageResponse",
        "description": "Generic message response."
      }
    }
  },
  "tags": [
    {
      "name": "oauth2",
      "description": "Authorization server: tokens, discovery, scope metadata."
    },
    {
      "name": "users",
      "description": "User accounts and profiles."
    },
    {
      "name": "organizations",
      "description": "Organizations, their staff and settings."
    },
    {
      "name": "memberships",
      "description": "Membership tiers, joining, renewal and entitlements."
    },
    {
      "name": "activities",
      "description": "Activities, sessions and attendance."
    },
    {
      "name": "rewards",
      "description": "Reward templates, triggers, issuance and redemption."
    },
    {
      "name": "cards",
      "description": "Physical and virtual cards."
    },
    {
      "name": "contacts",
      "description": "Saved contacts and the encounters behind them."
    },
    {
      "name": "assets",
      "description": "Profile assets: what a user has earned and equipped."
    }
  ]
}
