{
  "openapi": "3.0.3",
  "info": {
    "title": "Openfort API",
    "version": "1.0.0",
    "description": "The Openfort REST API lets you manage users, authentication, wallets, transactions, and gas sponsorship.",
    "termsOfService": "https://www.openfort.io",
    "contact": {
      "name": "Openfort Team",
      "email": "founders@openfort.xyz",
      "url": "https://www.openfort.io"
    }
  },
  "servers": [
    {
      "url": "https://api.openfort.io",
      "description": "Openfort API Server"
    }
  ],
  "tags": [
    {
      "name": "Users",
      "description": "The end users of your project: create and look up user records and the auth accounts linked to them."
    },
    {
      "name": "Sign In and Sign Up",
      "description": "Create user sessions: email and password, email OTP, phone, social providers, or anonymously — plus sign out."
    },
    {
      "name": "Sign-In with Ethereum",
      "description": "Wallet-based authentication (SIWE): nonce and verify to sign in, and link or unlink additional wallets."
    },
    {
      "name": "Email OTP",
      "description": "One-time codes over email: send and check codes, verify an address, or reset a password."
    },
    {
      "name": "Phone",
      "description": "One-time codes over SMS: send and verify codes, and phone-based password resets."
    },
    {
      "name": "Password and Email",
      "description": "Manage credentials: change or reset passwords and change or verify email addresses."
    },
    {
      "name": "Sessions and Tokens",
      "description": "Read the current auth session, list a user's active sessions, and revoke one, all, or every other session — plus fetch and refresh access tokens."
    },
    {
      "name": "Linked Accounts",
      "description": "The auth identities linked to a user: list and inspect, link social, unlink."
    },
    {
      "name": "Accounts",
      "description": "Blockchain accounts (wallets) attached to your users: create, recover, and manage EVM and Solana accounts."
    },
    {
      "name": "Sessions",
      "description": "Session keys: scoped, time-boxed signing permissions granted to an account."
    },
    {
      "name": "Backend Wallets",
      "description": "Server-side wallets your backend controls, for automated signing and treasury operations."
    },
    {
      "name": "Transactions",
      "description": "Create, estimate, sign, and track transactions sent from a wallet, with optional fee sponsorship."
    },
    {
      "name": "Contracts",
      "description": "Register smart contracts so transactions and policies can reference them by id."
    },
    {
      "name": "Solana Transactions",
      "description": "Look up the status of a sponsored Solana transaction by its internal Openfort id or the externalId you attached when signing it, scoped to your project."
    },
    {
      "name": "Fee Sponsorship",
      "description": "Gas sponsorship configuration: pay gas for your users or charge it in ERC-20 / SPL tokens."
    },
    {
      "name": "Policies",
      "description": "Criteria-based rules that decide which operations an account may perform or have sponsored."
    }
  ],
  "paths": {
    "/v1/solana/transactions": {
      "get": {
        "operationId": "getSolanaTransactionStatus",
        "responses": {
          "200": {
            "description": "Solana transaction found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SolanaTransactionStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Exactly one of id, externalId, or bundleId must be provided."
          },
          "404": {
            "description": "Solana transaction not found."
          }
        },
        "description": "Get the status of a Solana transaction by its internal id, the caller-supplied\nexternalId, or the Jito bundleId (for `signAndSendBundle` transactions).\n\nExactly one of `id`, `externalId`, or `bundleId` must be provided. Lookups are\nscoped to the authenticated project. Note: a bundle resolves only by `bundleId`,\n`externalId`, or its first child signature (`id`) — not by a non-first child.",
        "summary": "Get Solana transaction status",
        "tags": [
          "Solana Transactions"
        ],
        "security": [
          {
            "pk": []
          }
        ],
        "parameters": [
          {
            "description": "Internal Solana transaction ID (starts with `sol_`).",
            "in": "query",
            "name": "id",
            "required": false,
            "schema": {
              "type": "string",
              "example": "sol_f2b8b5f0-1f5c-4a7e-9b3a-1d2e3f4a5b6c"
            },
            "example": "sol_f2b8b5f0-1f5c-4a7e-9b3a-1d2e3f4a5b6c"
          },
          {
            "in": "query",
            "name": "externalId",
            "required": false,
            "schema": {
              "type": "string",
              "example": "my-external-id"
            }
          },
          {
            "description": "Jito bundle UUID returned by `signAndSendBundle`.",
            "in": "query",
            "name": "bundleId",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/v1/sessions": {
      "get": {
        "operationId": "GetPlayerSessions",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionListResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "list",
                      "url": "/v1/sessions",
                      "start": 0,
                      "end": 1,
                      "total": 1,
                      "data": [
                        {
                          "id": "ses_...",
                          "createdAt": 1689869074,
                          "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
                          "updatedAt": 1689869074,
                          "account": {
                            "id": "acc_..."
                          },
                          "isActive": true,
                          "validAfter": "1650000000",
                          "validUntil": "1700000000",
                          "whitelist": [],
                          "limit": 100,
                          "nextAction": {
                            "type": "sign_with_wallet",
                            "payload": {
                              "signableHash": "0x25d3...005c"
                            }
                          },
                          "transactionIntents": [
                            {
                              "id": "tin_..."
                            }
                          ],
                          "object": "session"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "description": "Returns a list of Sessions.\n\nReturns the latest 10 transaction intents for each session.",
        "summary": "List session keys of a player",
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "sk": [
              "sessions:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the maximum number of records to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 1,
              "example": 10
            }
          },
          {
            "description": "Specifies the offset for the first records to return.",
            "in": "query",
            "name": "skip",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 0,
              "example": 0
            }
          },
          {
            "description": "Specifies the order in which to sort the results.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Prisma.SortOrder",
              "example": "desc"
            }
          },
          {
            "description": "The player ID (starts with pla_)",
            "in": "query",
            "name": "player",
            "required": true,
            "schema": {
              "type": "string",
              "example": "pla_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "pla_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          {
            "description": "Specifies the fields to expand in the response.",
            "in": "query",
            "name": "expand",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/SessionResponseExpandable"
              },
              "example": "transactionIntents"
            }
          }
        ]
      },
      "post": {
        "operationId": "CreateSession",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "ses_...",
                      "createdAt": 1689869074,
                      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
                      "updatedAt": 1689869074,
                      "account": {
                        "id": "acc_..."
                      },
                      "isActive": true,
                      "validAfter": "1650000000",
                      "validUntil": "1700000000",
                      "whitelist": [],
                      "limit": 100,
                      "nextAction": {
                        "type": "sign_with_wallet",
                        "payload": {
                          "signableHash": "0x25d3...005c"
                        }
                      },
                      "transactionIntents": [
                        {
                          "id": "tin_..."
                        }
                      ],
                      "object": "session"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          },
          "409": {
            "description": "Error response."
          }
        },
        "description": "Creates a Session.",
        "summary": "Create a session key",
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "sk": [
              "sessions:write"
            ]
          },
          {
            "pk_third_party": []
          },
          {
            "pk_access_token": []
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "description": "Project ID to act on behalf of (for ecosystem operations).",
            "in": "header",
            "name": "X-Behalf-Of-Project",
            "required": false,
            "schema": {
              "type": "string",
              "example": "pk_test_0f3c9d2a-5b71-4e8c-9a6d-2f4b8c1e7d90"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSessionRequest"
              }
            }
          }
        }
      }
    },
    "/v1/sessions/revoke": {
      "post": {
        "operationId": "RevokeSession",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "ses_...",
                      "createdAt": 1689869074,
                      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
                      "updatedAt": 1689869074,
                      "account": {
                        "id": "acc_..."
                      },
                      "isActive": true,
                      "validAfter": "1650000000",
                      "validUntil": "1700000000",
                      "whitelist": [],
                      "limit": 100,
                      "nextAction": {
                        "type": "sign_with_wallet",
                        "payload": {
                          "signableHash": "0x25d3...005c"
                        }
                      },
                      "transactionIntents": [
                        {
                          "id": "tin_..."
                        }
                      ],
                      "object": "session"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          },
          "409": {
            "description": "Error response."
          }
        },
        "summary": "Revoke the session session key",
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "sk": [
              "sessions:write"
            ]
          },
          {
            "pk_third_party": []
          },
          {
            "pk_access_token": []
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "description": "Project ID to act on behalf of (for ecosystem operations).",
            "in": "header",
            "name": "X-Behalf-Of-Project",
            "required": false,
            "schema": {
              "type": "string",
              "example": "pk_test_0f3c9d2a-5b71-4e8c-9a6d-2f4b8c1e7d90"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RevokeSessionRequest"
              }
            }
          }
        }
      }
    },
    "/v1/sessions/{id}/signature": {
      "post": {
        "operationId": "SignatureSession",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "ses_...",
                      "createdAt": 1689869074,
                      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
                      "updatedAt": 1689869074,
                      "account": {
                        "id": "acc_..."
                      },
                      "isActive": true,
                      "validAfter": "1650000000",
                      "validUntil": "1700000000",
                      "whitelist": [],
                      "limit": 100,
                      "nextAction": {
                        "type": "sign_with_wallet",
                        "payload": {
                          "signableHash": "0x25d3...005c"
                        }
                      },
                      "transactionIntents": [
                        {
                          "id": "tin_..."
                        }
                      ],
                      "object": "session"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          },
          "409": {
            "description": "Error response."
          }
        },
        "summary": "Send signed userOperationHash to create session",
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "pk": []
          },
          {
            "sk": [
              "sessions:write"
            ]
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique session ID (starts with ses_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ses_4194ad24-c818-4e5c-b003-9cc2aa7df53b"
            },
            "example": "ses_4194ad24-c818-4e5c-b003-9cc2aa7df53b"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignatureRequest"
              }
            }
          }
        }
      }
    },
    "/v1/sessions/{id}": {
      "get": {
        "operationId": "GetSession",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "ses_...",
                      "createdAt": 1689869074,
                      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
                      "updatedAt": 1689869074,
                      "account": {
                        "id": "acc_..."
                      },
                      "isActive": true,
                      "validAfter": "1650000000",
                      "validUntil": "1700000000",
                      "whitelist": [],
                      "limit": 100,
                      "nextAction": {
                        "type": "sign_with_wallet",
                        "payload": {
                          "signableHash": "0x25d3...005c"
                        }
                      },
                      "transactionIntents": [
                        {
                          "id": "tin_..."
                        }
                      ],
                      "object": "session"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Session not found"
          }
        },
        "description": "Retrieves the details of a Session that has previously been created.\n\nReturns the latest 10 transaction intents that used this session.",
        "summary": "Returns a player session by session id",
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "sk": [
              "sessions:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique session ID (starts with ses_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ses_4194ad24-c818-4e5c-b003-9cc2aa7df53b"
            },
            "example": "ses_4194ad24-c818-4e5c-b003-9cc2aa7df53b"
          },
          {
            "description": "Specifies the fields to expand.",
            "in": "query",
            "name": "expand",
            "required": false,
            "schema": {
              "default": [],
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/SessionResponseExpandable"
              },
              "example": [
                "transactionIntents"
              ]
            },
            "example": [
              "transactionIntents"
            ]
          }
        ]
      }
    },
    "/v1/contracts": {
      "get": {
        "operationId": "GetContracts",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractListResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "list",
                      "url": "/v1/contracts",
                      "start": 0,
                      "end": 1,
                      "total": 1,
                      "data": [
                        {
                          "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
                          "createdAt": 1689869074,
                          "object": "contract",
                          "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
                          "chainId": 80002,
                          "deleted": false,
                          "name": "MyContract",
                          "publicVerification": true,
                          "abi": [
                            {
                              "constant": false,
                              "inputs": [
                                {
                                  "name": "addr",
                                  "type": "address"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "description": "List of all contracts per project.\nBy default, a maximum of ten contracts are shown.",
        "summary": "List contracts",
        "tags": [
          "Contracts"
        ],
        "security": [
          {
            "sk": [
              "contracts:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the maximum number of records to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 1,
              "example": 10
            }
          },
          {
            "description": "Specifies the offset for the first records to return.",
            "in": "query",
            "name": "skip",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 0,
              "example": 0
            }
          },
          {
            "description": "Specifies the order in which to sort the results.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Prisma.SortOrder",
              "example": "desc"
            }
          },
          {
            "description": "Specifies the name of the contract.",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "type": "string",
              "example": "NFT Contract"
            },
            "example": "NFT Contract"
          },
          {
            "description": "Specifies whether to include deleted contracts.",
            "in": "query",
            "name": "deleted",
            "required": false,
            "schema": {
              "type": "boolean",
              "example": false
            },
            "example": false
          },
          {
            "description": "The chain ID of the contract.",
            "in": "query",
            "name": "chainId",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "example": 80002
            },
            "example": 80002
          },
          {
            "description": "Specifies the address of the contract.",
            "in": "query",
            "name": "address",
            "required": false,
            "schema": {
              "type": "string",
              "example": "0x742e6e61d760164d56f44801054bcf40fa821d97"
            },
            "example": "0x742e6e61d760164d56f44801054bcf40fa821d97"
          }
        ]
      },
      "post": {
        "operationId": "CreateContract",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
                      "createdAt": 1689869074,
                      "object": "contract",
                      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
                      "chainId": 80002,
                      "deleted": false,
                      "name": "MyContract",
                      "publicVerification": true,
                      "abi": [
                        {
                          "constant": false,
                          "inputs": [
                            {
                              "name": "addr",
                              "type": "address"
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          },
          "409": {
            "description": "Error response."
          }
        },
        "description": "Add a new contract to your project in Openfort",
        "summary": "Create contract object",
        "tags": [
          "Contracts"
        ],
        "security": [
          {
            "sk": [
              "contracts:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContractRequest"
              }
            }
          }
        }
      }
    },
    "/v1/contracts/{id}": {
      "get": {
        "operationId": "GetContract",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
                      "createdAt": 1689869074,
                      "object": "contract",
                      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
                      "chainId": 80002,
                      "deleted": false,
                      "name": "MyContract",
                      "publicVerification": true,
                      "abi": [
                        {
                          "constant": false,
                          "inputs": [
                            {
                              "name": "addr",
                              "type": "address"
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "description": "Retrieve a contract by providing their contract id.",
        "summary": "Get a contract",
        "tags": [
          "Contracts"
        ],
        "security": [
          {
            "sk": [
              "contracts:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique contract ID (starts with con_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
            },
            "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
          }
        ]
      },
      "post": {
        "operationId": "UpdateContract",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
                      "createdAt": 1689869074,
                      "object": "contract",
                      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
                      "chainId": 80002,
                      "deleted": false,
                      "name": "MyContract",
                      "publicVerification": true,
                      "abi": [
                        {
                          "constant": false,
                          "inputs": [
                            {
                              "name": "addr",
                              "type": "address"
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          },
          "409": {
            "description": "Error response."
          }
        },
        "summary": "Updates a contract object",
        "tags": [
          "Contracts"
        ],
        "security": [
          {
            "sk": [
              "contracts:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique contract ID (starts with con_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
            },
            "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateContractRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteContract",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractDeleteResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
                      "deleted": true,
                      "object": "contract"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          },
          "409": {
            "description": "Error response."
          }
        },
        "description": "Delete a contract from the project by providing its contract id.",
        "summary": "Deletes a contract object",
        "tags": [
          "Contracts"
        ],
        "security": [
          {
            "sk": [
              "contracts:delete"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique contract ID (starts with con_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
            },
            "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
          }
        ]
      }
    },
    "/v1/contracts/{id}/read": {
      "get": {
        "operationId": "ReadContract",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractReadResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
                      "createdAt": 1689869074,
                      "object": "readContract",
                      "functionName": "balanceOf",
                      "result": {
                        "type": "BigNumber",
                        "hex": "0x00"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          },
          "409": {
            "description": "Error response."
          }
        },
        "description": "Using this endpoint, you can get the repositories returned by any readable\nfunction listed in a contracts ABI. This could be things like querying\nthe totalSupply of a currency contract, the number of owners of an items\ncontract, and more.",
        "summary": "Read on chain contract repositories",
        "tags": [
          "Contracts"
        ],
        "security": [
          {
            "sk": [
              "contracts:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique contract ID (starts with con_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
            },
            "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
          },
          {
            "description": "The function name of the contract.",
            "in": "query",
            "name": "functionName",
            "required": true,
            "schema": {
              "type": "string",
              "example": "mint"
            },
            "example": "mint"
          },
          {
            "description": "The function arguments of the contract, in string format. Accepts pla_, con_ and acc_ IDs.",
            "in": "query",
            "name": "functionArgs",
            "required": false,
            "schema": {
              "type": "array",
              "items": {},
              "example": [
                "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
              ]
            },
            "example": [
              "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
            ]
          }
        ]
      }
    },
    "/v2/users": {
      "get": {
        "operationId": "GetAuthUsers",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserListResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "list",
                      "data": [
                        {
                          "id": "usr_***",
                          "createdAt": 123456789,
                          "name": "Satoshi",
                          "email": "satoshi@openfort.io",
                          "emailVerified": true,
                          "phoneNumber": null,
                          "phoneNumberVerified": false,
                          "isAnonymous": false,
                          "linkedAccounts": [
                            {
                              "provider": "google",
                              "createdAt": 12346789,
                              "updatedAt": 12346789,
                              "accountId": "123456789"
                            }
                          ]
                        },
                        {
                          "id": "usr_***",
                          "createdAt": 123456789,
                          "name": "Nakamoto",
                          "email": "nakamoto@openfort.io",
                          "emailVerified": true,
                          "phoneNumber": null,
                          "phoneNumberVerified": false,
                          "isAnonymous": false,
                          "linkedAccounts": [
                            {
                              "provider": "google",
                              "createdAt": 12346789,
                              "updatedAt": 12346789,
                              "accountId": "123456789"
                            }
                          ]
                        }
                      ],
                      "start": 0,
                      "end": 2,
                      "total": 2
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "description": "Retrieves an authenticated users.\n\nUsers have linked accounts and are authenticated with a provider.",
        "summary": "List authenticated users",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "sk": [
              "users:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the maximum number of records to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 1,
              "example": 10
            }
          },
          {
            "description": "Specifies the offset for the first records to return.",
            "in": "query",
            "name": "skip",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 0,
              "example": 0
            }
          },
          {
            "description": "Specifies the order in which to sort the results.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Prisma.SortOrder",
              "example": "desc"
            }
          },
          {
            "description": "Filter by user name.",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "type": "string",
              "example": "John"
            },
            "example": "John"
          },
          {
            "description": "Filter by external user ID (accountId from linked accounts).",
            "in": "query",
            "name": "externalUserId",
            "required": false,
            "schema": {
              "type": "string",
              "example": "123454456687897"
            },
            "example": "123454456687897"
          },
          {
            "description": "Filter by user email.",
            "in": "query",
            "name": "email",
            "required": false,
            "schema": {
              "type": "string",
              "example": "user@example.com"
            },
            "example": "user@example.com"
          },
          {
            "description": "Filter by user phone number.",
            "in": "query",
            "name": "phoneNumber",
            "required": false,
            "schema": {
              "type": "string",
              "example": "+1234567890"
            },
            "example": "+1234567890"
          },
          {
            "description": "Filter by provider ID (e.g., \"google\", \"apple\", \"siwe\", \"credential\").",
            "in": "query",
            "name": "authProviderId",
            "required": false,
            "schema": {
              "type": "string",
              "example": "google"
            },
            "example": "google"
          },
          {
            "description": "Filter by wallet client type (for SIWE accounts).",
            "in": "query",
            "name": "walletClientType",
            "required": false,
            "schema": {
              "type": "string",
              "example": "metamask"
            },
            "example": "metamask"
          }
        ]
      }
    },
    "/v2/users/{id}": {
      "get": {
        "operationId": "GetAuthUser",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthUserResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "usr_***",
                      "createdAt": 123456789,
                      "name": "Satoshi",
                      "email": "satoshi@openfort.io",
                      "emailVerified": true,
                      "phoneNumber": null,
                      "phoneNumberVerified": false,
                      "isAnonymous": false,
                      "linkedAccounts": [
                        {
                          "provider": "google",
                          "createdAt": 12346789,
                          "updatedAt": 12346789,
                          "accountId": "123456789"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "description": "Retrieves an authenticated user.\n\nUsers have linked accounts and are authenticated with a provider.",
        "summary": "Get authenticated user by id",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "sk": [
              "users:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "pla_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
            }
          }
        ]
      },
      "delete": {
        "operationId": "DeleteUser",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDeleteResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "pla_00000000-0000-0000-0000-000000000000",
                      "object": "player",
                      "deleted": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          },
          "409": {
            "description": "Error response."
          }
        },
        "description": "It will delete all linked accounts the user is authenticated with.\nIf the user has a linked embedded signer, it will be deleted as well.",
        "summary": "Delete user by id",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "sk": [
              "users:delete"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique user ID (starts with pla_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "pla_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "pla_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        ]
      }
    },
    "/v2/users/{id}/wallet": {
      "get": {
        "operationId": "GetUserWallet",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WalletResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "pla_00000000-0000-0000-0000-000000000000",
                      "object": "wallet",
                      "createdAt": 1689869074
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          },
          "404": {
            "description": "User not found."
          }
        },
        "description": "Retrieves the wallet associated with an authenticated user.",
        "summary": "Get wallet for user",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "sk": [
              "users:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "pla_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
            }
          }
        ]
      }
    },
    "/v2/users/pregenerate": {
      "post": {
        "operationId": "pregenerateUserV2",
        "responses": {
          "200": {
            "description": "User and accounts pre-generated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PregenerateUserResponseV2"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "user": "usr_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43",
                      "accounts": [
                        {
                          "id": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                          "wallet": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                          "accountType": "Smart Account",
                          "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
                          "chainType": "EVM",
                          "createdAt": 1689869074,
                          "updatedAt": 1689869074,
                          "custody": "Developer",
                          "smartAccount": {
                            "implementationType": "UpgradeableV5",
                            "factoryAddress": "0x1234567890123456789012345678901234567890",
                            "implementationAddress": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
                            "salt": "0x0000000000000000000000000000000000000000000000000000000000000001",
                            "active": true
                          },
                          "recoveryShare": "2a7f8c4e1b3d5a9f6e8c2b4d7a1f3e5c8b2d4a6f9e1c3b5d7a2f4e6c8b1d3a",
                          "signer": "sig_3b1a4d9c-7e2f-4a6d-8c9b-1e5f2d7a4b3c"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid parameters."
          },
          "401": {
            "description": "Unauthorized - invalid API key."
          },
          "409": {
            "description": "Conflict - user with this identifier already exists."
          }
        },
        "description": "Pre-generate a user with one or more embedded accounts before they authenticate.\nCreates a user record and an embedded account per entry in `accounts`, each with its\nown SSS key shares. When the user later authenticates (via email, OAuth, third-party\nauth, etc.) with the same identifier, they will be linked to these pre-generated accounts.\n\nUse the `accounts` array to pregenerate accounts on different chain types\n(e.g. one EVM account and one SVM account) in a single call.\n\nYou can pregenerate using either:\n- `email`: User will be linked when they authenticate with the same email\n- `thirdPartyUserId` + `thirdPartyProvider`: User will be linked when they authenticate via the same third-party provider",
        "summary": "Pre-generate a user with embedded accounts",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "sk": [
              "users:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PregenerateUserRequestV2"
              }
            }
          }
        }
      }
    },
    "/v2/transactions": {
      "get": {
        "operationId": "listTransactionsV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionListResponseV2"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "list",
                      "url": "/v2/transactions",
                      "data": [
                        {
                          "id": "tin_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                          "object": "transaction",
                          "createdAt": 1689869074,
                          "updatedAt": 1689869080,
                          "chainId": 80002,
                          "status": "succeeded",
                          "accountId": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60",
                          "walletId": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                          "feeSponsorshipId": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd",
                          "calls": [
                            {
                              "contractId": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35",
                              "functionName": "mint",
                              "functionArgs": [
                                "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
                              ]
                            }
                          ],
                          "execution": {
                            "type": "userOperation",
                            "entryPointVersion": "0.8",
                            "userOperationHash": "0x1a3d1d2fbb8a9c1a3f0f7d2b6c4a8b2b1e1d5c9a7f3e2b1c0d9e8f7a6b5c4d3e",
                            "userOperation": {
                              "sender": "0x8ab66318aCC6b29A27e74e534bfe3ecf81C50387",
                              "nonce": "0x1",
                              "callData": "0x8c5a3c2e000000000000000000000000662d24bf7ea2dd6a7d0935f680a6056b94fe934d",
                              "callGasLimit": "0x186a0",
                              "verificationGasLimit": "0x186a0",
                              "preVerificationGas": "0x5208",
                              "maxFeePerGas": "0x59682f00",
                              "maxPriorityFeePerGas": "0x59682f00",
                              "paymaster": "0x8c99A2E1A5F81DF3A3fE9d7e1F5c9F2c1e3B4a5D",
                              "paymasterVerificationGasLimit": "0xc350",
                              "paymasterPostOpGasLimit": "0xc350",
                              "paymasterData": "0x01",
                              "signature": "0xabcdef01"
                            }
                          },
                          "receipt": {
                            "createdAt": 1689869080,
                            "transactionHash": "0x9f2b5c1e7d3a4b6c8e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
                            "blockNumber": 12345678,
                            "to": "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108",
                            "gasUsed": "210000",
                            "gasFee": "315000000000000",
                            "logs": []
                          },
                          "timeline": [
                            {
                              "event": "awaiting_signature",
                              "at": 1689869074
                            },
                            {
                              "event": "submitted",
                              "at": 1689869075
                            },
                            {
                              "event": "indexed",
                              "at": 1689869079
                            },
                            {
                              "event": "confirmed",
                              "at": 1689869080
                            },
                            {
                              "event": "succeeded",
                              "at": 1689869080
                            }
                          ],
                          "costUsd": "0.42"
                        },
                        {
                          "id": "tin_9c1b2a3d-4e5f-4a6b-8c7d-0e1f2a3b4c5d",
                          "object": "transaction",
                          "createdAt": 1689869074,
                          "updatedAt": 1689869074,
                          "chainId": 80002,
                          "status": "awaiting_signature",
                          "accountId": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60",
                          "walletId": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                          "feeSponsorshipId": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd",
                          "calls": [
                            {
                              "contractId": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35",
                              "functionName": "mint",
                              "functionArgs": [
                                "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
                              ]
                            }
                          ],
                          "nextAction": {
                            "type": "sign_hash",
                            "hash": "0x1a3d1d2fbb8a9c1a3f0f7d2b6c4a8b2b1e1d5c9a7f3e2b1c0d9e8f7a6b5c4d3e"
                          }
                        }
                      ],
                      "start": 0,
                      "end": 2,
                      "total": 2
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          }
        },
        "description": "Returns a list of transactions, most recent first.",
        "summary": "List transactions",
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "sk": [
              "transactions:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the maximum number of records to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 1,
              "example": 10
            }
          },
          {
            "description": "Specifies the offset for the first records to return.",
            "in": "query",
            "name": "skip",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 0,
              "example": 0
            }
          },
          {
            "description": "Specifies the order in which to sort the results.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Prisma.SortOrder",
              "example": "desc"
            }
          },
          {
            "description": "Specifies the fields to expand in the response. `timeline` adds the lifecycle history (one\nmonitor lookup per request); `userOperation` and `logs` add the heavyweight execution payload\nand receipt logs, which are otherwise omitted.",
            "in": "query",
            "name": "expand",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/TransactionExpandableV2"
              },
              "example": "account"
            }
          },
          {
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "in": "query",
            "name": "chainId",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "example": 80002
            },
            "example": 80002
          },
          {
            "description": "Filter by account ID (starts with acc_).",
            "in": "query",
            "name": "accountId",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": [
                "acc_dc981458-a653-4539-b120-a321915b2896"
              ]
            },
            "example": [
              "acc_dc981458-a653-4539-b120-a321915b2896"
            ]
          },
          {
            "description": "Filter by user ID (starts with usr_).",
            "in": "query",
            "name": "userId",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": [
                "usr_556166c9-77ad-4a39-aaf8-c432defa8a0f"
              ]
            },
            "example": [
              "usr_556166c9-77ad-4a39-aaf8-c432defa8a0f"
            ]
          },
          {
            "description": "Filter by wallet ID (starts with pla_).",
            "in": "query",
            "name": "walletId",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": [
                "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
              ]
            },
            "example": [
              "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
            ]
          },
          {
            "description": "Filter by fee sponsorship ID (starts with pol_).",
            "in": "query",
            "name": "feeSponsorshipId",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": [
                "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
              ]
            },
            "example": [
              "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
            ]
          },
          {
            "description": "Filter by transaction status.",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/TransactionStatusV2",
              "example": "awaiting_signature"
            }
          }
        ]
      },
      "post": {
        "operationId": "createTransactionV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionResponseV2"
                },
                "examples": {
                  "Custodial account": {
                    "value": {
                      "id": "tin_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "transaction",
                      "createdAt": 1689869074,
                      "updatedAt": 1689869080,
                      "chainId": 80002,
                      "status": "succeeded",
                      "accountId": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60",
                      "walletId": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "feeSponsorshipId": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd",
                      "calls": [
                        {
                          "contractId": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35",
                          "functionName": "mint",
                          "functionArgs": [
                            "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
                          ]
                        }
                      ],
                      "execution": {
                        "type": "userOperation",
                        "entryPointVersion": "0.8",
                        "userOperationHash": "0x1a3d1d2fbb8a9c1a3f0f7d2b6c4a8b2b1e1d5c9a7f3e2b1c0d9e8f7a6b5c4d3e",
                        "userOperation": {
                          "sender": "0x8ab66318aCC6b29A27e74e534bfe3ecf81C50387",
                          "nonce": "0x1",
                          "callData": "0x8c5a3c2e000000000000000000000000662d24bf7ea2dd6a7d0935f680a6056b94fe934d",
                          "callGasLimit": "0x186a0",
                          "verificationGasLimit": "0x186a0",
                          "preVerificationGas": "0x5208",
                          "maxFeePerGas": "0x59682f00",
                          "maxPriorityFeePerGas": "0x59682f00",
                          "paymaster": "0x8c99A2E1A5F81DF3A3fE9d7e1F5c9F2c1e3B4a5D",
                          "paymasterVerificationGasLimit": "0xc350",
                          "paymasterPostOpGasLimit": "0xc350",
                          "paymasterData": "0x01",
                          "signature": "0xabcdef01"
                        }
                      },
                      "receipt": {
                        "createdAt": 1689869080,
                        "transactionHash": "0x9f2b5c1e7d3a4b6c8e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
                        "blockNumber": 12345678,
                        "to": "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108",
                        "gasUsed": "210000",
                        "gasFee": "315000000000000",
                        "logs": []
                      },
                      "timeline": [
                        {
                          "event": "awaiting_signature",
                          "at": 1689869074
                        },
                        {
                          "event": "submitted",
                          "at": 1689869075
                        },
                        {
                          "event": "indexed",
                          "at": 1689869079
                        },
                        {
                          "event": "confirmed",
                          "at": 1689869080
                        },
                        {
                          "event": "succeeded",
                          "at": 1689869080
                        }
                      ],
                      "costUsd": "0.42"
                    }
                  },
                  "Account awaiting the user's signature": {
                    "value": {
                      "id": "tin_9c1b2a3d-4e5f-4a6b-8c7d-0e1f2a3b4c5d",
                      "object": "transaction",
                      "createdAt": 1689869074,
                      "updatedAt": 1689869074,
                      "chainId": 80002,
                      "status": "awaiting_signature",
                      "accountId": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60",
                      "walletId": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "feeSponsorshipId": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd",
                      "calls": [
                        {
                          "contractId": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35",
                          "functionName": "mint",
                          "functionArgs": [
                            "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
                          ]
                        }
                      ],
                      "nextAction": {
                        "type": "sign_hash",
                        "hash": "0x1a3d1d2fbb8a9c1a3f0f7d2b6c4a8b2b1e1d5c9a7f3e2b1c0d9e8f7a6b5c4d3e"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Request has invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          }
        },
        "description": "Creates a transaction for an account.\n\nFor accounts whose key is held by the user, the response has `status: \"awaiting_signature\"` and a\n`nextAction` with the hash to sign; submit the signature with `POST /v2/transactions/{id}/signature`.\nFor custodial and backend-wallet accounts the transaction is signed and broadcast in the same call\nand the response already carries a `receipt` (unless `waitForReceipt` is `false`).",
        "summary": "Create a transaction",
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "sk": [
              "transactions:write"
            ]
          },
          {
            "pk_third_party": []
          },
          {
            "pk_access_token": []
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "description": "Project ID to act on behalf of (for ecosystem operations).",
            "in": "header",
            "name": "X-Behalf-Of-Project",
            "required": false,
            "schema": {
              "type": "string",
              "example": "pk_test_0f3c9d2a-5b71-4e8c-9a6d-2f4b8c1e7d90"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTransactionRequestV2"
              }
            }
          }
        }
      }
    },
    "/v2/transactions/{id}": {
      "get": {
        "operationId": "getTransactionV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionResponseV2"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "tin_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "transaction",
                      "createdAt": 1689869074,
                      "updatedAt": 1689869080,
                      "chainId": 80002,
                      "status": "succeeded",
                      "accountId": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60",
                      "walletId": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "feeSponsorshipId": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd",
                      "calls": [
                        {
                          "contractId": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35",
                          "functionName": "mint",
                          "functionArgs": [
                            "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
                          ]
                        }
                      ],
                      "execution": {
                        "type": "userOperation",
                        "entryPointVersion": "0.8",
                        "userOperationHash": "0x1a3d1d2fbb8a9c1a3f0f7d2b6c4a8b2b1e1d5c9a7f3e2b1c0d9e8f7a6b5c4d3e",
                        "userOperation": {
                          "sender": "0x8ab66318aCC6b29A27e74e534bfe3ecf81C50387",
                          "nonce": "0x1",
                          "callData": "0x8c5a3c2e000000000000000000000000662d24bf7ea2dd6a7d0935f680a6056b94fe934d",
                          "callGasLimit": "0x186a0",
                          "verificationGasLimit": "0x186a0",
                          "preVerificationGas": "0x5208",
                          "maxFeePerGas": "0x59682f00",
                          "maxPriorityFeePerGas": "0x59682f00",
                          "paymaster": "0x8c99A2E1A5F81DF3A3fE9d7e1F5c9F2c1e3B4a5D",
                          "paymasterVerificationGasLimit": "0xc350",
                          "paymasterPostOpGasLimit": "0xc350",
                          "paymasterData": "0x01",
                          "signature": "0xabcdef01"
                        }
                      },
                      "receipt": {
                        "createdAt": 1689869080,
                        "transactionHash": "0x9f2b5c1e7d3a4b6c8e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
                        "blockNumber": 12345678,
                        "to": "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108",
                        "gasUsed": "210000",
                        "gasFee": "315000000000000",
                        "logs": []
                      },
                      "timeline": [
                        {
                          "event": "awaiting_signature",
                          "at": 1689869074
                        },
                        {
                          "event": "submitted",
                          "at": 1689869075
                        },
                        {
                          "event": "indexed",
                          "at": 1689869079
                        },
                        {
                          "event": "confirmed",
                          "at": 1689869080
                        },
                        {
                          "event": "succeeded",
                          "at": 1689869080
                        }
                      ],
                      "costUsd": "0.42"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Transaction not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          }
        },
        "description": "Retrieves a transaction. Poll this endpoint until `status` is terminal\n(`succeeded`, `reverted` or `failed`).",
        "summary": "Get a transaction",
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "sk": [
              "transactions:read"
            ]
          },
          {
            "pk_third_party": []
          },
          {
            "pk_access_token": []
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "description": "The transaction ID (starts with tin_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "tin_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "tin_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          {
            "description": "Specifies the expandable fields.",
            "in": "query",
            "name": "expand",
            "required": false,
            "schema": {
              "default": [],
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/TransactionExpandableV2"
              },
              "example": [
                "account",
                "timeline"
              ]
            },
            "example": [
              "account",
              "timeline"
            ]
          }
        ]
      }
    },
    "/v2/transactions/estimate": {
      "post": {
        "operationId": "estimateTransactionV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateTransactionResponseV2"
                },
                "examples": {
                  "Gas estimation": {
                    "value": {
                      "gas": "210000",
                      "gasPrice": "1500000000",
                      "fee": "315000000000000",
                      "feeUsd": "0.42"
                    }
                  },
                  "Gas estimation with token sponsorship": {
                    "value": {
                      "gas": "210000",
                      "gasPrice": "1500000000",
                      "fee": "315000000000000",
                      "feeUsd": "0.42",
                      "feeInToken": "420000"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Request has invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          }
        },
        "description": "Estimates the gas cost of a transaction without sending it.\n\nWith a fee sponsorship that charges the user in an ERC-20 token, `feeInToken` is the estimated\namount of that token.",
        "summary": "Estimate a transaction's gas cost",
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "sk": [
              "transactions:write"
            ]
          },
          {
            "pk_third_party": []
          },
          {
            "pk_access_token": []
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTransactionRequestV2"
              }
            }
          }
        }
      }
    },
    "/v2/transactions/{id}/signature": {
      "post": {
        "operationId": "submitTransactionSignatureV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionResponseV2"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "tin_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "transaction",
                      "createdAt": 1689869074,
                      "updatedAt": 1689869080,
                      "chainId": 80002,
                      "status": "succeeded",
                      "accountId": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60",
                      "walletId": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "feeSponsorshipId": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd",
                      "calls": [
                        {
                          "contractId": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35",
                          "functionName": "mint",
                          "functionArgs": [
                            "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
                          ]
                        }
                      ],
                      "execution": {
                        "type": "userOperation",
                        "entryPointVersion": "0.8",
                        "userOperationHash": "0x1a3d1d2fbb8a9c1a3f0f7d2b6c4a8b2b1e1d5c9a7f3e2b1c0d9e8f7a6b5c4d3e",
                        "userOperation": {
                          "sender": "0x8ab66318aCC6b29A27e74e534bfe3ecf81C50387",
                          "nonce": "0x1",
                          "callData": "0x8c5a3c2e000000000000000000000000662d24bf7ea2dd6a7d0935f680a6056b94fe934d",
                          "callGasLimit": "0x186a0",
                          "verificationGasLimit": "0x186a0",
                          "preVerificationGas": "0x5208",
                          "maxFeePerGas": "0x59682f00",
                          "maxPriorityFeePerGas": "0x59682f00",
                          "paymaster": "0x8c99A2E1A5F81DF3A3fE9d7e1F5c9F2c1e3B4a5D",
                          "paymasterVerificationGasLimit": "0xc350",
                          "paymasterPostOpGasLimit": "0xc350",
                          "paymasterData": "0x01",
                          "signature": "0xabcdef01"
                        }
                      },
                      "receipt": {
                        "createdAt": 1689869080,
                        "transactionHash": "0x9f2b5c1e7d3a4b6c8e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
                        "blockNumber": 12345678,
                        "to": "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108",
                        "gasUsed": "210000",
                        "gasFee": "315000000000000",
                        "logs": []
                      },
                      "timeline": [
                        {
                          "event": "awaiting_signature",
                          "at": 1689869074
                        },
                        {
                          "event": "submitted",
                          "at": 1689869075
                        },
                        {
                          "event": "indexed",
                          "at": 1689869079
                        },
                        {
                          "event": "confirmed",
                          "at": 1689869080
                        },
                        {
                          "event": "succeeded",
                          "at": 1689869080
                        }
                      ],
                      "costUsd": "0.42"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Transaction not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          }
        },
        "description": "Submits the signature of `nextAction.hash` and broadcasts the transaction.",
        "summary": "Submit a transaction signature",
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "pk": []
          },
          {
            "sk": [
              "transactions:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The transaction ID (starts with tin_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "tin_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "tin_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitTransactionSignatureRequestV2"
              }
            }
          }
        }
      }
    },
    "/v2/policies": {
      "get": {
        "operationId": "ListPolicies",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyV2ListResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "list",
                      "url": "/v2/policies",
                      "data": [
                        {
                          "id": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                          "object": "policyV2",
                          "createdAt": 1689869074,
                          "scope": "project",
                          "description": "Limit ETH transfers to 1 ETH to approved addresses",
                          "accountId": null,
                          "enabled": true,
                          "priority": 0,
                          "rules": [
                            {
                              "id": "plr_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43",
                              "object": "policyV2Rule",
                              "createdAt": 1689869074,
                              "action": "accept",
                              "operation": "signEvmTransaction",
                              "criteria": []
                            }
                          ]
                        },
                        {
                          "id": "ply_9f3d7b82-1e4a-4c5f-a8d6-2b7e9c0f3a61",
                          "object": "policyV2",
                          "createdAt": 1689955474,
                          "scope": "account",
                          "description": "Allow only token approvals for this account",
                          "accountId": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                          "enabled": true,
                          "priority": 1,
                          "rules": [
                            {
                              "id": "plr_c4f8e261-5a9b-4d3c-b7e1-8f2a6d0c9b54",
                              "object": "policyV2Rule",
                              "createdAt": 1689955474,
                              "action": "accept",
                              "operation": "sendEvmTransaction",
                              "criteria": []
                            }
                          ]
                        }
                      ],
                      "start": 0,
                      "end": 2,
                      "total": 2
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          }
        },
        "description": "Returns a list of policies.",
        "summary": "List policies",
        "tags": [
          "Policies"
        ],
        "security": [
          {
            "sk": [
              "policies:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the maximum number of records to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 1,
              "example": 10
            }
          },
          {
            "description": "Specifies the offset for the first records to return.",
            "in": "query",
            "name": "skip",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 0,
              "example": 0
            }
          },
          {
            "description": "Specifies the order in which to sort the results.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Prisma.SortOrder",
              "example": "desc"
            }
          },
          {
            "description": "Filter by scope.",
            "in": "query",
            "name": "scope",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "project",
                  "account",
                  "transaction"
                ]
              },
              "example": [
                "project",
                "account"
              ]
            },
            "example": [
              "project",
              "account"
            ]
          },
          {
            "description": "Filter by enabled status.",
            "in": "query",
            "name": "enabled",
            "required": false,
            "schema": {
              "type": "boolean",
              "example": true
            },
            "example": true
          },
          {
            "description": "Filter by account ID (for account-scoped policies).",
            "in": "query",
            "name": "accountId",
            "required": false,
            "schema": {
              "type": "string",
              "example": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          {
            "description": "Only include policies that have at least one rule with an operation in this list.",
            "in": "query",
            "name": "operation",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": [
                "signEvmTransaction",
                "signEvmMessage"
              ]
            },
            "example": [
              "signEvmTransaction",
              "signEvmMessage"
            ]
          },
          {
            "description": "Exclude policies where all rules have operations in this list.",
            "in": "query",
            "name": "operationNotIn",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": [
                "sponsorEvmTransaction",
                "sponsorSolTransaction"
              ]
            },
            "example": [
              "sponsorEvmTransaction",
              "sponsorSolTransaction"
            ]
          }
        ]
      },
      "post": {
        "operationId": "CreatePolicyV2",
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyV2Response"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "policyV2",
                      "createdAt": 1689869074,
                      "scope": "project",
                      "description": "Limit ETH transfers to 1 ETH to approved addresses",
                      "accountId": null,
                      "enabled": true,
                      "priority": 0,
                      "rules": [
                        {
                          "id": "plr_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43",
                          "object": "policyV2Rule",
                          "createdAt": 1689869074,
                          "action": "accept",
                          "operation": "signEvmTransaction",
                          "criteria": []
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "Unauthorized."
          }
        },
        "description": "Creates a new policy with the specified rules.",
        "summary": "Create a policy",
        "tags": [
          "Policies"
        ],
        "security": [
          {
            "sk": [
              "policies:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePolicyV2Request"
              }
            }
          }
        }
      }
    },
    "/v2/policies/{policyId}": {
      "get": {
        "operationId": "GetPolicyV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyV2Response"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "policyV2",
                      "createdAt": 1689869074,
                      "scope": "project",
                      "description": "Limit ETH transfers to 1 ETH to approved addresses",
                      "accountId": null,
                      "enabled": true,
                      "priority": 0,
                      "rules": [
                        {
                          "id": "plr_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43",
                          "object": "policyV2Rule",
                          "createdAt": 1689869074,
                          "action": "accept",
                          "operation": "signEvmTransaction",
                          "criteria": []
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Not found."
          }
        },
        "description": "Retrieves the details of a policy that has previously been created.",
        "summary": "Get a policy",
        "tags": [
          "Policies"
        ],
        "security": [
          {
            "sk": [
              "policies:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique policy ID (starts with ply_).",
            "in": "path",
            "name": "policyId",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        ]
      },
      "post": {
        "operationId": "UpdatePolicyV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyV2Response"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "policyV2",
                      "createdAt": 1689869074,
                      "scope": "project",
                      "description": "Limit ETH transfers to 1 ETH to approved addresses",
                      "accountId": null,
                      "enabled": true,
                      "priority": 0,
                      "rules": [
                        {
                          "id": "plr_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43",
                          "object": "policyV2Rule",
                          "createdAt": 1689869074,
                          "action": "accept",
                          "operation": "signEvmTransaction",
                          "criteria": []
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Not found."
          }
        },
        "description": "Updates an existing policy.",
        "summary": "Update a policy",
        "tags": [
          "Policies"
        ],
        "security": [
          {
            "sk": [
              "policies:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique policy ID (starts with ply_).",
            "in": "path",
            "name": "policyId",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePolicyV2Request"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "DeletePolicyV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyV2DeleteResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "policyV2",
                      "deleted": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Not found."
          }
        },
        "description": "Deletes a policy. This is a soft delete.",
        "summary": "Delete a policy",
        "tags": [
          "Policies"
        ],
        "security": [
          {
            "sk": [
              "policies:delete"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique policy ID (starts with ply_).",
            "in": "path",
            "name": "policyId",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        ]
      }
    },
    "/v2/policies/evaluate": {
      "post": {
        "operationId": "EvaluatePolicyV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvaluatePolicyV2Response"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "policy_evaluation",
                      "allowed": true,
                      "reason": "Allowed by policy rule",
                      "operation": "signEvmTransaction",
                      "accountId": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "matchedPolicyId": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "matchedRuleId": "plr_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "Unauthorized."
          }
        },
        "description": "Evaluates an operation against policies without actually performing the operation.\nUse this endpoint to check if an operation would be allowed before attempting it.",
        "summary": "Evaluate policy",
        "tags": [
          "Policies"
        ],
        "security": [
          {
            "sk": [
              "policies:write"
            ]
          },
          {
            "pk": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EvaluatePolicyV2Request"
              }
            }
          }
        }
      }
    },
    "/v2/fee-sponsorship": {
      "get": {
        "operationId": "ListFeeSponsorships",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeSponsorshipListResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "list",
                      "url": "/v2/fee-sponsorship",
                      "data": [
                        {
                          "id": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                          "object": "feeSponsorship",
                          "createdAt": 1689869074,
                          "name": "My DeFi Gas Sponsorship",
                          "description": "Sponsors gas for free-tier users",
                          "chainId": 8453,
                          "enabled": true,
                          "strategy": {
                            "sponsorSchema": "pay_for_user"
                          },
                          "paymasterId": null,
                          "forwarderContractId": null,
                          "policyId": "ply_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43"
                        },
                        {
                          "id": "pol_9f3d7b82-1e4a-4c5f-a8d6-2b7e9c0f3a61",
                          "object": "feeSponsorship",
                          "createdAt": 1689955474,
                          "name": "NFT Minting Sponsorship",
                          "description": null,
                          "chainId": null,
                          "enabled": false,
                          "strategy": {
                            "sponsorSchema": "charge_custom_tokens",
                            "tokenContracts": [
                              {
                                "contract": "con_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                                "amount": "1000000000000000000"
                              },
                              {
                                "contract": "con_7b1f2c3d-4e5a-6789-abcd-ef0123456789"
                              }
                            ]
                          },
                          "paymasterId": "pay_62d8a4f1-9b3c-4e7a-8f5d-1c6e0b2a9d47",
                          "forwarderContractId": null,
                          "policyId": null
                        }
                      ],
                      "start": 0,
                      "end": 2,
                      "total": 2
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          }
        },
        "description": "Returns a list of fee sponsorship policies.\n\nFee sponsorship policies define gas sponsorship rules by linking to a policy\nwith rich criteria (evmAddress, ethValue, evmNetwork, evmData).",
        "summary": "List fee sponsorship policies",
        "tags": [
          "Fee Sponsorship"
        ],
        "security": [
          {
            "sk": [
              "fee_sponsorship:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the maximum number of records to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 1,
              "example": 10
            }
          },
          {
            "description": "Specifies the offset for the first records to return.",
            "in": "query",
            "name": "skip",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 0,
              "example": 0
            }
          },
          {
            "description": "Specifies the order in which to sort the results.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Prisma.SortOrder",
              "example": "desc"
            }
          },
          {
            "description": "Filter by policy name (partial match).",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "type": "string",
              "example": "DeFi"
            },
            "example": "DeFi"
          },
          {
            "description": "Filter by chain ID.",
            "in": "query",
            "name": "chainId",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "example": 1
            },
            "example": 1
          },
          {
            "description": "Filter by enabled status.",
            "in": "query",
            "name": "enabled",
            "required": false,
            "schema": {
              "type": "boolean",
              "example": true
            },
            "example": true
          },
          {
            "description": "Include deleted policies.",
            "in": "query",
            "name": "deleted",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean",
              "example": false
            },
            "example": false
          }
        ]
      },
      "post": {
        "operationId": "CreateFeeSponsorship",
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeSponsorshipResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "feeSponsorship",
                      "createdAt": 1689869074,
                      "name": "My DeFi Gas Sponsorship",
                      "description": "Sponsors gas for free-tier users",
                      "chainId": 8453,
                      "enabled": true,
                      "strategy": {
                        "sponsorSchema": "pay_for_user"
                      },
                      "paymasterId": null,
                      "forwarderContractId": null,
                      "policyId": "ply_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "Unauthorized."
          }
        },
        "description": "Creates a new fee sponsorship.\n\nThis endpoint requires linking to an existing policy via `policyId`.\nCreate the policy first via `/v2/policies` with your criteria rules.\n\n**Workflow:**\n1. Create a policy via `/v2/policies` with criteria rules\n2. Create a fee sponsorship with `policyId` linking to that policy\n\n**Supported criteria types:**\n- `evmAddress`: Filter by recipient address (in/not in)\n- `ethValue`: Filter by ETH amount (<=, >=, <, >)\n- `evmNetwork`: Filter by chain ID (in/not in)\n- `evmData`: Filter by function selector or parameters",
        "summary": "Create a fee sponsorship",
        "tags": [
          "Fee Sponsorship"
        ],
        "security": [
          {
            "sk": [
              "fee_sponsorship:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFeeSponsorshipRequest"
              }
            }
          }
        }
      }
    },
    "/v2/fee-sponsorship/{feeSponsorshipId}": {
      "get": {
        "operationId": "GetFeeSponsorship",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeSponsorshipResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "feeSponsorship",
                      "createdAt": 1689869074,
                      "name": "My DeFi Gas Sponsorship",
                      "description": "Sponsors gas for free-tier users",
                      "chainId": 8453,
                      "enabled": true,
                      "strategy": {
                        "sponsorSchema": "pay_for_user"
                      },
                      "paymasterId": null,
                      "forwarderContractId": null,
                      "policyId": "ply_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Not found."
          }
        },
        "description": "Retrieves the details of a fee sponsorship.",
        "summary": "Get a fee sponsorship",
        "tags": [
          "Fee Sponsorship"
        ],
        "security": [
          {
            "sk": [
              "fee_sponsorship:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique fee sponsorship ID (starts with pol_).",
            "in": "path",
            "name": "feeSponsorshipId",
            "required": true,
            "schema": {
              "type": "string",
              "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        ]
      },
      "put": {
        "operationId": "UpdateFeeSponsorship",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeSponsorshipResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "feeSponsorship",
                      "createdAt": 1689869074,
                      "name": "My DeFi Gas Sponsorship",
                      "description": "Sponsors gas for free-tier users",
                      "chainId": 8453,
                      "enabled": true,
                      "strategy": {
                        "sponsorSchema": "pay_for_user"
                      },
                      "paymasterId": null,
                      "forwarderContractId": null,
                      "policyId": "ply_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Not found."
          }
        },
        "description": "Updates a fee sponsorship.",
        "summary": "Update a fee sponsorship",
        "tags": [
          "Fee Sponsorship"
        ],
        "security": [
          {
            "sk": [
              "fee_sponsorship:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique fee sponsorship ID (starts with pol_).",
            "in": "path",
            "name": "feeSponsorshipId",
            "required": true,
            "schema": {
              "type": "string",
              "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFeeSponsorshipRequest"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteFeeSponsorship",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeSponsorshipDeleteResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "feeSponsorship",
                      "deleted": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Not found."
          }
        },
        "description": "Deletes a fee sponsorship.\n\nThis is a soft delete - the fee sponsorship is marked as deleted but not removed from the database.",
        "summary": "Delete a fee sponsorship",
        "tags": [
          "Fee Sponsorship"
        ],
        "security": [
          {
            "sk": [
              "fee_sponsorship:delete"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique fee sponsorship ID (starts with pol_).",
            "in": "path",
            "name": "feeSponsorshipId",
            "required": true,
            "schema": {
              "type": "string",
              "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        ]
      }
    },
    "/v2/fee-sponsorship/{feeSponsorshipId}/enable": {
      "put": {
        "operationId": "EnableFeeSponsorship",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeSponsorshipResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "feeSponsorship",
                      "createdAt": 1689869074,
                      "name": "My DeFi Gas Sponsorship",
                      "description": "Sponsors gas for free-tier users",
                      "chainId": 8453,
                      "enabled": true,
                      "strategy": {
                        "sponsorSchema": "pay_for_user"
                      },
                      "paymasterId": null,
                      "forwarderContractId": null,
                      "policyId": "ply_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Not found."
          }
        },
        "description": "Enables a fee sponsorship.",
        "summary": "Enable a fee sponsorship",
        "tags": [
          "Fee Sponsorship"
        ],
        "security": [
          {
            "sk": [
              "fee_sponsorship:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique fee sponsorship ID (starts with pol_).",
            "in": "path",
            "name": "feeSponsorshipId",
            "required": true,
            "schema": {
              "type": "string",
              "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        ]
      }
    },
    "/v2/fee-sponsorship/{feeSponsorshipId}/disable": {
      "put": {
        "operationId": "DisableFeeSponsorship",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeSponsorshipResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "feeSponsorship",
                      "createdAt": 1689869074,
                      "name": "My DeFi Gas Sponsorship",
                      "description": "Sponsors gas for free-tier users",
                      "chainId": 8453,
                      "enabled": true,
                      "strategy": {
                        "sponsorSchema": "pay_for_user"
                      },
                      "paymasterId": null,
                      "forwarderContractId": null,
                      "policyId": "ply_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Not found."
          }
        },
        "description": "Disables a fee sponsorship.",
        "summary": "Disable a fee sponsorship",
        "tags": [
          "Fee Sponsorship"
        ],
        "security": [
          {
            "sk": [
              "fee_sponsorship:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique fee sponsorship ID (starts with pol_).",
            "in": "path",
            "name": "feeSponsorshipId",
            "required": true,
            "schema": {
              "type": "string",
              "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
            },
            "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        ]
      }
    },
    "/v2/accounts/backend": {
      "post": {
        "operationId": "createBackendWallet",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateBackendWalletResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "account",
                      "id": "acc_e0b84653-1741-4a3d-9e91-2b0fd2942f60",
                      "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
                      "walletId": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "chainType": "EVM",
                      "createdAt": 1689869074
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          }
        },
        "description": "Create a new backend wallet account.\n\nGenerates a new keypair securely in the backend wallet system.\nThe private key is stored encrypted and never exposed.",
        "summary": "Create backend wallet",
        "tags": [
          "Backend Wallets"
        ],
        "security": [
          {
            "wallet_auth": [
              "accounts:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBackendWalletRequest"
              }
            }
          }
        }
      }
    },
    "/v2/accounts/backend/{id}": {
      "delete": {
        "operationId": "deleteBackendWallet",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteBackendWalletResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "backendWallet",
                      "id": "acc_e0b84653-1741-4a3d-9e91-2b0fd2942f60",
                      "deleted": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Wallet not found."
          }
        },
        "description": "Delete a backend wallet.\n\nPermanently deletes a backend wallet and its associated private key.",
        "summary": "Delete backend wallet",
        "tags": [
          "Backend Wallets"
        ],
        "security": [
          {
            "wallet_auth": [
              "accounts:delete"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The wallet ID (starts with acc_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
            }
          }
        ]
      }
    },
    "/v2/accounts/backend/{id}/sign": {
      "post": {
        "operationId": "sign",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "signature",
                      "account": "acc_e0b84653-1741-4a3d-9e91-2b0fd2942f60",
                      "signature": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef12"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Account not found."
          }
        },
        "description": "Sign data via backend wallet.\n\nSigns the provided data using the account's private key managed by the backend wallet.\nThe private key is securely stored and never exposed.",
        "summary": "Sign data via backend wallet",
        "tags": [
          "Backend Wallets"
        ],
        "security": [
          {
            "wallet_auth": [
              "accounts:sign"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The account ID (starts with acc_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignRequest"
              }
            }
          }
        }
      }
    },
    "/v2/accounts/backend/{id}/export": {
      "post": {
        "operationId": "exportPrivateKey",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportPrivateKeyResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "exportedKey",
                      "encryptedPrivateKey": "eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ..."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Account not found."
          }
        },
        "description": "Export private key with E2E encryption via backend wallet.\n\nExports the account's private key encrypted using RSA-4096 OAEP SHA-256.\nThe client must provide their ephemeral RSA-4096 public key (base64 SPKI DER format).\nThe response contains the encrypted private key that can be decrypted with the client's private key.",
        "summary": "Export private key (E2E encrypted)",
        "tags": [
          "Backend Wallets"
        ],
        "security": [
          {
            "wallet_auth": [
              "accounts:export"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The account ID (starts with acc_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportPrivateKeyRequest"
              }
            }
          }
        }
      }
    },
    "/v2/accounts/backend/import": {
      "post": {
        "operationId": "importPrivateKey",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportPrivateKeyResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "account",
                      "id": "acc_e0b84653-1741-4a3d-9e91-2b0fd2942f60",
                      "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
                      "walletId": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "chainType": "EVM",
                      "createdAt": 1689869074
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid key material."
          },
          "401": {
            "description": "Unauthorized."
          }
        },
        "description": "Import private key with E2E encryption via backend wallet.\n\nImports a private key into the backend wallet system.\nThe private key must be encrypted using RSA-4096 OAEP SHA-256 with the server's\nstatic import public key (obtain out-of-band from SDK or documentation).",
        "summary": "Import private key (E2E encrypted)",
        "tags": [
          "Backend Wallets"
        ],
        "security": [
          {
            "wallet_auth": [
              "accounts:import"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportPrivateKeyRequest"
              }
            }
          }
        }
      }
    },
    "/v2/accounts/backend/register-secret": {
      "post": {
        "operationId": "registerWalletSecret",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegisterWalletSecretResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "walletSecret",
                      "keyId": "ws_1234567890",
                      "registeredAt": 1689869074
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          }
        },
        "description": "Register a new wallet secret (authentication key).\n\nRegisters an ECDSA P-256 public key that will be used to verify\nX-Wallet-Auth JWT signatures. This is required before using WALLET_AUTH\nfor other backend wallet operations.\n\nUses provided-key authentication: the request must include a walletAuthToken\nJWT signed by the private key corresponding to the publicKey being registered.\nThis proves possession of the private key without transmitting it.\n\nNote: Only ONE active secret is allowed per project. This call fails if an\nactive secret already exists; use rotateWalletSecret to replace an existing secret.",
        "summary": "Register wallet secret",
        "tags": [
          "Backend Wallets"
        ],
        "security": [
          {
            "sk": [
              "api_key:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterWalletSecretRequest"
              }
            }
          }
        }
      }
    },
    "/v2/accounts/backend/revoke-secret": {
      "post": {
        "operationId": "revokeWalletSecret",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevokeWalletSecretResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "walletSecretRevocation",
                      "keyId": "ws_1234567890",
                      "revoked": true,
                      "revokedAt": 1689869074
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Secret not found."
          }
        },
        "description": "Revoke a wallet secret (authentication key).\n\nPermanently revokes a wallet secret so it can no longer be used\nfor X-Wallet-Auth JWT signing.",
        "summary": "Revoke wallet secret",
        "tags": [
          "Backend Wallets"
        ],
        "security": [
          {
            "wallet_auth": [
              "api_key:delete"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RevokeWalletSecretRequest"
              }
            }
          }
        }
      }
    },
    "/v2/accounts/backend/rotate-secrets": {
      "post": {
        "operationId": "rotateWalletSecret",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotateWalletSecretResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "walletSecretRotation",
                      "success": true,
                      "rotatedAt": 1689869074
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "403": {
            "description": "MFA required."
          }
        },
        "description": "Rotate wallet secret (authentication key).\n\nReplaces the current wallet secret (ECDSA P-256 public key) used for\nX-Wallet-Auth JWT signing. The old secret will be marked as \"rotated\"\nand immediately becomes unusable (no grace period).\n\nUses provided-key authentication: the request must include a walletAuthToken\nJWT signed by the private key corresponding to the NEW publicKey being registered.\nThis proves possession of the new private key without transmitting it.\n\nRequires an AAL2 session (MFA step-up). Users must enroll MFA and\ncomplete step-up authentication before calling this endpoint.",
        "summary": "Rotate wallet secret",
        "tags": [
          "Backend Wallets"
        ],
        "security": [
          {
            "sk": [
              "api_key:rotate"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RotateWalletSecretRequest"
              }
            }
          }
        }
      }
    },
    "/v2/accounts": {
      "get": {
        "operationId": "getAccountsV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountListV2Response"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "list",
                      "url": "/v2/accounts",
                      "data": [
                        {
                          "id": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                          "wallet": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                          "accountType": "Smart Account",
                          "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
                          "chainType": "EVM",
                          "createdAt": 1689869074,
                          "updatedAt": 1689869074,
                          "custody": "Developer",
                          "smartAccount": {
                            "implementationType": "UpgradeableV5",
                            "factoryAddress": "0x1234567890123456789012345678901234567890",
                            "implementationAddress": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
                            "salt": "0x0000000000000000000000000000000000000000000000000000000000000001",
                            "active": true
                          }
                        },
                        {
                          "id": "acc_9f3d7b82-1e4a-4c5f-a8d6-2b7e9c0f3a61",
                          "wallet": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                          "accountType": "EOA",
                          "address": "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
                          "chainType": "EVM",
                          "createdAt": 1689955474,
                          "updatedAt": 1689955474,
                          "custody": "User"
                        }
                      ],
                      "start": 0,
                      "end": 2,
                      "total": 2
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "description": "Returns a list of accounts for the given user.\n\nThis object represents a user's account, which is a blockchain smart account that can be used to interact with the blockchain.\n\nThe accounts are returned sorted by creation date, with the most recently created accounts appearing first.",
        "summary": "List user accounts",
        "tags": [
          "Accounts"
        ],
        "security": [
          {
            "pk_access_token": []
          },
          {
            "pk_third_party": []
          },
          {
            "sk": [
              "accounts:read"
            ]
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "description": "Specifies the maximum number of records to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 1,
              "example": 10
            }
          },
          {
            "description": "Specifies the offset for the first records to return.",
            "in": "query",
            "name": "skip",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "minimum": 0,
              "example": 0
            }
          },
          {
            "description": "Specifies the order in which to sort the results.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Prisma.SortOrder",
              "example": "desc"
            }
          },
          {
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "in": "query",
            "name": "chainId",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer",
              "example": 80002
            },
            "example": 80002
          },
          {
            "description": "Specifies the unique user ID (starts with pla_)",
            "in": "query",
            "name": "user",
            "required": false,
            "schema": {
              "type": "string",
              "example": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
            },
            "example": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          {
            "description": "The chain type. Must be either \"EVM\" or \"SVM\".",
            "in": "query",
            "name": "chainType",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "EVM",
                "SVM"
              ],
              "example": "EVM"
            },
            "example": "EVM"
          },
          {
            "description": "Specifies the type of account. Must be either \"Smart Account\" or \"Externally Owned Account\".",
            "in": "query",
            "name": "accountType",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Externally Owned Account",
                "Smart Account",
                "Delegated Account"
              ],
              "example": "Smart Account"
            },
            "example": "Smart Account"
          },
          {
            "description": "Specifies the key custody of the account. Must be either \"Developer\" or \"User\".",
            "in": "query",
            "name": "custody",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Developer",
                "User"
              ],
              "example": "Developer"
            },
            "example": "Developer"
          },
          {
            "description": "Specifies the account address",
            "in": "query",
            "name": "address",
            "required": false,
            "schema": {
              "type": "string",
              "example": "0xf7b4c54cca21cccf42796502bf94e2838fbd44c4"
            },
            "example": "0xf7b4c54cca21cccf42796502bf94e2838fbd44c4"
          }
        ]
      },
      "post": {
        "operationId": "createAccountV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountV2Response"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "wallet": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "accountType": "Smart Account",
                      "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
                      "chainType": "EVM",
                      "createdAt": 1689869074,
                      "updatedAt": 1689869074,
                      "custody": "Developer",
                      "smartAccount": {
                        "implementationType": "UpgradeableV5",
                        "factoryAddress": "0x1234567890123456789012345678901234567890",
                        "implementationAddress": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
                        "salt": "0x0000000000000000000000000000000000000000000000000000000000000001",
                        "active": true
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "description": "Creates a new blockchain account for a user.\n\nAccount creation does not consume any gas. The account can be used to interact with the blockchain.",
        "summary": "Create new account",
        "tags": [
          "Accounts"
        ],
        "security": [
          {
            "sk": [
              "accounts:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAccountRequestV2"
              }
            }
          }
        }
      }
    },
    "/v2/accounts/signer": {
      "get": {
        "operationId": "GetSignerIdByAddress",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignerIdResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "description": "Retrieves the signer ID associated with a given blockchain address.",
        "summary": "Get signer ID by address",
        "tags": [
          "Accounts"
        ],
        "security": [
          {
            "pk_access_token": []
          },
          {
            "pk_third_party": []
          },
          {
            "sk": [
              "accounts:read"
            ]
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "description": "The blockchain address to look up the signer ID for.",
            "in": "query",
            "name": "address",
            "required": true,
            "schema": {
              "type": "string",
              "example": "0x742e6e61d760164d56f44801054bcf40fa821d97"
            }
          }
        ]
      }
    },
    "/v2/accounts/{id}": {
      "get": {
        "operationId": "getAccountV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountV2Response"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "wallet": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "accountType": "Smart Account",
                      "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
                      "chainType": "EVM",
                      "createdAt": 1689869074,
                      "updatedAt": 1689869074,
                      "custody": "Developer",
                      "smartAccount": {
                        "implementationType": "UpgradeableV5",
                        "factoryAddress": "0x1234567890123456789012345678901234567890",
                        "implementationAddress": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
                        "salt": "0x0000000000000000000000000000000000000000000000000000000000000001",
                        "active": true
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "description": "Retrieves the details of an existing account.\n\nSupply the unique account ID and Openfort will return the corresponding account information.",
        "summary": "Get existing account",
        "tags": [
          "Accounts"
        ],
        "security": [
          {
            "pk_access_token": []
          },
          {
            "pk_third_party": []
          },
          {
            "sk": [
              "accounts:read"
            ]
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "description": "The account ID (starts with acc_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
            }
          }
        ]
      },
      "delete": {
        "operationId": "RemoveAccount",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteAccountResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "object": "account",
                      "deleted": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Account not found."
          }
        },
        "description": "Removes an account from a project.",
        "summary": "Delete account",
        "tags": [
          "Accounts"
        ],
        "security": [
          {
            "sk": [
              "accounts:delete"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The account ID (starts with acc_).",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
            }
          }
        ]
      }
    },
    "/v2/accounts/switch-chain": {
      "post": {
        "operationId": "switchChainV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountV2Response"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "wallet": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "accountType": "Smart Account",
                      "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
                      "chainType": "EVM",
                      "createdAt": 1689869074,
                      "updatedAt": 1689869074,
                      "custody": "Developer",
                      "smartAccount": {
                        "implementationType": "UpgradeableV5",
                        "factoryAddress": "0x1234567890123456789012345678901234567890",
                        "implementationAddress": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
                        "salt": "0x0000000000000000000000000000000000000000000000000000000000000001",
                        "active": true
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "description": "Switches the blockchain network for an existing account.\n\nThis allows moving an account between different blockchain networks while maintaining the same account identity.",
        "summary": "Switch account blockchain",
        "tags": [
          "Accounts"
        ],
        "security": [
          {
            "pk_access_token": []
          },
          {
            "pk_third_party": []
          },
          {
            "sk": [
              "accounts:write"
            ]
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SwitchChainQueriesV2"
              }
            }
          }
        }
      }
    },
    "/v2/accounts/{accountUuid}/export-share": {
      "post": {
        "operationId": "exportAccountShare",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportShareResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                      "wallet": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "accountType": "Smart Account",
                      "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
                      "chainType": "EVM",
                      "createdAt": 1689869074,
                      "updatedAt": 1689869074,
                      "custody": "Developer",
                      "smartAccount": {
                        "implementationType": "UpgradeableV5",
                        "factoryAddress": "0x1234567890123456789012345678901234567890",
                        "implementationAddress": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
                        "salt": "0x0000000000000000000000000000000000000000000000000000000000000001",
                        "active": true
                      },
                      "share": "2a7f8c4e1b3d5a9f6e8c2b4d7a1f3e5c8b2d4a6f9e1c3b5d7a2f4e6c8b1d3a",
                      "signerId": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584",
                      "userId": "usr_7a2c4e91-3bd8-4f6a-b12e-9d8f7c6e5a43"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized."
          },
          "404": {
            "description": "Account not found."
          }
        },
        "description": "Exports the primary share for an account, including all data needed to import it on another instance.",
        "summary": "Export account share",
        "tags": [
          "Accounts"
        ],
        "security": [
          {
            "sk": [
              "share:export"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "accountUuid",
            "required": true,
            "schema": {
              "type": "string",
              "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
            }
          }
        ]
      }
    },
    "/iam/v2/me": {
      "get": {
        "operationId": "meV2",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthUserResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "usr_***",
                      "createdAt": 123456789,
                      "name": "Satoshi",
                      "email": "satoshi@openfort.io",
                      "emailVerified": true,
                      "phoneNumber": null,
                      "phoneNumberVerified": false,
                      "isAnonymous": false,
                      "linkedAccounts": [
                        {
                          "provider": "google",
                          "createdAt": 12346789,
                          "updatedAt": 12346789,
                          "accountId": "123456789"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response."
          }
        },
        "summary": "Get user information",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "pk_third_party": []
          },
          {
            "auth_token": []
          }
        ],
        "parameters": []
      }
    },
    "/iam/v2/user/third_party": {
      "post": {
        "operationId": "ThirdPartyV2",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthUserResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "usr_***",
                      "createdAt": 123456789,
                      "name": "Satoshi",
                      "email": "satoshi@openfort.io",
                      "emailVerified": true,
                      "phoneNumber": null,
                      "phoneNumberVerified": false,
                      "isAnonymous": false,
                      "linkedAccounts": [
                        {
                          "provider": "google",
                          "createdAt": 12346789,
                          "updatedAt": 12346789,
                          "accountId": "123456789"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": ""
          }
        },
        "summary": "Verify oauth token of a third party auth provider",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "pk": []
          },
          {
            "pk_third_party": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ThirdPartyOAuthRequest"
              }
            }
          }
        }
      }
    },
    "/iam/v2/auth/sign-in/social": {
      "post": {
        "tags": [
          "Sign In and Sign Up"
        ],
        "summary": "Sign in with a social provider",
        "operationId": "socialSignIn",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "callbackURL": {
                    "type": "string",
                    "description": "Callback URL to redirect to after the user has signed in",
                    "nullable": true
                  },
                  "newUserCallbackURL": {
                    "type": "string",
                    "nullable": true
                  },
                  "errorCallbackURL": {
                    "type": "string",
                    "description": "Callback URL to redirect to if an error happens",
                    "nullable": true
                  },
                  "provider": {
                    "type": "string"
                  },
                  "disableRedirect": {
                    "type": "boolean",
                    "description": "Disable automatic redirection to the provider. Useful for handling the redirection yourself",
                    "nullable": true
                  },
                  "idToken": {
                    "type": "object",
                    "properties": {
                      "token": {
                        "type": "string",
                        "description": "ID token from the provider"
                      },
                      "nonce": {
                        "type": "string",
                        "description": "Nonce used to generate the token",
                        "nullable": true
                      },
                      "accessToken": {
                        "type": "string",
                        "description": "Access token from the provider",
                        "nullable": true
                      },
                      "refreshToken": {
                        "type": "string",
                        "description": "Refresh token from the provider",
                        "nullable": true
                      },
                      "expiresAt": {
                        "type": "number",
                        "description": "Expiry date of the token",
                        "nullable": true
                      }
                    },
                    "required": [
                      "token"
                    ],
                    "nullable": true
                  },
                  "scopes": {
                    "type": "array",
                    "description": "Array of scopes to request from the provider. This will override the default scopes passed.",
                    "items": {
                      "type": "string"
                    },
                    "nullable": true
                  },
                  "requestSignUp": {
                    "type": "boolean",
                    "description": "Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider",
                    "nullable": true
                  },
                  "loginHint": {
                    "type": "string",
                    "description": "The login hint to use for the authorization code request",
                    "nullable": true
                  }
                },
                "required": [
                  "provider"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success - Returns either session details or redirect URL",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Session response when idToken is provided",
                  "properties": {
                    "redirect": {
                      "type": "boolean",
                      "enum": [
                        false
                      ]
                    },
                    "token": {
                      "type": "string",
                      "description": "Session token"
                    },
                    "url": {
                      "type": "string",
                      "nullable": true
                    },
                    "user": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "email": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string",
                          "nullable": true
                        },
                        "image": {
                          "type": "string",
                          "nullable": true
                        },
                        "emailVerified": {
                          "type": "boolean"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "isAnonymous": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "email",
                        "emailVerified",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": [
                    "redirect",
                    "token",
                    "user"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        }
      }
    },
    "/iam/v2/auth/get-session": {
      "get": {
        "tags": [
          "Sessions and Tokens"
        ],
        "summary": "Get the current session",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "name": "disableCookieCache",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "example": false
            },
            "description": "Disable cookie cache and fetch session from database"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "session": {
                      "$ref": "#/components/schemas/Session"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  },
                  "required": [
                    "session",
                    "user"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "authGetSession"
      }
    },
    "/iam/v2/auth/sign-out": {
      "post": {
        "tags": [
          "Sign In and Sign Up"
        ],
        "description": "Sign out the current user",
        "summary": "Sign out",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "signOut"
      }
    },
    "/iam/v2/auth/sign-up/email": {
      "post": {
        "tags": [
          "Sign In and Sign Up"
        ],
        "description": "Sign up a user using email and password",
        "summary": "Sign up with email and password",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of the user"
                  },
                  "email": {
                    "type": "string",
                    "description": "The email of the user"
                  },
                  "password": {
                    "type": "string",
                    "description": "The password of the user"
                  },
                  "image": {
                    "type": "string",
                    "description": "The profile image URL of the user"
                  },
                  "callbackURL": {
                    "type": "string",
                    "description": "The URL to use for email verification callback"
                  },
                  "rememberMe": {
                    "type": "boolean",
                    "description": "If this is false, the session will not be remembered. Default is `true`."
                  }
                },
                "required": [
                  "name",
                  "email",
                  "password"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully created user",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token": {
                      "type": "string",
                      "nullable": true,
                      "description": "Authentication token for the session"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  },
                  "required": [
                    "user"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "422": {
            "description": "Unprocessable Entity. User already exists or failed to create user.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "signUpEmail"
      }
    },
    "/iam/v2/auth/sign-in/email": {
      "post": {
        "tags": [
          "Sign In and Sign Up"
        ],
        "summary": "Sign in with email and password",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Email of the user"
                  },
                  "password": {
                    "type": "string",
                    "description": "Password of the user"
                  },
                  "callbackURL": {
                    "type": "string",
                    "description": "Callback URL to use as a redirect for email verification",
                    "nullable": true
                  },
                  "rememberMe": {
                    "type": "boolean",
                    "nullable": true
                  }
                },
                "required": [
                  "email",
                  "password"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success - Returns either session details or redirect URL",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Session response when idToken is provided",
                  "properties": {
                    "redirect": {
                      "type": "boolean",
                      "enum": [
                        false
                      ]
                    },
                    "token": {
                      "type": "string",
                      "description": "Session token"
                    },
                    "url": {
                      "type": "string",
                      "nullable": true
                    },
                    "user": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "email": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string",
                          "nullable": true
                        },
                        "image": {
                          "type": "string",
                          "nullable": true
                        },
                        "emailVerified": {
                          "type": "boolean"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "isAnonymous": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "email",
                        "emailVerified",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": [
                    "redirect",
                    "token",
                    "user"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "signInEmail"
      }
    },
    "/iam/v2/auth/forget-password": {
      "post": {
        "tags": [
          "Password and Email"
        ],
        "description": "Send a password reset email to the user",
        "summary": "Forget password",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "The email address of the user to send a password reset email to"
                  },
                  "redirectTo": {
                    "type": "string",
                    "description": "The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN",
                    "nullable": true
                  }
                },
                "required": [
                  "email"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "forgetPassword"
      }
    },
    "/iam/v2/auth/reset-password": {
      "post": {
        "tags": [
          "Password and Email"
        ],
        "description": "Reset the password for a user",
        "summary": "Reset password",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "newPassword": {
                    "type": "string",
                    "description": "The new password to set"
                  },
                  "token": {
                    "type": "string",
                    "description": "The token to reset the password",
                    "nullable": true
                  }
                },
                "required": [
                  "newPassword"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResetPasswordResponse"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "resetPassword"
      }
    },
    "/iam/v2/auth/verify-email": {
      "get": {
        "tags": [
          "Password and Email"
        ],
        "description": "Verify the email of the user.\nUsually this endpoint is called when user clicks 'Verify email' link from the letter.",
        "summary": "Verify email",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "description": "The token to verify the email",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "callbackURL",
            "in": "query",
            "description": "The URL to redirect to after email verification",
            "required": false,
            "schema": {
              "type": "string",
              "example": "https://example.com/welcome"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "user": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "User ID"
                        },
                        "email": {
                          "type": "string",
                          "description": "User email"
                        },
                        "name": {
                          "type": "string",
                          "description": "User name"
                        },
                        "image": {
                          "type": "string",
                          "description": "User image URL"
                        },
                        "emailVerified": {
                          "type": "boolean",
                          "description": "Indicates if the user email is verified"
                        },
                        "createdAt": {
                          "type": "string",
                          "description": "User creation date"
                        },
                        "updatedAt": {
                          "type": "string",
                          "description": "User update date"
                        }
                      },
                      "required": [
                        "id",
                        "email",
                        "name",
                        "image",
                        "emailVerified",
                        "createdAt",
                        "updatedAt"
                      ]
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Indicates if the email was verified successfully"
                    }
                  },
                  "required": [
                    "user",
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "verifyEmail"
      }
    },
    "/iam/v2/auth/send-verification-email": {
      "post": {
        "tags": [
          "Password and Email"
        ],
        "description": "Send a verification email to the user",
        "summary": "Send verification email",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "The email to send the verification email to",
                    "example": "user@example.com"
                  },
                  "callbackURL": {
                    "type": "string",
                    "description": "The URL to use for email verification callback",
                    "example": "https://example.com/callback",
                    "nullable": true
                  }
                },
                "required": [
                  "email"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Indicates if the email was sent successfully",
                      "example": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message",
                      "example": "Verification email isn't enabled"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "sendVerificationEmail"
      }
    },
    "/iam/v2/auth/change-email": {
      "post": {
        "description": "Change user's email",
        "summary": "Change email",
        "tags": [
          "Password and Email"
        ],
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "newEmail": {
                    "type": "string",
                    "description": "The new email address to set must be a valid email address"
                  },
                  "callbackURL": {
                    "type": "string",
                    "description": "The URL to redirect to after email verification",
                    "nullable": true
                  }
                },
                "required": [
                  "newEmail"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email change request processed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Indicates if the request was successful"
                    },
                    "message": {
                      "type": "string",
                      "enum": [
                        "Email updated",
                        "Verification email sent"
                      ],
                      "description": "Status message of the email change process",
                      "nullable": true
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "422": {
            "description": "Unprocessable Entity. Email already exists",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "changeEmail"
      }
    },
    "/iam/v2/auth/change-password": {
      "post": {
        "tags": [
          "Password and Email"
        ],
        "description": "Change the password of the user",
        "summary": "Change password",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "newPassword": {
                    "type": "string",
                    "description": "The new password to set"
                  },
                  "currentPassword": {
                    "type": "string",
                    "description": "The current password is required"
                  },
                  "revokeOtherSessions": {
                    "type": "boolean",
                    "description": "Must be a boolean value",
                    "nullable": true
                  }
                },
                "required": [
                  "newPassword",
                  "currentPassword"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Password successfully changed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token": {
                      "type": "string",
                      "nullable": true,
                      "description": "New session token if other sessions were revoked"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  },
                  "required": [
                    "user"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "changePassword"
      }
    },
    "/iam/v2/auth/reset-password/{token}": {
      "get": {
        "tags": [
          "Password and Email"
        ],
        "description": "Redirects the user to the callback URL with the token",
        "summary": "Reset password callback",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The reset password token"
            }
          },
          {
            "name": "callbackURL",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "The URL to redirect the user to reset their password",
              "example": "https://example.com/welcome"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "resetPasswordByToken"
      }
    },
    "/iam/v2/auth/request-password-reset": {
      "post": {
        "tags": [
          "Password and Email"
        ],
        "description": "Send a password reset email to the user",
        "summary": "Request password reset",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "The email address of the user to send a password reset email to"
                  },
                  "redirectTo": {
                    "type": "string",
                    "description": "The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN",
                    "nullable": true
                  }
                },
                "required": [
                  "email"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "requestPasswordReset"
      }
    },
    "/iam/v2/auth/list-sessions": {
      "get": {
        "tags": [
          "Sessions and Tokens"
        ],
        "description": "List all active sessions for the user",
        "summary": "List sessions",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Session"
                  }
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "listSessions"
      }
    },
    "/iam/v2/auth/revoke-session": {
      "post": {
        "tags": [
          "Sessions and Tokens"
        ],
        "description": "Revoke a single session",
        "summary": "Revoke session",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string",
                    "description": "The token to revoke"
                  }
                },
                "required": [
                  "token"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Indicates if the session was revoked successfully"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "authRevokeSession"
      }
    },
    "/iam/v2/auth/revoke-sessions": {
      "post": {
        "tags": [
          "Sessions and Tokens"
        ],
        "description": "Revoke all sessions for the user",
        "summary": "Revoke sessions",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Indicates if all sessions were revoked successfully"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "revokeSessions"
      }
    },
    "/iam/v2/auth/revoke-other-sessions": {
      "post": {
        "tags": [
          "Sessions and Tokens"
        ],
        "description": "Revoke all other sessions for the user except the current one",
        "summary": "Revoke other sessions",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Indicates if all other sessions were revoked successfully"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "revokeOtherSessions"
      }
    },
    "/iam/v2/auth/link-social": {
      "post": {
        "tags": [
          "Linked Accounts"
        ],
        "description": "Link a social account to the user",
        "summary": "Link social account",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "callbackURL": {
                    "type": "string",
                    "description": "The URL to redirect to after the user has signed in",
                    "nullable": true
                  },
                  "provider": {
                    "type": "string"
                  },
                  "idToken": {
                    "type": "object",
                    "properties": {
                      "token": {
                        "type": "string"
                      },
                      "nonce": {
                        "type": "string",
                        "nullable": true
                      },
                      "accessToken": {
                        "type": "string",
                        "nullable": true
                      },
                      "refreshToken": {
                        "type": "string",
                        "nullable": true
                      },
                      "scopes": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "nullable": true
                      }
                    },
                    "required": [
                      "token"
                    ],
                    "nullable": true
                  },
                  "requestSignUp": {
                    "type": "boolean",
                    "nullable": true
                  },
                  "scopes": {
                    "type": "array",
                    "description": "Additional scopes to request from the provider",
                    "items": {
                      "type": "string"
                    },
                    "nullable": true
                  },
                  "errorCallbackURL": {
                    "type": "string",
                    "description": "The URL to redirect to if there is an error during the link process",
                    "nullable": true
                  },
                  "disableRedirect": {
                    "type": "boolean",
                    "description": "Disable automatic redirection to the provider. Useful for handling the redirection yourself",
                    "nullable": true
                  }
                },
                "required": [
                  "provider"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "description": "The authorization URL to redirect the user to"
                    },
                    "redirect": {
                      "type": "boolean",
                      "description": "Indicates if the user should be redirected to the authorization URL"
                    },
                    "status": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "redirect"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "linkSocial"
      }
    },
    "/iam/v2/auth/list-accounts": {
      "get": {
        "tags": [
          "Linked Accounts"
        ],
        "description": "List all accounts linked to the user",
        "summary": "List lined accounts",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "provider": {
                        "type": "string"
                      },
                      "createdAt": {
                        "type": "integer",
                        "format": "int64"
                      },
                      "updatedAt": {
                        "type": "integer",
                        "format": "int64"
                      },
                      "accountId": {
                        "type": "string"
                      },
                      "chainType": {
                        "type": "string"
                      },
                      "chainId": {
                        "type": "string"
                      },
                      "connectorType": {
                        "type": "string"
                      },
                      "walletClientType": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "provider",
                      "createdAt",
                      "updatedAt",
                      "accountId",
                      "chainType",
                      "chainId",
                      "connectorType",
                      "walletClientType"
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "listAccounts"
      }
    },
    "/iam/v2/auth/unlink-account": {
      "post": {
        "tags": [
          "Linked Accounts"
        ],
        "description": "Unlink an account",
        "summary": "Unlink account",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "providerId": {
                    "type": "string"
                  },
                  "accountId": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "providerId"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnlinkAccountResponse"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "unlinkAccount"
      }
    },
    "/iam/v2/auth/refresh-token": {
      "post": {
        "tags": [
          "Sessions and Tokens"
        ],
        "description": "Refresh the access token using a refresh token",
        "summary": "Refresh access token",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "providerId": {
                    "type": "string",
                    "description": "The provider ID for the OAuth provider"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "The account ID associated with the refresh token",
                    "nullable": true
                  },
                  "userId": {
                    "type": "string",
                    "description": "The user ID associated with the account",
                    "nullable": true
                  }
                },
                "required": [
                  "providerId"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Access token refreshed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tokenType": {
                      "type": "string"
                    },
                    "idToken": {
                      "type": "string"
                    },
                    "accessToken": {
                      "type": "string"
                    },
                    "refreshToken": {
                      "type": "string"
                    },
                    "accessTokenExpiresAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "refreshTokenExpiresAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid refresh token or provider configuration"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "refreshToken"
      }
    },
    "/iam/v2/auth/get-access-token": {
      "post": {
        "tags": [
          "Sessions and Tokens"
        ],
        "description": "Get a valid access token, doing a refresh if needed",
        "summary": "Get access token",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "providerId": {
                    "type": "string",
                    "description": "The provider ID for the OAuth provider"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "The account ID associated with the refresh token",
                    "nullable": true
                  },
                  "userId": {
                    "type": "string",
                    "description": "The user ID associated with the account",
                    "nullable": true
                  }
                },
                "required": [
                  "providerId"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A Valid access token",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tokenType": {
                      "type": "string"
                    },
                    "idToken": {
                      "type": "string"
                    },
                    "accessToken": {
                      "type": "string"
                    },
                    "refreshToken": {
                      "type": "string"
                    },
                    "accessTokenExpiresAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "refreshTokenExpiresAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid refresh token or provider configuration"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "getAccessToken"
      }
    },
    "/iam/v2/auth/account-info": {
      "post": {
        "tags": [
          "Linked Accounts"
        ],
        "description": "Get the account info provided by the provider",
        "summary": "Get account info",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "accountId": {
                    "type": "string",
                    "description": "The provider given account id for which to get the account info"
                  }
                },
                "required": [
                  "accountId"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "user": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "email": {
                          "type": "string"
                        },
                        "image": {
                          "type": "string"
                        },
                        "emailVerified": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "emailVerified"
                      ]
                    },
                    "data": {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true
                    }
                  },
                  "required": [
                    "user",
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "accountInfo"
      }
    },
    "/iam/v2/auth/sign-in/anonymous": {
      "post": {
        "tags": [
          "Sign In and Sign Up"
        ],
        "description": "Sign in anonymously",
        "summary": "Anonymous sign in",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Sign in anonymously",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token": {
                      "type": "string",
                      "description": "Session token"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  },
                  "required": [
                    "token",
                    "user"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "signInAnonymous"
      }
    },
    "/iam/v2/auth/sign-in/phone-number": {
      "post": {
        "tags": [
          "Sign In and Sign Up"
        ],
        "description": "Use this endpoint to sign in with phone number",
        "summary": "Sign in with phone",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "phoneNumber": {
                    "type": "string",
                    "description": "Phone number to sign in. Eg: \"+1234567890\""
                  },
                  "password": {
                    "type": "string",
                    "description": "Password to use for sign in."
                  },
                  "rememberMe": {
                    "type": "boolean",
                    "description": "Remember the session. Eg: true",
                    "nullable": true
                  }
                },
                "required": [
                  "phoneNumber",
                  "password"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token": {
                      "type": "string",
                      "description": "Session token"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  },
                  "required": [
                    "token",
                    "user"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid phone number or password"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "signInPhoneNumber"
      }
    },
    "/iam/v2/auth/phone-number/send-otp": {
      "post": {
        "tags": [
          "Phone"
        ],
        "description": "Use this endpoint to send OTP to phone number",
        "summary": "Send OTP to phone number",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "phoneNumber": {
                    "type": "string",
                    "description": "Phone number to send OTP. Eg: \"+1234567890\""
                  }
                },
                "required": [
                  "phoneNumber"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "phoneNumberSendOtp"
      }
    },
    "/iam/v2/auth/phone-number/verify": {
      "post": {
        "tags": [
          "Phone"
        ],
        "description": "Use this endpoint to verify phone number",
        "summary": "Verify phone OTP",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "phoneNumber": {
                    "type": "string",
                    "description": "Phone number to verify. Eg: \"+1234567890\""
                  },
                  "code": {
                    "type": "string",
                    "description": "OTP code. Eg: \"123456\""
                  },
                  "disableSession": {
                    "type": "boolean",
                    "description": "Disable session creation after verification. Eg: false",
                    "nullable": true
                  },
                  "updatePhoneNumber": {
                    "type": "boolean",
                    "description": "Check if there is a session and update the phone number. Eg: true",
                    "nullable": true
                  }
                },
                "required": [
                  "phoneNumber",
                  "code"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Phone number verified successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Indicates if the verification was successful",
                      "enum": [
                        true
                      ]
                    },
                    "token": {
                      "type": "string",
                      "nullable": true,
                      "description": "Session token if session is created, null if disableSession is true or no session is created"
                    },
                    "user": {
                      "type": "object",
                      "nullable": true,
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Unique identifier of the user"
                        },
                        "email": {
                          "type": "string",
                          "format": "email",
                          "nullable": true,
                          "description": "User's email address"
                        },
                        "emailVerified": {
                          "type": "boolean",
                          "nullable": true,
                          "description": "Whether the email is verified"
                        },
                        "name": {
                          "type": "string",
                          "nullable": true,
                          "description": "User's name"
                        },
                        "image": {
                          "type": "string",
                          "format": "uri",
                          "nullable": true,
                          "description": "User's profile image URL"
                        },
                        "phoneNumber": {
                          "type": "string",
                          "description": "User's phone number"
                        },
                        "phoneNumberVerified": {
                          "type": "boolean",
                          "description": "Whether the phone number is verified"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time",
                          "description": "Timestamp when the user was created"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time",
                          "description": "Timestamp when the user was last updated"
                        }
                      },
                      "required": [
                        "id",
                        "phoneNumber",
                        "phoneNumberVerified",
                        "createdAt",
                        "updatedAt"
                      ],
                      "description": "User object with phone number details, null if no user is created or found"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid OTP"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "phoneNumberVerify"
      }
    },
    "/iam/v2/auth/phone-number/forget-password": {
      "post": {
        "tags": [
          "Phone"
        ],
        "description": "Request OTP for password reset via phone number",
        "summary": "Reset password reset with phone(forget password flow)",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "phoneNumber": {
                    "type": "string",
                    "description": "The phone number which is associated with the user. Eg: \"+1234567890\""
                  }
                },
                "required": [
                  "phoneNumber"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OTP sent successfully for password reset",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Indicates if the OTP was sent successfully",
                      "enum": [
                        true
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "phoneNumberForgetPassword"
      }
    },
    "/iam/v2/auth/phone-number/request-password-reset": {
      "post": {
        "tags": [
          "Phone"
        ],
        "description": "Request OTP for password reset via phone number",
        "summary": "Request password reset with phone",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "phoneNumber": {
                    "type": "string"
                  }
                },
                "required": [
                  "phoneNumber"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OTP sent successfully for password reset",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Indicates if the OTP was sent successfully",
                      "enum": [
                        true
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "phoneNumberRequestPasswordReset"
      }
    },
    "/iam/v2/auth/phone-number/reset-password": {
      "post": {
        "tags": [
          "Phone"
        ],
        "description": "Reset password using phone number OTP",
        "summary": "Reset password with phone OTP",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "otp": {
                    "type": "string",
                    "description": "The one time password to reset the password. Eg: \"123456\""
                  },
                  "phoneNumber": {
                    "type": "string",
                    "description": "The phone number to the account which intends to reset the password for. Eg: \"+1234567890\""
                  },
                  "newPassword": {
                    "type": "string",
                    "description": "The new password. Eg: \"new-and-secure-password\""
                  }
                },
                "required": [
                  "otp",
                  "phoneNumber",
                  "newPassword"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Password reset successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResetPasswordResponse"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "phoneNumberResetPassword"
      }
    },
    "/iam/v2/auth/email-otp/send-verification-otp": {
      "post": {
        "tags": [
          "Email OTP"
        ],
        "description": "Send verification OTP",
        "summary": "Request email verification with OTP",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Email address to send the OTP"
                  },
                  "type": {
                    "type": "string",
                    "description": "Type of the OTP"
                  }
                },
                "required": [
                  "email",
                  "type"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "emailOtpSendVerificationOtp"
      }
    },
    "/iam/v2/auth/email-otp/check-verification-otp": {
      "post": {
        "operationId": "checkVerificationOtp",
        "tags": [
          "Email OTP"
        ],
        "description": "Check if a verification OTP is valid",
        "summary": "Check email OTP",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Email address the OTP was sent to"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "email-verification",
                      "sign-in",
                      "forget-password"
                    ],
                    "description": "Type of the OTP"
                  },
                  "otp": {
                    "type": "string",
                    "description": "OTP to verify"
                  }
                },
                "required": [
                  "email",
                  "type",
                  "otp"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        }
      }
    },
    "/iam/v2/auth/email-otp/verify-email": {
      "post": {
        "tags": [
          "Email OTP"
        ],
        "summary": "Verify email with OTP",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Email address to verify"
                  },
                  "otp": {
                    "type": "string",
                    "description": "OTP to verify"
                  }
                },
                "required": [
                  "email",
                  "otp"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Indicates if the verification was successful",
                      "enum": [
                        true
                      ]
                    },
                    "token": {
                      "type": "string",
                      "nullable": true,
                      "description": "Session token if autoSignInAfterVerification is enabled, otherwise null"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  },
                  "required": [
                    "status",
                    "token",
                    "user"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "emailOtpVerifyEmail"
      }
    },
    "/iam/v2/auth/sign-in/email-otp": {
      "post": {
        "tags": [
          "Sign In and Sign Up"
        ],
        "description": "Sign in with OTP",
        "summary": "Sign in with email OTP",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Email address to sign in"
                  },
                  "otp": {
                    "type": "string",
                    "description": "OTP sent to the email"
                  }
                },
                "required": [
                  "email",
                  "otp"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token": {
                      "type": "string",
                      "description": "Session token for the authenticated session"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  },
                  "required": [
                    "token",
                    "user"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "signInEmailOtp"
      }
    },
    "/iam/v2/auth/forget-password/email-otp": {
      "post": {
        "tags": [
          "Password and Email"
        ],
        "description": "Send a password reset OTP to the user",
        "summary": "Request password reset with email OTP",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Email address to send the OTP"
                  }
                },
                "required": [
                  "email"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "Indicates if the OTP was sent successfully"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "forgetPasswordEmailOtp"
      }
    },
    "/iam/v2/auth/email-otp/reset-password": {
      "post": {
        "tags": [
          "Email OTP"
        ],
        "description": "Reset user password with OTP",
        "summary": "Reset password with email OTP",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Email address to reset the password"
                  },
                  "otp": {
                    "type": "string",
                    "description": "OTP sent to the email"
                  },
                  "password": {
                    "type": "string",
                    "description": "New password"
                  }
                },
                "required": [
                  "email",
                  "otp",
                  "password"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResetPasswordResponse"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Usually due to missing parameters, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Forbidden. You do not have permission to access this resource or to perform this action."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Not Found. The requested resource was not found."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Too Many Requests. You have exceeded the rate limit. Try again later."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "emailOtpResetPassword"
      }
    },
    "/iam/v2/auth/siwe/nonce": {
      "post": {
        "tags": [
          "Sign-In with Ethereum"
        ],
        "description": "Generate a nonce for Sign-In With Ethereum (SIWE) authentication",
        "summary": "Initialize SIWE login",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "walletAddress": {
                    "type": "string",
                    "description": "Ethereum wallet address (must be 42 characters starting with 0x)",
                    "pattern": "^0[xX][a-fA-F0-9]{40}$",
                    "minLength": 42,
                    "maxLength": 42
                  },
                  "chainId": {
                    "type": "number",
                    "description": "Blockchain network chain ID (default: 1 for Ethereum mainnet)",
                    "default": 1,
                    "minimum": 1,
                    "maximum": 2147483647
                  }
                },
                "required": [
                  "walletAddress"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Nonce generated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "nonce": {
                      "type": "string",
                      "description": "Cryptographically secure random nonce to be used in SIWE message"
                    }
                  },
                  "required": [
                    "nonce"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Invalid wallet address format or parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Due to missing or invalid authentication."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "siweNonce"
      }
    },
    "/iam/v2/auth/siwe/verify": {
      "post": {
        "tags": [
          "Sign-In with Ethereum"
        ],
        "description": "Verify a signed SIWE message and authenticate the user",
        "summary": "Login with SIWE",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "message": {
                    "type": "string",
                    "description": "The SIWE message string that was signed",
                    "minLength": 1
                  },
                  "signature": {
                    "type": "string",
                    "description": "The signature from the user's wallet",
                    "minLength": 1
                  },
                  "walletAddress": {
                    "type": "string",
                    "description": "Ethereum wallet address (must be 42 characters starting with 0x)",
                    "pattern": "^0[xX][a-fA-F0-9]{40}$",
                    "minLength": 42,
                    "maxLength": 42
                  },
                  "chainId": {
                    "type": "number",
                    "description": "Blockchain network chain ID (must match the Chain ID in SIWE message, default: 1)",
                    "default": 1,
                    "minimum": 1,
                    "maximum": 2147483647
                  },
                  "walletClientType": {
                    "type": "string",
                    "description": "Type of wallet client used (e.g., 'Phantom', 'MetaMask')"
                  },
                  "connectorType": {
                    "type": "string",
                    "description": "Type of connector used (e.g., 'injected', 'walletConnect')"
                  }
                },
                "required": [
                  "message",
                  "signature",
                  "walletAddress"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Authentication successful",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token": {
                      "type": "string",
                      "description": "Session token"
                    },
                    "success": {
                      "type": "boolean",
                      "description": "Always true on successful authentication"
                    },
                    "user": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "User ID"
                        },
                        "walletAddress": {
                          "type": "string",
                          "description": "Ethereum wallet address"
                        },
                        "chainId": {
                          "type": "number",
                          "description": "Chain ID used for authentication"
                        }
                      },
                      "required": [
                        "id",
                        "walletAddress",
                        "chainId"
                      ]
                    }
                  },
                  "required": [
                    "token",
                    "success",
                    "user"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Invalid parameters or email required when anonymous is disabled."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "Error code (e.g., UNAUTHORIZED_INVALID_OR_EXPIRED_NONCE)"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. Invalid or expired nonce, invalid signature, or chainId mismatch."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. This is a problem with the server that you cannot fix."
          }
        },
        "operationId": "siweVerify"
      }
    },
    "/iam/v2/auth/link-siwe/nonce": {
      "post": {
        "tags": [
          "Sign-In with Ethereum"
        ],
        "summary": "Initialize SIWE link",
        "description": "Generates a cryptographically secure nonce for creating a SIWE message to link a wallet to the current authenticated user. Requires active session.",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "walletAddress": {
                    "type": "string",
                    "description": "Ethereum wallet address (must be 42 characters starting with 0x)",
                    "pattern": "^0[xX][a-fA-F0-9]{40}$",
                    "minLength": 42,
                    "maxLength": 42
                  },
                  "chainId": {
                    "type": "number",
                    "description": "Blockchain network chain ID (default: 1 for Ethereum mainnet)",
                    "default": 1,
                    "minimum": 1,
                    "maximum": 2147483647
                  }
                },
                "required": [
                  "walletAddress"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Nonce generated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "nonce": {
                      "type": "string",
                      "description": "Cryptographically secure nonce to use in SIWE message"
                    }
                  },
                  "required": [
                    "nonce"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Invalid wallet address format or parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. User must be logged in to link a wallet."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error."
          }
        },
        "operationId": "linkSiweNonce"
      }
    },
    "/iam/v2/auth/link-siwe/verify": {
      "post": {
        "tags": [
          "Sign-In with Ethereum"
        ],
        "summary": "Verify and link SIWE wallet",
        "description": "Verifies the SIWE signature and links the wallet to the currently authenticated user. Requires active session.",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "message": {
                    "type": "string",
                    "description": "The SIWE message string that was signed",
                    "minLength": 1
                  },
                  "signature": {
                    "type": "string",
                    "description": "The signature from the user's wallet",
                    "minLength": 1
                  },
                  "walletAddress": {
                    "type": "string",
                    "description": "Ethereum wallet address (must be 42 characters starting with 0x)",
                    "pattern": "^0[xX][a-fA-F0-9]{40}$",
                    "minLength": 42,
                    "maxLength": 42
                  },
                  "chainId": {
                    "type": "number",
                    "description": "Blockchain network chain ID (must match the Chain ID in SIWE message, default: 1)",
                    "default": 1,
                    "minimum": 1,
                    "maximum": 2147483647
                  },
                  "walletClientType": {
                    "type": "string",
                    "description": "Type of wallet client used (e.g., 'Phantom', 'MetaMask')"
                  },
                  "connectorType": {
                    "type": "string",
                    "description": "Type of connector used (e.g., 'injected', 'walletConnect')"
                  }
                },
                "required": [
                  "message",
                  "signature",
                  "walletAddress"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Wallet linked successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "Whether the wallet was successfully linked"
                    },
                    "walletAddress": {
                      "type": "string",
                      "description": "The checksummed Ethereum address that was linked"
                    },
                    "chainId": {
                      "type": "number",
                      "description": "The blockchain network chain ID"
                    },
                    "isPrimary": {
                      "type": "boolean",
                      "description": "Whether this is the user's primary wallet (first wallet linked)"
                    },
                    "connectorType": {
                      "type": "string",
                      "description": "Type of connector used (e.g., 'injected', 'walletConnect')"
                    },
                    "walletClientType": {
                      "type": "string",
                      "description": "Type of wallet client used (e.g., 'Phantom', 'MetaMask')"
                    },
                    "ensName": {
                      "type": "string",
                      "description": "ENS name associated with the wallet (if available)"
                    },
                    "ensAvatar": {
                      "type": "string",
                      "description": "ENS avatar URL (if available)"
                    },
                    "message": {
                      "type": "string",
                      "description": "Optional informational message"
                    }
                  },
                  "required": [
                    "success",
                    "walletAddress",
                    "chainId",
                    "isPrimary"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "WALLET_ALREADY_LINKED",
                        "BAD_REQUEST"
                      ],
                      "description": "Error code indicating the type of error"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Wallet already linked to another account or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "UNAUTHORIZED",
                        "INVALID_OR_EXPIRED_NONCE",
                        "INVALID_SIGNATURE"
                      ],
                      "description": "Error code indicating the authentication failure reason"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Unauthorized. User not logged in, invalid/expired nonce, or invalid signature."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. Failed to link wallet."
          }
        },
        "operationId": "linkSiweVerify"
      }
    },
    "/iam/v2/auth/link-siwe/list-wallets": {
      "get": {
        "tags": [
          "Sign-In with Ethereum"
        ],
        "summary": "List linked wallets",
        "description": "Get all SIWE wallets linked to the authenticated user with full wallet metadata including primary status and chain information. Requires active session.",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Wallets retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Unique identifier for this wallet record"
                      },
                      "userId": {
                        "type": "string",
                        "description": "User ID this wallet is linked to"
                      },
                      "address": {
                        "type": "string",
                        "description": "Checksummed Ethereum wallet address",
                        "pattern": "^0[xX][a-fA-F0-9]{40}$"
                      },
                      "chainId": {
                        "type": "number",
                        "description": "Blockchain network chain ID"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the user's primary wallet"
                      },
                      "createdAt": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Timestamp when the wallet was linked"
                      }
                    },
                    "required": [
                      "id",
                      "userId",
                      "address",
                      "chainId",
                      "isPrimary",
                      "createdAt"
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Unauthorized. User is not authenticated."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error."
          }
        },
        "operationId": "linkSiweListWallets"
      }
    },
    "/iam/v2/auth/link-siwe/unlink": {
      "post": {
        "tags": [
          "Sign-In with Ethereum"
        ],
        "summary": "Unlink SIWE wallet",
        "description": "Remove a linked wallet from the authenticated user account. If the wallet being unlinked is the primary wallet, another wallet will be automatically promoted to primary. Requires active session.",
        "security": [
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "walletAddress": {
                    "type": "string",
                    "description": "Ethereum wallet address to unlink (must be 42 characters starting with 0x)",
                    "pattern": "^0[xX][a-fA-F0-9]{40}$",
                    "minLength": 42,
                    "maxLength": 42
                  },
                  "chainId": {
                    "type": "number",
                    "description": "Blockchain network chain ID (default: 1 for Ethereum mainnet)",
                    "default": 1,
                    "minimum": 1,
                    "maximum": 2147483647
                  }
                },
                "required": [
                  "walletAddress"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Wallet unlinked successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "Indicates successful wallet unlinking"
                    }
                  },
                  "required": [
                    "success"
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "BAD_REQUEST",
                        "CANNOT_UNLINK_LAST_ACCOUNT",
                        "WALLET_NOT_FOUND"
                      ],
                      "description": "Error code indicating the type of error"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "description": "Bad Request. Cannot unlink last authentication method, wallet not found, or invalid parameters."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Unauthorized. User is not authenticated."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "Internal Server Error. Failed to unlink wallet."
          }
        },
        "operationId": "linkSiweUnlink"
      }
    }
  },
  "components": {
    "schemas": {
      "JsonRpcSuccessResponse_any_": {
        "description": "JSON-RPC 2.0 Success Response",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "enum": [
              "2.0"
            ],
            "nullable": false
          },
          "result": {},
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number",
                "format": "double"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "jsonrpc",
          "result",
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "JsonRpcError": {
        "description": "JSON-RPC 2.0 Error Object",
        "properties": {
          "code": {
            "type": "number",
            "format": "double"
          },
          "message": {
            "type": "string"
          },
          "data": {}
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "JsonRpcErrorResponse": {
        "description": "JSON-RPC 2.0 Error Response",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "enum": [
              "2.0"
            ],
            "nullable": false
          },
          "error": {
            "$ref": "#/components/schemas/JsonRpcError"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number",
                "format": "double"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "jsonrpc",
          "error",
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "JsonRpcResponse": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/JsonRpcSuccessResponse_any_"
          },
          {
            "$ref": "#/components/schemas/JsonRpcErrorResponse"
          }
        ],
        "description": "JSON-RPC 2.0 Response (either success or error)"
      },
      "JsonRpcRequest": {
        "description": "JSON-RPC 2.0 Request",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "enum": [
              "2.0"
            ],
            "nullable": false
          },
          "method": {
            "type": "string"
          },
          "params": {},
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number",
                "format": "double"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "jsonrpc",
          "method"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CheckoutResponse": {
        "properties": {
          "url": {
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Currency": {
        "enum": [
          "usd"
        ],
        "type": "string",
        "x-enum-varnames": [
          "USD"
        ]
      },
      "CheckoutRequest": {
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "Amount in cents",
            "minimum": 1
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "cancelUrl": {
            "type": "string"
          },
          "successUrl": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CheckoutSubscriptionRequest": {
        "properties": {
          "plan": {
            "type": "string"
          },
          "cancelUrl": {
            "type": "string"
          },
          "successUrl": {
            "type": "string"
          }
        },
        "required": [
          "plan"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Money": {
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "Amount in cents",
            "minimum": 1
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BalanceResponse": {
        "properties": {
          "balance": {
            "$ref": "#/components/schemas/Money"
          },
          "expenses": {
            "$ref": "#/components/schemas/Money"
          },
          "payments": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "balance",
          "expenses",
          "payments"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ResponseType.LIST": {
        "enum": [
          "list"
        ],
        "type": "string",
        "x-enum-varnames": [
          "LIST"
        ]
      },
      "EntityIdResponse": {
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SponsorSchema.PAY_FOR_USER": {
        "enum": [
          "pay_for_user"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PAY_FOR_USER"
        ]
      },
      "SponsorSchema": {
        "enum": [
          "pay_for_user",
          "charge_custom_tokens",
          "fixed_rate"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PAY_FOR_USER",
          "CHARGE_CUSTOM_TOKENS",
          "FIXED_RATE"
        ]
      },
      "PayForUserPolicyStrategy": {
        "properties": {
          "sponsorSchema": {
            "$ref": "#/components/schemas/SponsorSchema.PAY_FOR_USER"
          },
          "depositor": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "sponsorSchema"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SponsorSchema.CHARGE_CUSTOM_TOKENS": {
        "enum": [
          "charge_custom_tokens"
        ],
        "type": "string",
        "x-enum-varnames": [
          "CHARGE_CUSTOM_TOKENS"
        ]
      },
      "ChargeCustomTokenPolicyStrategy": {
        "properties": {
          "sponsorSchema": {
            "$ref": "#/components/schemas/SponsorSchema.CHARGE_CUSTOM_TOKENS"
          },
          "depositor": {
            "type": "string",
            "nullable": true
          },
          "tokenContract": {
            "type": "string"
          },
          "tokenContractAmount": {
            "type": "string"
          }
        },
        "required": [
          "sponsorSchema",
          "tokenContract",
          "tokenContractAmount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SponsorSchema.FIXED_RATE": {
        "enum": [
          "fixed_rate"
        ],
        "type": "string",
        "x-enum-varnames": [
          "FIXED_RATE"
        ]
      },
      "FixedRateTokenPolicyStrategy": {
        "properties": {
          "sponsorSchema": {
            "$ref": "#/components/schemas/SponsorSchema.FIXED_RATE"
          },
          "depositor": {
            "type": "string",
            "nullable": true
          },
          "tokenContract": {
            "type": "string"
          },
          "tokenContractAmount": {
            "type": "string"
          }
        },
        "required": [
          "sponsorSchema",
          "tokenContract",
          "tokenContractAmount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyStrategy": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/PayForUserPolicyStrategy"
          },
          {
            "$ref": "#/components/schemas/ChargeCustomTokenPolicyStrategy"
          },
          {
            "$ref": "#/components/schemas/FixedRateTokenPolicyStrategy"
          }
        ]
      },
      "EntityType.POLICY": {
        "enum": [
          "policy"
        ],
        "type": "string",
        "x-enum-varnames": [
          "POLICY"
        ]
      },
      "Policy": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "deleted": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID."
          },
          "paymaster": {
            "$ref": "#/components/schemas/EntityIdResponse"
          },
          "forwarderContract": {
            "$ref": "#/components/schemas/EntityIdResponse"
          },
          "strategy": {
            "$ref": "#/components/schemas/PolicyStrategy"
          },
          "transactionIntents": {
            "items": {
              "$ref": "#/components/schemas/EntityIdResponse"
            },
            "type": "array"
          },
          "policyRules": {
            "items": {
              "$ref": "#/components/schemas/EntityIdResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "name",
          "deleted",
          "enabled",
          "chainId",
          "strategy",
          "transactionIntents",
          "policyRules"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PlayerMetadata": {
        "properties": {},
        "type": "object",
        "additionalProperties": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "number",
              "format": "double"
            }
          ]
        }
      },
      "EntityType.PLAYER": {
        "enum": [
          "player"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PLAYER"
        ]
      },
      "Player": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PLAYER"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/PlayerMetadata"
          },
          "transactionIntents": {
            "items": {
              "$ref": "#/components/schemas/EntityIdResponse"
            },
            "type": "array"
          },
          "accounts": {
            "items": {
              "$ref": "#/components/schemas/EntityIdResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.ACCOUNT": {
        "enum": [
          "account"
        ],
        "type": "string",
        "x-enum-varnames": [
          "ACCOUNT"
        ]
      },
      "Account": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.ACCOUNT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "address": {
            "type": "string"
          },
          "ownerAddress": {
            "type": "string"
          },
          "deployed": {
            "type": "boolean"
          },
          "custodial": {
            "type": "boolean"
          },
          "embeddedSigner": {
            "type": "boolean"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID."
          },
          "accountType": {
            "type": "string"
          },
          "pendingOwnerAddress": {
            "type": "string"
          },
          "transactionIntents": {
            "items": {
              "$ref": "#/components/schemas/EntityIdResponse"
            },
            "type": "array"
          },
          "player": {
            "$ref": "#/components/schemas/EntityIdResponse"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "address",
          "ownerAddress",
          "deployed",
          "custodial",
          "embeddedSigner",
          "chainId",
          "accountType",
          "player"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.DEVELOPER_ACCOUNT": {
        "enum": [
          "developerAccount"
        ],
        "type": "string",
        "x-enum-varnames": [
          "DEVELOPER_ACCOUNT"
        ]
      },
      "DeveloperAccount": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.DEVELOPER_ACCOUNT"
          },
          "createdAt": {
            "type": "number",
            "format": "double"
          },
          "address": {
            "type": "string"
          },
          "custodial": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "transactionIntents": {
            "items": {
              "$ref": "#/components/schemas/EntityIdResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "address",
          "custodial"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionAbstractionType": {
        "enum": [
          "accountAbstractionV6",
          "accountAbstractionV8",
          "accountAbstractionV9",
          "standard"
        ],
        "type": "string",
        "x-enum-varnames": [
          "AAV6",
          "AAV8",
          "AAV9",
          "EOA"
        ]
      },
      "TransactionStatus": {
        "enum": [
          "none",
          "new",
          "sent",
          "dropped",
          "indexed",
          "confirmed",
          "reverted",
          "notfound",
          "replaced",
          "expired"
        ],
        "type": "string",
        "x-enum-varnames": [
          "NONE",
          "NEW",
          "SENT",
          "DROPPED",
          "INDEXED",
          "CONFIRMED",
          "REVERTED",
          "NOT_FOUND",
          "REPLACED",
          "EXPIRED"
        ]
      },
      "Transition": {
        "description": "A transition represents a change in the status of a transaction intent.",
        "properties": {
          "fromStatus": {
            "$ref": "#/components/schemas/TransactionStatus"
          },
          "toStatus": {
            "$ref": "#/components/schemas/TransactionStatus"
          },
          "at": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "fromStatus",
          "toStatus",
          "at"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserOperationV6": {
        "properties": {
          "callData": {
            "type": "string",
            "description": "The data to pass to the `sender` during the main execution call."
          },
          "callGasLimit": {
            "type": "string",
            "description": "The amount of gas to allocate the main execution call"
          },
          "initCode": {
            "type": "string",
            "description": "Account init code. Only for new accounts."
          },
          "maxFeePerGas": {
            "type": "string",
            "description": "Maximum fee per gas."
          },
          "maxPriorityFeePerGas": {
            "type": "string",
            "description": "Maximum priority fee per gas."
          },
          "nonce": {
            "type": "string",
            "description": "Anti-replay parameter."
          },
          "paymasterAndData": {
            "type": "string",
            "description": "Paymaster address with calldata."
          },
          "preVerificationGas": {
            "type": "string",
            "description": "Extra gas to pay the bundler."
          },
          "sender": {
            "type": "string",
            "description": "The account making the operation."
          },
          "signature": {
            "type": "string",
            "description": "Data passed into the account to verify authorization."
          },
          "verificationGasLimit": {
            "type": "string",
            "description": "The amount of gas to allocate for the verification step."
          }
        },
        "required": [
          "callData",
          "callGasLimit",
          "maxFeePerGas",
          "maxPriorityFeePerGas",
          "nonce",
          "preVerificationGas",
          "sender",
          "signature",
          "verificationGasLimit"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AccountAbstractionV6Details": {
        "properties": {
          "userOperation": {
            "$ref": "#/components/schemas/UserOperationV6"
          },
          "userOperationHash": {
            "type": "string",
            "description": "A User Operation hash."
          }
        },
        "required": [
          "userOperation",
          "userOperationHash"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserOperationV8": {
        "properties": {
          "callData": {
            "type": "string",
            "description": "The data to pass to the `sender` during the main execution call."
          },
          "callGasLimit": {
            "type": "string",
            "description": "The amount of gas to allocate the main execution call"
          },
          "factory": {
            "type": "string",
            "description": "Account init code. Only for new accounts."
          },
          "factoryData": {
            "type": "string",
            "description": "Factory data for account creation."
          },
          "maxFeePerGas": {
            "type": "string",
            "description": "Maximum fee per gas."
          },
          "maxPriorityFeePerGas": {
            "type": "string",
            "description": "Maximum priority fee per gas."
          },
          "nonce": {
            "type": "string",
            "description": "Anti-replay parameter."
          },
          "paymaster": {
            "type": "string",
            "description": "Paymaster address."
          },
          "paymasterVerificationGasLimit": {
            "type": "string",
            "description": "Paymaster verification gas limit."
          },
          "paymasterPostOpGasLimit": {
            "type": "string",
            "description": "Paymaster post-operation gas limit."
          },
          "paymasterData": {
            "type": "string",
            "description": "Paymaster data."
          },
          "preVerificationGas": {
            "type": "string",
            "description": "Extra gas to pay the bundler."
          },
          "sender": {
            "type": "string",
            "description": "The account making the operation."
          },
          "signature": {
            "type": "string",
            "description": "Data passed into the account to verify authorization."
          },
          "verificationGasLimit": {
            "type": "string",
            "description": "The amount of gas to allocate for the verification step."
          }
        },
        "required": [
          "callData",
          "callGasLimit",
          "maxFeePerGas",
          "maxPriorityFeePerGas",
          "nonce",
          "preVerificationGas",
          "sender",
          "signature",
          "verificationGasLimit"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AccountAbstractionV8Details": {
        "properties": {
          "userOperation": {
            "$ref": "#/components/schemas/UserOperationV8"
          },
          "userOperationHash": {
            "type": "string",
            "description": "A User Operation hash."
          }
        },
        "required": [
          "userOperation",
          "userOperationHash"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserOperationV9": {
        "description": "V9 UserOperation extends V8 with paymasterSignature field.\npaymasterSignature enables parallelizable Paymaster signing -\ndata can be passed to the Paymaster after the UserOperation is signed by the wallet.",
        "properties": {
          "callData": {
            "type": "string",
            "description": "The data to pass to the `sender` during the main execution call."
          },
          "callGasLimit": {
            "type": "string",
            "description": "The amount of gas to allocate the main execution call"
          },
          "factory": {
            "type": "string",
            "description": "Account init code. Only for new accounts."
          },
          "factoryData": {
            "type": "string",
            "description": "Factory data for account creation."
          },
          "maxFeePerGas": {
            "type": "string",
            "description": "Maximum fee per gas."
          },
          "maxPriorityFeePerGas": {
            "type": "string",
            "description": "Maximum priority fee per gas."
          },
          "nonce": {
            "type": "string",
            "description": "Anti-replay parameter."
          },
          "paymaster": {
            "type": "string",
            "description": "Paymaster address."
          },
          "paymasterVerificationGasLimit": {
            "type": "string",
            "description": "Paymaster verification gas limit."
          },
          "paymasterPostOpGasLimit": {
            "type": "string",
            "description": "Paymaster post-operation gas limit."
          },
          "paymasterData": {
            "type": "string",
            "description": "Paymaster data."
          },
          "preVerificationGas": {
            "type": "string",
            "description": "Extra gas to pay the bundler."
          },
          "sender": {
            "type": "string",
            "description": "The account making the operation."
          },
          "signature": {
            "type": "string",
            "description": "Data passed into the account to verify authorization."
          },
          "verificationGasLimit": {
            "type": "string",
            "description": "The amount of gas to allocate for the verification step."
          },
          "paymasterSignature": {
            "type": "string",
            "description": "Paymaster signature - enables parallelizable signing.\nThis field does not affect the UserOperation hash, allowing\nthe sender and paymaster to sign in parallel."
          }
        },
        "required": [
          "callData",
          "callGasLimit",
          "maxFeePerGas",
          "maxPriorityFeePerGas",
          "nonce",
          "preVerificationGas",
          "sender",
          "signature",
          "verificationGasLimit"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AccountAbstractionV9Details": {
        "description": "V9 details - extends V8 with paymasterSignature for parallelizable signing",
        "properties": {
          "userOperation": {
            "$ref": "#/components/schemas/UserOperationV9"
          },
          "userOperationHash": {
            "type": "string",
            "description": "A User Operation hash."
          }
        },
        "required": [
          "userOperation",
          "userOperationHash"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StandardDetails": {
        "properties": {
          "from": {
            "type": "string",
            "description": "The transaction sender.",
            "example": "0x8ab66318aCC6b29A27e74e534bfe3ecf81C50387"
          },
          "to": {
            "type": "string",
            "description": "The transaction recipient or contract address."
          },
          "data": {
            "type": "string",
            "description": "A contract hashed method call with encoded args.",
            "example": "0x8c5a..."
          },
          "nonce": {
            "type": "string",
            "description": "Unique number identifying this transaction.",
            "example": "0"
          },
          "gas": {
            "type": "string",
            "description": "The gas limit for the transaction.",
            "example": "21000"
          },
          "maxFeePerGas": {
            "type": "string",
            "description": "Total fee per gas (in wei), inclusive of `maxPriorityFeePerGas`. Only applies to EIP-1559 Transactions.",
            "example": "1000000000"
          },
          "maxPriorityFeePerGas": {
            "type": "string",
            "description": "Max priority fee per gas (in wei). Only applies to EIP-1559 Transactions.",
            "example": "1000000000"
          },
          "value": {
            "type": "string",
            "description": "Value in wei sent with this transaction.",
            "example": "0x8ab66318aCC6b29A27e74e534bfe3ecf81C50387"
          }
        },
        "required": [
          "from",
          "to",
          "nonce",
          "gas",
          "maxFeePerGas",
          "maxPriorityFeePerGas"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionResponseLog": {
        "properties": {
          "blockNumber": {
            "type": "number",
            "format": "double"
          },
          "blockHash": {
            "type": "string"
          },
          "transactionIndex": {
            "type": "number",
            "format": "double"
          },
          "removed": {
            "type": "boolean"
          },
          "address": {
            "type": "string"
          },
          "data": {
            "type": "string"
          },
          "topics": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transactionHash": {
            "type": "string"
          },
          "logIndex": {
            "type": "number",
            "format": "double"
          },
          "orphaned": {
            "type": "boolean"
          }
        },
        "required": [
          "blockNumber",
          "blockHash",
          "transactionIndex",
          "removed",
          "address",
          "data",
          "topics",
          "transactionHash",
          "logIndex"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionErrorExplanation": {
        "properties": {
          "cause": {
            "type": "string",
            "description": "A human-readable description of what caused the error.",
            "example": "The paymaster does not have enough native tokens deposited in the EntryPoint to cover the gas cost."
          },
          "solution": {
            "type": "string",
            "description": "A human-readable suggestion for how to resolve the error.",
            "example": "Top up your account balance in the dashboard or deposit more to the Paymaster contract on the relevant chain."
          }
        },
        "required": [
          "cause",
          "solution"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionError": {
        "properties": {
          "reason": {
            "type": "string",
            "description": "The error reason string returned by the bundler or execution environment.",
            "example": "AA31: paymaster deposit too low"
          },
          "name": {
            "type": "string",
            "description": "The decoded error name from the contract revert, if available.",
            "example": "ExecutionResult"
          },
          "explanation": {
            "$ref": "#/components/schemas/TransactionErrorExplanation",
            "description": "Detailed explanation of the error cause and suggested solution.\nPresent only for known Account Abstraction error codes (AA10–AA99)."
          }
        },
        "required": [
          "reason"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ResponseResponse": {
        "properties": {
          "createdAt": {
            "type": "integer",
            "format": "int32",
            "description": "The unix timestamp in seconds when the transactionIntent was created."
          },
          "blockNumber": {
            "type": "integer",
            "format": "int32",
            "description": "The block height (number) of the block including the transaction of this log."
          },
          "transactionHash": {
            "type": "string",
            "description": "The transaction hash of the transaction of this log."
          },
          "l1GasUsed": {
            "type": "string",
            "description": "The l1 gas used by the transaction of this log."
          },
          "gasUsed": {
            "type": "string",
            "description": "The gas used by the transaction of this log."
          },
          "gasFee": {
            "type": "string",
            "description": "The gas fee by the transaction of this log."
          },
          "l1GasFee": {
            "type": "string",
            "description": "The l1 gas fee by the transaction of this log."
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "description": "The status of the transaction of this log."
          },
          "logs": {
            "items": {
              "$ref": "#/components/schemas/TransactionResponseLog"
            },
            "type": "array",
            "description": "The logs of the transaction of this log."
          },
          "to": {
            "type": "string",
            "description": "The address of the contract of this log."
          },
          "error": {
            "$ref": "#/components/schemas/TransactionError",
            "description": "The error of the transaction, if it failed or was rejected.\nContains the error reason and, for known Account Abstraction errors (AA10–AA99),\nan explanation with cause and solution."
          }
        },
        "required": [
          "createdAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Interaction": {
        "properties": {
          "to": {
            "type": "string",
            "description": "The address of the recipient of native tokens. Use *only* to transfer native tokens. If you provide one of a `pla_...`,  or `acc_...` it will be converted to the corresponding address."
          },
          "value": {
            "type": "string",
            "description": "The value intended to be sent with the transaction. Should be a stringified number in WEI (i.e. factor 10^18).\n*",
            "example": "1000000000000000000"
          },
          "contract": {
            "type": "string",
            "description": "The contract ID you want to interact with. Must have been added to Openfort first, starts with `con_`.",
            "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
          },
          "functionName": {
            "type": "string",
            "description": "The function name of the contract. Accepts a a function signature as well (e.g. mint(address)).",
            "example": "mint"
          },
          "functionArgs": {
            "items": {},
            "type": "array",
            "description": "The function arguments of the contract, in string format. If you provide one of a `pla_...`, `con_...` or `acc_...` it will be converted to the corresponding address.",
            "example": [
              "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
            ]
          },
          "dataSuffix": {
            "type": "string",
            "description": "Data to append to the end of the calldata. Useful for [adding a \"domain\" tag](https://opensea.notion.site/opensea/Seaport-Order-Attributions-ec2d69bf455041a5baa490941aad307f)"
          },
          "data": {
            "type": "string",
            "description": "The encoded calldata of the contract."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "NextActionType": {
        "enum": [
          "sign_with_wallet"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SIGN_WITH_WALLET"
        ]
      },
      "NextActionPayload": {
        "properties": {
          "userOp": {
            "description": "The userOperation.",
            "deprecated": true
          },
          "userOpHash": {
            "type": "string",
            "description": "The hashed userOperation.",
            "deprecated": true
          },
          "userOperation": {
            "description": "The userOperation.",
            "deprecated": true
          },
          "userOperationHash": {
            "type": "string",
            "description": "The hashed userOperation.",
            "deprecated": true
          },
          "signableHash": {
            "type": "string",
            "description": "chain-agnostic hash to sign."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "NextActionResponse": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/NextActionType"
          },
          "payload": {
            "$ref": "#/components/schemas/NextActionPayload"
          }
        },
        "required": [
          "type",
          "payload"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.TRANSACTION_INTENT": {
        "enum": [
          "transactionIntent"
        ],
        "type": "string",
        "x-enum-varnames": [
          "TRANSACTION_INTENT"
        ]
      },
      "TransactionIntentResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.TRANSACTION_INTENT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int32",
            "description": "The unix timestamp in seconds when the transactionIntent was created."
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID.",
            "example": 5
          },
          "abstractionType": {
            "$ref": "#/components/schemas/TransactionAbstractionType",
            "description": "The transaction abstraction type",
            "example": "accountAbstractionV6"
          },
          "transitions": {
            "items": {
              "$ref": "#/components/schemas/Transition"
            },
            "type": "array",
            "description": "Transition of statuses the transaction has gone through."
          },
          "details": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccountAbstractionV6Details"
              },
              {
                "$ref": "#/components/schemas/AccountAbstractionV8Details"
              },
              {
                "$ref": "#/components/schemas/AccountAbstractionV9Details"
              },
              {
                "$ref": "#/components/schemas/StandardDetails"
              }
            ],
            "description": "Specific transaction details based on its type"
          },
          "userOperationHash": {
            "type": "string",
            "deprecated": true
          },
          "userOperation": {
            "deprecated": true
          },
          "response": {
            "$ref": "#/components/schemas/ResponseResponse"
          },
          "finalCost": {
            "type": "string",
            "description": "The actual transaction cost in USD, available after on-chain confirmation.",
            "example": "0.42"
          },
          "interactions": {
            "items": {
              "$ref": "#/components/schemas/Interaction"
            },
            "type": "array"
          },
          "nextAction": {
            "$ref": "#/components/schemas/NextActionResponse"
          },
          "policy": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Policy"
              },
              {
                "$ref": "#/components/schemas/EntityIdResponse"
              }
            ],
            "description": "The policy ID (starts with pol_).",
            "example": "pol_..."
          },
          "player": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Player"
              },
              {
                "$ref": "#/components/schemas/EntityIdResponse"
              }
            ],
            "description": "The player ID (starts with pla_).",
            "example": "pla_..."
          },
          "account": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Account"
              },
              {
                "$ref": "#/components/schemas/EntityIdResponse"
              },
              {
                "$ref": "#/components/schemas/DeveloperAccount"
              }
            ],
            "description": "The account ID (starts with acc_).",
            "example": "acc_..."
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "updatedAt",
          "chainId",
          "abstractionType",
          "account"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionIntentListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/TransactionIntentResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ErrorType.INVALID_REQUEST_ERROR": {
        "enum": [
          "invalid_request_error"
        ],
        "type": "string",
        "x-enum-varnames": [
          "INVALID_REQUEST_ERROR"
        ]
      },
      "FieldErrors": {
        "properties": {},
        "type": "object",
        "additionalProperties": {
          "properties": {
            "value": {},
            "message": {
              "type": "string"
            }
          },
          "required": [
            "message"
          ],
          "type": "object"
        }
      },
      "InvalidRequestError": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ErrorType.INVALID_REQUEST_ERROR"
          },
          "message": {
            "type": "string"
          },
          "details": {
            "$ref": "#/components/schemas/FieldErrors"
          },
          "code": {
            "type": "string",
            "description": "Machine-readable cause, when the thrower disambiguates one (e.g. funding_key_required)."
          },
          "param": {
            "type": "string",
            "description": "Offending request field path, when the thrower points at one (e.g. target.chain)."
          }
        },
        "required": [
          "type",
          "message"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "InvalidRequestErrorResponse": {
        "properties": {
          "error": {
            "$ref": "#/components/schemas/InvalidRequestError"
          }
        },
        "required": [
          "error"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionIntentResponseExpandable": {
        "type": "string",
        "enum": [
          "policy",
          "player",
          "account"
        ],
        "nullable": false
      },
      "Prisma.SortOrder": {
        "type": "string",
        "enum": [
          "asc",
          "desc"
        ]
      },
      "TransactionIntentListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "expand": {
            "items": {
              "$ref": "#/components/schemas/TransactionIntentResponseExpandable"
            },
            "type": "array",
            "description": "Specifies the fields to expand in the response."
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "account": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Filter by account ID or developer account (starts with acc_ or dac_ respectively).",
            "example": [
              "acc_dc981458-a653-4539-b120-a321915b2896"
            ]
          },
          "player": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Filter by player ID (starts with pla_).",
            "example": [
              "pla_556166c9-77ad-4a39-aaf8-c432defa8a0f"
            ]
          },
          "status": {
            "type": "number",
            "format": "double",
            "description": "Filter by successful (1) or failed (0) transaction intents.",
            "example": 1
          },
          "policy": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Filter by policy ID (starts with pol_).",
            "example": [
              "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
            ]
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "CreateTransactionIntentRequest": {
        "properties": {
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "player": {
            "type": "string",
            "description": "ID of the Player this TransactionIntent belongs to, if one exists (starts with `pla_`).\n\nIf you omit this parameter a new Player will be created.",
            "example": "pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          },
          "account": {
            "type": "string",
            "description": "ID of the Account this TransactionIntent is executed with, if one exists (starts with `acc_` or `dac_`).\n\nWhen providing a Player and ChainID, you can omit this parameter.",
            "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
          },
          "policy": {
            "type": "string",
            "description": "ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas.",
            "example": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
          },
          "feeSponsorshipToken": {
            "type": "string",
            "description": "For a fee-sponsorship Policy that accepts several user-pay ERC-20 tokens, the on-chain\naddress of the token the user pays the sponsored fee in. Must be one of the Policy's\nconfigured tokens on this chain; omit to use the Policy's first configured token.",
            "example": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb"
          },
          "externalOwnerAddress": {
            "type": "string",
            "description": "Use this parameter to create a new Account for Player with the provided owner address.\n\nIf you omit this parameter and no Account exists for the Player, a custodial Account will be created.",
            "example": "0x1234567890abcdef1234567890abcdef12345678"
          },
          "optimistic": {
            "type": "boolean",
            "description": "Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain.",
            "example": true
          },
          "signedAuthorization": {
            "type": "string",
            "description": "Signed authorization for delegated accounts. This signature is used to authorize the user operation for AccountAbstractionV8.\nThe signature should be in the format \"0x...\" and will be parsed to extract r, s, and yParity values.",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1c"
          },
          "interactions": {
            "items": {
              "$ref": "#/components/schemas/Interaction"
            },
            "type": "array"
          }
        },
        "required": [
          "chainId",
          "interactions"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EstimateTransactionIntentGasResult": {
        "description": "return value from estimateTransactionIntentCost",
        "properties": {
          "estimatedTXGas": {
            "type": "string",
            "description": "estimated TX gas cost"
          },
          "estimatedTXGasFee": {
            "type": "string",
            "description": "estimated TX gas cost in the chain native token (WEI)"
          },
          "estimatedTXGasFeeUSD": {
            "type": "string",
            "description": "estimated TX gas cost in USD"
          },
          "estimatedTXGasFeeToken": {
            "type": "string",
            "description": "when using a policy, the estimated TX gas cost in the ERC-20 token defined in the strategy (WEI)"
          },
          "gasPrice": {
            "type": "string",
            "description": "gas price used for the estimation"
          }
        },
        "required": [
          "estimatedTXGas",
          "estimatedTXGasFee",
          "estimatedTXGasFeeUSD",
          "gasPrice"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SignatureRequest": {
        "properties": {
          "signature": {
            "type": "string",
            "description": "signed userOperationHash by the owner or valid session key",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
          },
          "optimistic": {
            "type": "boolean",
            "description": "Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain.",
            "example": true
          }
        },
        "required": [
          "signature"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "APITopic": {
        "enum": [
          "transaction_intent.broadcast",
          "transaction_intent.successful",
          "transaction_intent.cancelled",
          "transaction_intent.failed",
          "balance.project",
          "balance.contract",
          "balance.dev_account",
          "test",
          "user.created",
          "user.updated",
          "user.deleted",
          "account.created",
          "solana_transaction.broadcast",
          "solana_transaction.successful",
          "solana_transaction.failed",
          "funding.session.updated"
        ],
        "type": "string",
        "x-enum-varnames": [
          "TRANSACTION_BROADCAST",
          "TRANSACTION_SUCCESSFUL",
          "TRANSACTION_CANCELLED",
          "TRANSACTION_FAILED",
          "BALANCE_PROJECT",
          "BALANCE_CONTRACT",
          "BALANCE_DEV_ACCOUNT",
          "TEST",
          "USER_CREATED",
          "USER_UPDATED",
          "USER_DELETED",
          "ACCOUNT_CREATED",
          "SOLANA_TRANSACTION_BROADCAST",
          "SOLANA_TRANSACTION_SUCCESSFUL",
          "SOLANA_TRANSACTION_FAILED",
          "FUNDING_SESSION_UPDATED"
        ]
      },
      "APITriggerType": {
        "enum": [
          "webhook",
          "email"
        ],
        "type": "string",
        "x-enum-varnames": [
          "WEBHOOK",
          "EMAIL"
        ]
      },
      "EntityType.TRIGGER": {
        "enum": [
          "trigger"
        ],
        "type": "string",
        "x-enum-varnames": [
          "TRIGGER"
        ]
      },
      "TriggerResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.TRIGGER"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "target": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/APITriggerType"
          },
          "subscription": {
            "type": "string"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the trigger is active. Webhook triggers are automatically\ndeactivated after repeated delivery failures and can be re-enabled."
          },
          "updatedAt": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "target",
          "type",
          "subscription",
          "active"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.SUBSCRIPTION": {
        "enum": [
          "subscription"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SUBSCRIPTION"
        ]
      },
      "SubscriptionResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.SUBSCRIPTION"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "topic": {
            "$ref": "#/components/schemas/APITopic"
          },
          "triggers": {
            "items": {
              "$ref": "#/components/schemas/TriggerResponse"
            },
            "type": "array"
          },
          "updatedAt": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "topic",
          "triggers"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SubscriptionListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/SubscriptionResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Status": {
        "enum": [
          "success",
          "failed"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SUCCESS",
          "FAILED"
        ]
      },
      "EntityType.LOG": {
        "enum": [
          "log"
        ],
        "type": "string",
        "x-enum-varnames": [
          "LOG"
        ]
      },
      "LogResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.LOG"
          },
          "createdAt": {
            "type": "number",
            "format": "double"
          },
          "topic": {
            "$ref": "#/components/schemas/APITopic"
          },
          "status": {
            "$ref": "#/components/schemas/Status"
          },
          "subscription": {
            "type": "string"
          },
          "trigger": {
            "type": "string"
          },
          "requestID": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "topic",
          "status",
          "subscription",
          "trigger",
          "requestID"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BaseEntityListResponse_LogResponse_": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/LogResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SubscriptionLogsResponse": {
        "$ref": "#/components/schemas/BaseEntityListResponse_LogResponse_"
      },
      "ListSubscriptionLogsRequest": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "topic": {
            "$ref": "#/components/schemas/APITopic",
            "description": "Specifies the topic of the subscription logs",
            "example": "transaction.broadcast"
          },
          "status": {
            "$ref": "#/components/schemas/Status",
            "description": "Specifies the status of the subscription logs",
            "example": "success"
          },
          "object": {
            "type": "string",
            "description": "Specifies the object ID of the object related to triggered notification",
            "example": "obj_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "subscription": {
            "type": "string",
            "description": "Specifies the subscription ID",
            "example": "sub_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "trigger": {
            "type": "string",
            "description": "Specifies the trigger ID",
            "example": "tri_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "requestID": {
            "type": "string",
            "description": "Specifies the request ID",
            "example": "89fac242a268c584"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "GetSubscriptionResponse": {
        "$ref": "#/components/schemas/SubscriptionResponse"
      },
      "CreateSubscriptionResponse": {
        "$ref": "#/components/schemas/SubscriptionResponse"
      },
      "CreateTriggerRequest": {
        "properties": {
          "target": {
            "type": "string",
            "description": "Specifies the target of the trigger",
            "example": "https://example.com"
          },
          "type": {
            "$ref": "#/components/schemas/APITriggerType",
            "description": "Specifies the type of the trigger",
            "example": "webhook"
          },
          "subscription": {
            "type": "string",
            "description": "Specifies the subscription ID",
            "example": "sub_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          }
        },
        "required": [
          "target",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateSubscriptionRequest": {
        "properties": {
          "topic": {
            "$ref": "#/components/schemas/APITopic",
            "description": "Specifies the topic of the subscription",
            "example": "transaction.broadcast"
          },
          "triggers": {
            "items": {
              "$ref": "#/components/schemas/CreateTriggerRequest"
            },
            "type": "array",
            "description": "Specifies the triggers of the subscription"
          }
        },
        "required": [
          "topic",
          "triggers"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SubscriptionDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.SUBSCRIPTION"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BaseEntityListResponse_TriggerResponse_": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/TriggerResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TriggerListResponse": {
        "$ref": "#/components/schemas/BaseEntityListResponse_TriggerResponse_"
      },
      "GetTriggerResponse": {
        "$ref": "#/components/schemas/TriggerResponse"
      },
      "CreateTriggerResponse": {
        "$ref": "#/components/schemas/TriggerResponse"
      },
      "TriggerDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.TRIGGER"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolanaTransactionStatus": {
        "type": "string",
        "enum": [
          "sent",
          "confirmed",
          "expired",
          "failed"
        ],
        "description": "Lifecycle status of a Solana transaction."
      },
      "SolanaTransactionStatusResponse": {
        "description": "Solana transaction status response — exposes the on-chain transaction signature\n(hash) and the lifecycle status of the underlying sponsorship row.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Internal Solana transaction ID (starts with `sol_`).",
            "example": "sol_f2b8b5f0-1f5c-4a7e-9b3a-1d2e3f4a5b6c"
          },
          "externalId": {
            "type": "string",
            "nullable": true,
            "description": "Caller-supplied externalId, if one was provided when the transaction was signed."
          },
          "txSignature": {
            "type": "string",
            "nullable": true,
            "description": "Base58-encoded Solana transaction signature (a.k.a. transaction hash).\nNull only for `signTransaction` transactions that were never broadcast.",
            "example": "5VfYbZ8XQ9..."
          },
          "status": {
            "$ref": "#/components/schemas/SolanaTransactionStatus",
            "description": "Lifecycle status of the transaction:\n- sent: signed by Kora, awaiting on-chain confirmation\n- confirmed: confirmed on-chain\n- expired: blockhash expired or never broadcast\n- failed: landed on-chain but execution failed (see errorMessage)",
            "example": "confirmed"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true,
            "description": "On-chain error message when status is FAILED."
          },
          "bundleId": {
            "type": "string",
            "nullable": true,
            "description": "Jito bundle UUID for `signAndSendBundle` transactions; null otherwise.\nA submission handle — status is resolved via the first child signature.",
            "example": "d7f3c8e2-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
          },
          "txSignatures": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "All child signatures of a Jito bundle, in order. Empty for single-tx rows.\n`txSignature` holds the first (representative) child signature. Status lookup\nby a non-first child signature is not supported (documented limitation)."
          }
        },
        "required": [
          "id",
          "externalId",
          "txSignature",
          "status",
          "errorMessage",
          "bundleId",
          "txSignatures"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionIntent": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.TRANSACTION_INTENT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int32",
            "description": "The unix timestamp in seconds when the transactionIntent was created."
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID.",
            "example": 5
          },
          "abstractionType": {
            "$ref": "#/components/schemas/TransactionAbstractionType",
            "description": "The transaction abstraction type",
            "example": "accountAbstractionV6"
          },
          "transitions": {
            "items": {
              "$ref": "#/components/schemas/Transition"
            },
            "type": "array",
            "description": "Transition of statuses the transaction has gone through."
          },
          "details": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccountAbstractionV6Details"
              },
              {
                "$ref": "#/components/schemas/AccountAbstractionV8Details"
              },
              {
                "$ref": "#/components/schemas/AccountAbstractionV9Details"
              },
              {
                "$ref": "#/components/schemas/StandardDetails"
              }
            ],
            "description": "Specific transaction details based on its type"
          },
          "userOperationHash": {
            "type": "string",
            "deprecated": true
          },
          "userOperation": {
            "deprecated": true
          },
          "response": {
            "$ref": "#/components/schemas/ResponseResponse"
          },
          "finalCost": {
            "type": "string",
            "description": "The actual transaction cost in USD, available after on-chain confirmation.",
            "example": "0.42"
          },
          "interactions": {
            "items": {
              "$ref": "#/components/schemas/Interaction"
            },
            "type": "array"
          },
          "nextAction": {
            "$ref": "#/components/schemas/NextActionResponse"
          },
          "policy": {
            "$ref": "#/components/schemas/EntityIdResponse",
            "description": "The policy ID (starts with pol_).",
            "example": "pol_..."
          },
          "player": {
            "$ref": "#/components/schemas/EntityIdResponse",
            "description": "The player ID (starts with pla_).",
            "example": "pla_..."
          },
          "account": {
            "$ref": "#/components/schemas/EntityIdResponse",
            "description": "The account ID.",
            "example": "acc_..."
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "updatedAt",
          "chainId",
          "abstractionType",
          "account"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DeveloperAccountResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.DEVELOPER_ACCOUNT"
          },
          "createdAt": {
            "type": "number",
            "format": "double"
          },
          "address": {
            "type": "string"
          },
          "custodial": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "transactionIntents": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TransactionIntent"
                },
                {
                  "$ref": "#/components/schemas/EntityIdResponse"
                }
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "address",
          "custodial"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DeveloperAccountListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/DeveloperAccountResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DeveloperAccountResponseExpandable": {
        "type": "string",
        "enum": [
          "transactionIntents"
        ],
        "nullable": false
      },
      "DeveloperAccountListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "expand": {
            "items": {
              "$ref": "#/components/schemas/DeveloperAccountResponseExpandable"
            },
            "type": "array",
            "description": "Specifies the fields to expand in the response.",
            "example": [
              "transactionIntents"
            ]
          },
          "deleted": {
            "type": "boolean",
            "description": "Specifies whether to include deleted dev accounts.",
            "example": false
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "CreateDeveloperAccountCreateRequest": {
        "properties": {
          "address": {
            "type": "string",
            "description": "The address of the wallet that has deposited funds in the paymaster.",
            "example": "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
          },
          "signature": {
            "type": "string",
            "description": "Signature to verify the account ownership.",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
          },
          "name": {
            "type": "string",
            "description": "The name of the account.",
            "example": "Escrow account"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.SIGNATURE": {
        "enum": [
          "signature"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SIGNATURE"
        ]
      },
      "SignPayloadResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/EntityType.SIGNATURE"
          },
          "account": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "hash": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          }
        },
        "required": [
          "object",
          "account",
          "address",
          "hash",
          "signature"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TypedDomainData": {
        "properties": {
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID.",
            "example": 80002
          },
          "name": {
            "type": "string",
            "description": "The user readable name of signing domain, i.e. the name of the DApp or the protocol..",
            "example": "Openfort"
          },
          "version": {
            "type": "string",
            "description": "The current major version of the signing domain. Signatures from different versions are not compatible.",
            "example": "1"
          },
          "verifyingContract": {
            "type": "string",
            "description": "The address of the contract that will verify the signature. The user-agent may do contract specific phishing prevention.",
            "example": "0x64452Dff1180b21dc50033e1680bB64CDd492582"
          },
          "salt": {
            "type": "string",
            "description": "An disambiguating salt for the protocol. This can be used as a domain separator of last resort.",
            "example": "0xf2d857f4a3edcb9b78b4d503bfe733db1e3f6cdc2b7971ee739626c97e86a558"
          }
        },
        "required": [
          "chainId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TypedDataField": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SignPayloadRequest": {
        "properties": {
          "domain": {
            "$ref": "#/components/schemas/TypedDomainData",
            "description": "Domain. Specific to the dApp."
          },
          "types": {
            "properties": {},
            "additionalProperties": {
              "items": {
                "$ref": "#/components/schemas/TypedDataField"
              },
              "type": "array"
            },
            "type": "object"
          },
          "primaryType": {
            "type": "string",
            "example": "Mail"
          },
          "value": {
            "properties": {},
            "additionalProperties": {},
            "type": "object"
          },
          "hash": {
            "type": "string",
            "description": "Hash to verify and that will be signed",
            "example": "0x3d8c6cab96bc24c87162c529bed5ba88b4617a7ea8bef66489a541d043ac6e8b"
          }
        },
        "required": [
          "domain",
          "types",
          "primaryType",
          "value"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateDeveloperAccountCreateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the account.",
            "example": "Escrow account"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "DeveloperAccountGetMessageResponse": {
        "properties": {
          "message": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        },
        "required": [
          "message",
          "address"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DeveloperAccountDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.DEVELOPER_ACCOUNT"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.SESSION": {
        "enum": [
          "session"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SESSION"
        ]
      },
      "SessionResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.SESSION"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "address": {
            "type": "string"
          },
          "validAfter": {
            "type": "string"
          },
          "validUntil": {
            "type": "string"
          },
          "account": {
            "$ref": "#/components/schemas/EntityIdResponse",
            "description": "The account ID.",
            "example": "acc_..."
          },
          "whitelist": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "nextAction": {
            "$ref": "#/components/schemas/NextActionResponse"
          },
          "transactionIntents": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TransactionIntent"
                },
                {
                  "$ref": "#/components/schemas/EntityIdResponse"
                }
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "updatedAt",
          "isActive",
          "address",
          "validAfter",
          "validUntil",
          "account",
          "whitelist",
          "limit"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SessionListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/SessionResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SessionResponseExpandable": {
        "type": "string",
        "enum": [
          "transactionIntents"
        ],
        "nullable": false,
        "description": "Contains list of the expandable fields for the session response"
      },
      "SessionListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "player": {
            "type": "string",
            "description": "The player ID (starts with pla_)",
            "example": "pla_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "expand": {
            "items": {
              "$ref": "#/components/schemas/SessionResponseExpandable"
            },
            "type": "array",
            "description": "Specifies the fields to expand in the response."
          }
        },
        "required": [
          "player"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateSessionRequest": {
        "properties": {
          "address": {
            "type": "string",
            "description": "The address of the session key.",
            "example": "0x1234567890abcdef1234567890abcdef12345678"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "externalOwnerAddress": {
            "type": "string",
            "description": "If no account exists for a given player, create one with this address.",
            "example": "0x1234567890abcdef1234567890abcdef12345678"
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum number of times the session key can be used.",
            "example": 1000,
            "minimum": 1
          },
          "optimistic": {
            "type": "boolean",
            "description": "Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain.",
            "example": true
          },
          "policy": {
            "type": "string",
            "description": "ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas.",
            "example": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
          },
          "validAfter": {
            "type": "integer",
            "format": "int32",
            "description": "The unix timestamp in seconds when the session key becomes valid.",
            "example": 10
          },
          "validUntil": {
            "type": "integer",
            "format": "int32",
            "description": "The unix timestamp in seconds when the session key expires.",
            "example": 123512123
          },
          "whitelist": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The list of whitelisted addresses (contracts the session key can interact with).",
            "example": [
              "0x1234567890abcdef1234567890abcdef12345678"
            ]
          },
          "player": {
            "type": "string",
            "description": "The player ID (starts with pla_).",
            "example": "pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          },
          "account": {
            "type": "string",
            "description": "ID of the Account this TransactionIntent is executed with, if one exists (starts with `acc_` or `dac_`).\n\nWhen providing a Player and ChainID, you can omit this parameter.",
            "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
          }
        },
        "required": [
          "address",
          "chainId",
          "validAfter",
          "validUntil"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RevokeSessionRequest": {
        "properties": {
          "address": {
            "type": "string",
            "description": "The address of the session key to revoke.",
            "example": "0x1234567890abcdef1234567890abcdef12345678"
          },
          "policy": {
            "type": "string",
            "description": "ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas.",
            "example": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
          },
          "optimistic": {
            "type": "boolean",
            "description": "Whether the transactionIntent is optimistic (resolve before it arrives on chain) or not.",
            "example": true
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "player": {
            "type": "string",
            "description": "The player ID (starts with pla_).",
            "example": "pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          },
          "account": {
            "type": "string",
            "description": "ID of the Account this TransactionIntent is executed with, if one exists (starts with `acc_` or `dac_`).\n\nWhen providing a Player and ChainID, you can omit this parameter.",
            "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
          }
        },
        "required": [
          "address",
          "chainId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyRuleType.CONTRACT": {
        "enum": [
          "contract_functions"
        ],
        "type": "string",
        "x-enum-varnames": [
          "CONTRACT"
        ]
      },
      "PolicyRuleType": {
        "enum": [
          "contract_functions",
          "account_functions",
          "rate_limit"
        ],
        "type": "string",
        "x-enum-varnames": [
          "CONTRACT",
          "ACCOUNT",
          "RATE_LIMIT"
        ]
      },
      "EntityType.POLICY_RULE": {
        "enum": [
          "policyRule"
        ],
        "type": "string",
        "x-enum-varnames": [
          "POLICY_RULE"
        ]
      },
      "AbiType": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "indexed": {
            "type": "boolean"
          },
          "internalType": {},
          "components": {
            "items": {
              "type": "object",
              "description": "Nested ABI component — same shape as AbiType (recursion truncated for rendering)."
            },
            "type": "array"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "Pick_JsonFragmentType.Exclude_keyofJsonFragmentType.components__": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "indexed": {
            "type": "boolean"
          },
          "internalType": {}
        },
        "type": "object",
        "description": "From T, pick a set of properties whose keys are in the union K"
      },
      "Pick_JsonFragment.Exclude_keyofJsonFragment.inputs-or-outputs__": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "anonymous": {
            "type": "boolean"
          },
          "payable": {
            "type": "boolean"
          },
          "constant": {
            "type": "boolean"
          },
          "stateMutability": {
            "type": "string"
          },
          "gas": {
            "type": "string"
          }
        },
        "type": "object",
        "description": "From T, pick a set of properties whose keys are in the union K"
      },
      "Abi": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "anonymous": {
            "type": "boolean"
          },
          "payable": {
            "type": "boolean"
          },
          "constant": {
            "type": "boolean"
          },
          "stateMutability": {
            "type": "string"
          },
          "gas": {
            "type": "string"
          },
          "inputs": {
            "items": {
              "$ref": "#/components/schemas/AbiType"
            },
            "type": "array"
          },
          "outputs": {
            "items": {
              "$ref": "#/components/schemas/AbiType"
            },
            "type": "array"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.CONTRACT": {
        "enum": [
          "contract"
        ],
        "type": "string",
        "x-enum-varnames": [
          "CONTRACT"
        ]
      },
      "ContractResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.CONTRACT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID."
          },
          "address": {
            "type": "string"
          },
          "deleted": {
            "type": "boolean"
          },
          "abi": {
            "items": {
              "$ref": "#/components/schemas/Abi"
            },
            "type": "array"
          },
          "publicVerification": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "name",
          "chainId",
          "address",
          "deleted",
          "abi",
          "publicVerification"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Pick_ContractResponse.id_": {
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "description": "From T, pick a set of properties whose keys are in the union K"
      },
      "ContractPolicyRuleResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY_RULE"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "$ref": "#/components/schemas/PolicyRuleType.CONTRACT"
          },
          "contract": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ContractResponse"
              },
              {
                "$ref": "#/components/schemas/Pick_ContractResponse.id_"
              }
            ]
          },
          "functionName": {
            "type": "string"
          },
          "wildcard": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "type",
          "wildcard"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyRuleType.ACCOUNT": {
        "enum": [
          "account_functions"
        ],
        "type": "string",
        "x-enum-varnames": [
          "ACCOUNT"
        ]
      },
      "AccountPolicyRuleResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY_RULE"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "$ref": "#/components/schemas/PolicyRuleType.ACCOUNT"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyRateLimit.GAS_PER_TRANSACTION": {
        "enum": [
          "gas_per_transaction"
        ],
        "type": "string",
        "x-enum-varnames": [
          "GAS_PER_TRANSACTION"
        ]
      },
      "PolicyRuleType.RATE_LIMIT": {
        "enum": [
          "rate_limit"
        ],
        "type": "string",
        "x-enum-varnames": [
          "RATE_LIMIT"
        ]
      },
      "PolicyRateLimit": {
        "enum": [
          "gas_per_transaction",
          "gas_per_interval",
          "count_per_interval"
        ],
        "type": "string",
        "x-enum-varnames": [
          "GAS_PER_TRANSACTION",
          "GAS_PER_INTERVAL",
          "COUNT_PER_INTERVAL"
        ]
      },
      "GasPerTransactionLimitPolicyRuleResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY_RULE"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "$ref": "#/components/schemas/PolicyRuleType.RATE_LIMIT"
          },
          "functionName": {
            "$ref": "#/components/schemas/PolicyRateLimit.GAS_PER_TRANSACTION"
          },
          "gasLimit": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "type",
          "functionName",
          "gasLimit"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyRateLimit.GAS_PER_INTERVAL": {
        "enum": [
          "gas_per_interval"
        ],
        "type": "string",
        "x-enum-varnames": [
          "GAS_PER_INTERVAL"
        ]
      },
      "TimeIntervalType": {
        "enum": [
          "minute",
          "hour",
          "day",
          "week",
          "month"
        ],
        "type": "string",
        "x-enum-varnames": [
          "MINUTE",
          "HOUR",
          "DAY",
          "WEEK",
          "MONTH"
        ]
      },
      "GasPerIntervalLimitPolicyRuleResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY_RULE"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "$ref": "#/components/schemas/PolicyRuleType.RATE_LIMIT"
          },
          "functionName": {
            "$ref": "#/components/schemas/PolicyRateLimit.GAS_PER_INTERVAL"
          },
          "gasLimit": {
            "type": "string"
          },
          "timeIntervalType": {
            "$ref": "#/components/schemas/TimeIntervalType"
          },
          "timeIntervalValue": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "type",
          "functionName",
          "gasLimit",
          "timeIntervalType",
          "timeIntervalValue"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyRateLimit.COUNT_PER_INTERVAL": {
        "enum": [
          "count_per_interval"
        ],
        "type": "string",
        "x-enum-varnames": [
          "COUNT_PER_INTERVAL"
        ]
      },
      "CountPerIntervalLimitPolicyRuleResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY_RULE"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "$ref": "#/components/schemas/PolicyRuleType.RATE_LIMIT"
          },
          "functionName": {
            "$ref": "#/components/schemas/PolicyRateLimit.COUNT_PER_INTERVAL"
          },
          "countLimit": {
            "type": "integer",
            "format": "int32"
          },
          "timeIntervalType": {
            "$ref": "#/components/schemas/TimeIntervalType"
          },
          "timeIntervalValue": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "type",
          "functionName",
          "countLimit",
          "timeIntervalType",
          "timeIntervalValue"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyRuleResponse": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ContractPolicyRuleResponse"
          },
          {
            "$ref": "#/components/schemas/AccountPolicyRuleResponse"
          },
          {
            "$ref": "#/components/schemas/GasPerTransactionLimitPolicyRuleResponse"
          },
          {
            "$ref": "#/components/schemas/GasPerIntervalLimitPolicyRuleResponse"
          },
          {
            "$ref": "#/components/schemas/CountPerIntervalLimitPolicyRuleResponse"
          }
        ]
      },
      "PolicyRuleListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/PolicyRuleResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyRuleListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "expand": {
            "items": {
              "type": "string",
              "enum": [
                "contract"
              ],
              "nullable": false
            },
            "type": "array",
            "description": "Specifies the fields to expand in the response."
          },
          "policy": {
            "type": "string",
            "description": "Specifies the unique policy ID (starts with pol_).",
            "example": "pol_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        },
        "required": [
          "policy"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreatePolicyRuleRequest": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/PolicyRuleType",
            "description": "The type of rule to add.",
            "example": "account_functions"
          },
          "functionName": {
            "type": "string",
            "description": "Name of the function in the contract to allow. If you want to allow all functions, use the wildcard 'All functions'.",
            "example": "All functions"
          },
          "contract": {
            "type": "string",
            "description": "The contract ID you want to interact with. Must have been added to Openfort first, starts with `con_`.",
            "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
          },
          "wildcard": {
            "type": "boolean",
            "description": "When using `contract_functions` type, set this to `true` to allow all contracts.",
            "example": true
          },
          "gasLimit": {
            "type": "string",
            "description": "Gas limit in WEI (i.e. factor 10^18).",
            "example": "1000000000000000000"
          },
          "countLimit": {
            "type": "integer",
            "format": "int32",
            "description": "Number of times the function will be sponsored.",
            "example": 1
          },
          "timeIntervalType": {
            "$ref": "#/components/schemas/TimeIntervalType",
            "description": "Time interval between sponsorships."
          },
          "timeIntervalValue": {
            "type": "integer",
            "format": "int32",
            "description": "Time interval value.",
            "example": 1
          },
          "policy": {
            "type": "string",
            "description": "The unique Policy ID to add the rule to (starts with pol_).",
            "example": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
          }
        },
        "required": [
          "type",
          "policy"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdatePolicyRuleRequest": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/PolicyRuleType",
            "description": "The type of rule to add.",
            "example": "account_functions"
          },
          "functionName": {
            "type": "string",
            "description": "Name of the function in the contract to allow. If you want to allow all functions, use the wildcard 'All functions'.",
            "example": "All functions"
          },
          "contract": {
            "type": "string",
            "description": "The contract ID you want to interact with. Must have been added to Openfort first, starts with `con_`.",
            "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
          },
          "wildcard": {
            "type": "boolean",
            "description": "When using `contract_functions` type, set this to `true` to allow all contracts.",
            "example": true
          },
          "gasLimit": {
            "type": "string",
            "description": "Gas limit in WEI (i.e. factor 10^18).",
            "example": "1000000000000000000"
          },
          "countLimit": {
            "type": "integer",
            "format": "int32",
            "description": "Number of times the function will be sponsored.",
            "example": 1
          },
          "timeIntervalType": {
            "$ref": "#/components/schemas/TimeIntervalType",
            "description": "Time interval between sponsorships."
          },
          "timeIntervalValue": {
            "type": "integer",
            "format": "int32",
            "description": "Time interval value.",
            "example": 1
          }
        },
        "required": [
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyRuleDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY_RULE"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "deleted": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID."
          },
          "paymaster": {
            "$ref": "#/components/schemas/EntityIdResponse"
          },
          "forwarderContract": {
            "$ref": "#/components/schemas/EntityIdResponse"
          },
          "strategy": {
            "$ref": "#/components/schemas/PolicyStrategy"
          },
          "transactionIntents": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TransactionIntent"
                },
                {
                  "$ref": "#/components/schemas/EntityIdResponse"
                }
              ]
            },
            "type": "array"
          },
          "policyRules": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PolicyRuleResponse"
                },
                {
                  "$ref": "#/components/schemas/EntityIdResponse"
                }
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "name",
          "deleted",
          "enabled",
          "chainId",
          "strategy",
          "transactionIntents",
          "policyRules"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/PolicyResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyResponseExpandable": {
        "type": "string",
        "enum": [
          "transactionIntents",
          "policyRules"
        ],
        "nullable": false
      },
      "PolicyListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "expand": {
            "items": {
              "$ref": "#/components/schemas/PolicyResponseExpandable"
            },
            "type": "array",
            "description": "Specifies the fields to expand in the response."
          },
          "name": {
            "type": "string",
            "description": "Specifies the name of the policy.",
            "example": "MyPolicy"
          },
          "deleted": {
            "type": "boolean",
            "description": "Specifies whether to include deleted policies.",
            "example": true
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID of the policy.",
            "example": 80002
          },
          "enabled": {
            "type": "boolean",
            "description": "Specifies whether to include enabled policies.",
            "example": true
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PolicyStrategyRequest": {
        "properties": {
          "sponsorSchema": {
            "$ref": "#/components/schemas/SponsorSchema",
            "description": "The sponsor schema of the policy.",
            "example": "fixed_rate"
          },
          "tokenContract": {
            "type": "string",
            "description": "If the user pays in custom tokens, the contract ID (starts with con_) of the token contract.",
            "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
          },
          "tokenContractAmount": {
            "type": "string",
            "description": "If the user pays in ERC20 tokens, this reflects either the exchange rate or the amount in WEI.",
            "example": "1000000000000000000"
          },
          "depositor": {
            "type": "string",
            "description": "If the you want to use your own native tokens to pay for gas, specify the developer account ID (starts with dac_)"
          }
        },
        "required": [
          "sponsorSchema"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreatePolicyRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Specifies the name of the policy.",
            "example": "My Policy"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "strategy": {
            "$ref": "#/components/schemas/PolicyStrategyRequest",
            "description": "The sponsor schema of the policy."
          },
          "paymaster": {
            "type": "string",
            "description": "The ID of the paymaster.",
            "example": "pay_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "forwarderContract": {
            "type": "string",
            "description": "The ID of the forwarder contract.",
            "example": "cfo_f0f89cf2-c185-40f4-beef-2a250d7a472b"
          }
        },
        "required": [
          "name",
          "chainId",
          "strategy"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdatePolicyRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Specifies the name of the policy.",
            "example": "My Policy"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "strategy": {
            "$ref": "#/components/schemas/PolicyStrategyRequest",
            "description": "The sponsor schema of the policy."
          },
          "paymaster": {
            "type": "string",
            "description": "The ID of the paymaster.",
            "example": "pay_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "forwarderContract": {
            "type": "string",
            "description": "The ID of the forwarder contract.",
            "example": "cfo_f0f89cf2-c185-40f4-beef-2a250d7a472b"
          },
          "deleted": {
            "type": "boolean",
            "description": "Specifies whether to delete the policy.",
            "example": false
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PolicyDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MonthRange": {
        "properties": {
          "start": {
            "type": "number",
            "format": "double"
          },
          "end": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "start",
          "end"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "GasReportTransactionIntents": {
        "properties": {
          "totalTransactionFee": {
            "type": "string"
          },
          "totalTransactionFeeInUSD": {
            "type": "string"
          },
          "transactionCount": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "totalTransactionFee",
          "totalTransactionFeeInUSD",
          "transactionCount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "GasReport": {
        "properties": {
          "period": {
            "$ref": "#/components/schemas/MonthRange"
          },
          "averageTransactionFee": {
            "type": "string"
          },
          "totalTransactionFeeInCustomTokens": {
            "type": "string"
          },
          "totalTransactionFeeInUSD": {
            "type": "string"
          },
          "transactionIntents": {
            "items": {
              "$ref": "#/components/schemas/GasReportTransactionIntents"
            },
            "type": "array",
            "deprecated": true
          }
        },
        "required": [
          "period",
          "averageTransactionFee",
          "totalTransactionFeeInCustomTokens",
          "totalTransactionFeeInUSD",
          "transactionIntents"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "GasReportListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/GasReport"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyReportQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "GasReportTransactionIntentsListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/GasReportTransactionIntents"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyReportTransactionIntentsQueries": {
        "properties": {
          "to": {
            "type": "number",
            "format": "double",
            "description": "The start date of the period in unix timestamp.",
            "example": 1612137600
          },
          "from": {
            "type": "number",
            "format": "double",
            "description": "The end date of the period in unix timestamp.",
            "example": 1612137600
          }
        },
        "required": [
          "to",
          "from"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyBalanceWithdrawResponse": {
        "properties": {
          "policy": {
            "type": "string"
          },
          "balance": {
            "type": "string"
          },
          "contract": {
            "type": "string"
          }
        },
        "required": [
          "policy",
          "balance",
          "contract"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "WithdrawalPolicyRequest": {
        "properties": {
          "account": {
            "type": "string",
            "description": "ID of the Dev Account this TransactionIntent will send the specified amount of tokens to (starts with `dac_`).",
            "example": "dac_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
          },
          "amount": {
            "type": "string",
            "description": "Amount in WEI to withdraw (i.e. factor 10^18)..",
            "example": "300000"
          }
        },
        "required": [
          "account",
          "amount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PlayerResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PLAYER"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/PlayerMetadata"
          },
          "transactionIntents": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TransactionIntent"
                },
                {
                  "$ref": "#/components/schemas/EntityIdResponse"
                }
              ]
            },
            "type": "array"
          },
          "accounts": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/Account"
                },
                {
                  "$ref": "#/components/schemas/EntityIdResponse"
                }
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PlayerListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/PlayerResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PlayerResponseExpandable": {
        "type": "string",
        "enum": [
          "transactionIntents",
          "accounts"
        ],
        "nullable": false
      },
      "PlayerListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "expand": {
            "items": {
              "$ref": "#/components/schemas/PlayerResponseExpandable"
            },
            "type": "array",
            "description": "Specifies the fields to expand in the response."
          },
          "name": {
            "type": "string",
            "description": "Filter by player name.",
            "example": "John"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PlayerCreateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Specifies the player name.",
            "example": "John",
            "minLength": 1,
            "maxLength": 256
          },
          "description": {
            "type": "string",
            "description": "Specifies the player description.",
            "example": "a useful description"
          },
          "metadata": {
            "$ref": "#/components/schemas/PlayerMetadata",
            "description": "Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PlayerUpdateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Specifies the player name.",
            "example": "John",
            "minLength": 1,
            "maxLength": 256
          },
          "description": {
            "type": "string",
            "description": "Specifies the player description.",
            "example": "a useful description"
          },
          "metadata": {
            "$ref": "#/components/schemas/PlayerMetadata",
            "description": "Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PlayerDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PLAYER"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PlayerTransferOwnershipRequest": {
        "properties": {
          "policy": {
            "type": "string",
            "description": "ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). A policy must be provided.",
            "example": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "newOwnerAddress": {
            "type": "string",
            "description": "The address of the new owner",
            "example": "0x1234567890abcdef1234567890abcdef12345678"
          },
          "player": {
            "type": "string",
            "description": "ID of the Player that has the Account you want to transfer ownership from (starts with `pla_`).",
            "example": "pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          }
        },
        "required": [
          "policy",
          "chainId",
          "newOwnerAddress"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PlayerCancelTransferOwnershipRequest": {
        "properties": {
          "policy": {
            "type": "string",
            "description": "ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). A policy must be provided.",
            "example": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          }
        },
        "required": [
          "policy",
          "chainId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.PAYMASTER": {
        "enum": [
          "paymaster"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PAYMASTER"
        ]
      },
      "PaymasterResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PAYMASTER"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "address": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "context": {
            "additionalProperties": false,
            "type": "object"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "address"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreatePaymasterResponse": {
        "$ref": "#/components/schemas/PaymasterResponse"
      },
      "CreatePaymasterRequest": {
        "properties": {
          "address": {
            "type": "string",
            "description": "Specifies the address of the paymaster",
            "example": "0x7d526b7e99fbf52850a183..."
          },
          "url": {
            "type": "string",
            "description": "Specifies the paymaster URL",
            "example": "https://rpc.mypaymaster.xyz"
          },
          "context": {
            "additionalProperties": false,
            "type": "object",
            "description": "Specifies the context, that is, the arbitrary repositories that the specific paymaster may require",
            "example": {
              "key": "value"
            }
          },
          "name": {
            "type": "string",
            "description": "Specifies the name of the paymaster"
          }
        },
        "required": [
          "address"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PagingQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PaymasterDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PAYMASTER"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampProvider": {
        "enum": [
          "coinbase",
          "stripe"
        ],
        "type": "string",
        "x-enum-varnames": [
          "COINBASE",
          "STRIPE"
        ]
      },
      "OnrampFee": {
        "description": "Common fee structure for onramp operations",
        "properties": {
          "type": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "amount",
          "currency"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampSessionResponse": {
        "description": "Common unified response format for creating an onramp session.\nThis format is provider-agnostic.",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/OnrampProvider"
          },
          "sessionId": {
            "type": "string"
          },
          "clientSecret": {
            "type": "string"
          },
          "publishableKey": {
            "type": "string",
            "description": "Provider publishable key the embedded component initializes with (public by design)."
          },
          "status": {
            "type": "string"
          },
          "onrampUrl": {
            "type": "string"
          },
          "redirectUrl": {
            "type": "string"
          },
          "quote": {
            "properties": {
              "exchangeRate": {
                "type": "string"
              },
              "fees": {
                "items": {
                  "$ref": "#/components/schemas/OnrampFee"
                },
                "type": "array"
              },
              "destinationNetwork": {
                "type": "string"
              },
              "destinationCurrency": {
                "type": "string"
              },
              "destinationAmount": {
                "type": "string"
              },
              "sourceCurrency": {
                "type": "string"
              },
              "sourceAmount": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "required": [
          "provider",
          "onrampUrl"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampSessionRequest": {
        "description": "Common unified request format for creating an onramp session.\nThis format is provider-agnostic and will be adapted by each provider service.",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/OnrampProvider"
          },
          "destinationCurrency": {
            "type": "string"
          },
          "destinationNetwork": {
            "type": "string"
          },
          "destinationAddress": {
            "type": "string"
          },
          "sourceAmount": {
            "type": "string"
          },
          "sourceCurrency": {
            "type": "string"
          },
          "redirectUrl": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "subdivision": {
            "type": "string"
          },
          "paymentMethod": {
            "type": "string"
          },
          "clientIp": {
            "type": "string"
          }
        },
        "required": [
          "provider",
          "destinationCurrency",
          "destinationNetwork",
          "destinationAddress"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampQuoteResponse": {
        "description": "Common unified response format for getting an onramp quote.\nThis format is provider-agnostic.",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/OnrampProvider"
          },
          "sourceAmount": {
            "type": "string"
          },
          "sourceCurrency": {
            "type": "string"
          },
          "destinationAmount": {
            "type": "string"
          },
          "destinationCurrency": {
            "type": "string"
          },
          "destinationNetwork": {
            "type": "string"
          },
          "fees": {
            "items": {
              "$ref": "#/components/schemas/OnrampFee"
            },
            "type": "array"
          },
          "exchangeRate": {
            "type": "string"
          }
        },
        "required": [
          "provider",
          "sourceAmount",
          "sourceCurrency",
          "destinationAmount",
          "destinationCurrency",
          "destinationNetwork",
          "fees",
          "exchangeRate"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampQuotesResponse": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/OnrampQuoteResponse"
          },
          {
            "items": {
              "$ref": "#/components/schemas/OnrampQuoteResponse"
            },
            "type": "array"
          }
        ],
        "description": "Response type for quote requests that can return either a single quote or multiple quotes.\n- Returns OnrampQuoteResponse when provider is specified\n- Returns OnrampQuoteResponse[] when provider is not specified"
      },
      "OnrampQuoteRequest": {
        "description": "Common unified request format for getting an onramp quote.\nThis format is provider-agnostic and will be adapted by each provider service.\nIf provider is specified, returns a single quote for that provider.\nIf provider is not specified, returns quotes from all available providers.",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/OnrampProvider"
          },
          "sourceCurrency": {
            "type": "string"
          },
          "destinationCurrency": {
            "type": "string"
          },
          "destinationNetwork": {
            "type": "string"
          },
          "sourceAmount": {
            "type": "string"
          },
          "destinationAddress": {
            "type": "string",
            "description": "Where the funds would land. Optional because a quote doesn't move money,\nbut a provider may still validate the address against the destination\nnetwork — so pass the session's real one wherever it is known."
          },
          "paymentMethod": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "subdivision": {
            "type": "string"
          }
        },
        "required": [
          "sourceCurrency",
          "destinationCurrency",
          "destinationNetwork",
          "sourceAmount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MePermissionsResponse": {
        "properties": {
          "isStaff": {
            "type": "boolean",
            "description": "True when the authenticated user is an Openfort staff member."
          }
        },
        "required": [
          "isStaff"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Log": {
        "properties": {
          "id": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          },
          "event": {
            "type": "string"
          },
          "request_body": {},
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "response_time": {
            "type": "integer",
            "format": "int32"
          },
          "response_data": {}
        },
        "required": [
          "id",
          "timestamp",
          "event",
          "request_body",
          "status",
          "response_time",
          "response_data"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ProjectLogs": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/Log"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.FORWARDER_CONTRACT": {
        "enum": [
          "forwarderContract"
        ],
        "type": "string",
        "x-enum-varnames": [
          "FORWARDER_CONTRACT"
        ]
      },
      "ForwarderContractResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.FORWARDER_CONTRACT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "address": {
            "type": "string"
          },
          "chainId": {
            "type": "number",
            "format": "double"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "address",
          "chainId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateForwarderContractResponse": {
        "$ref": "#/components/schemas/ForwarderContractResponse"
      },
      "CreateForwarderContractRequest": {
        "properties": {
          "address": {
            "type": "string",
            "description": "Specifies the address of the paymaster",
            "example": "0x7d526b7e99fbf52850a183..."
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "name": {
            "type": "string",
            "description": "Specifies the name of the paymaster"
          }
        },
        "required": [
          "address",
          "chainId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ForwarderContractDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.FORWARDER_CONTRACT"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "APITopic.BALANCE_CONTRACT": {
        "enum": [
          "balance.contract"
        ],
        "type": "string",
        "x-enum-varnames": [
          "BALANCE_CONTRACT"
        ]
      },
      "EntityType.EVENT": {
        "enum": [
          "event"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EVENT"
        ]
      },
      "ContractEventResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.EVENT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "topic": {
            "$ref": "#/components/schemas/APITopic.BALANCE_CONTRACT"
          },
          "threshold": {
            "type": "string"
          },
          "contract": {
            "$ref": "#/components/schemas/EntityIdResponse"
          },
          "functionName": {
            "type": "string"
          },
          "functionArgs": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "topic",
          "threshold",
          "contract",
          "functionName",
          "functionArgs"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "APITopic.BALANCE_DEV_ACCOUNT": {
        "enum": [
          "balance.dev_account"
        ],
        "type": "string",
        "x-enum-varnames": [
          "BALANCE_DEV_ACCOUNT"
        ]
      },
      "AccountEventResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.EVENT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "topic": {
            "$ref": "#/components/schemas/APITopic.BALANCE_DEV_ACCOUNT"
          },
          "threshold": {
            "type": "string"
          },
          "developerAccount": {
            "$ref": "#/components/schemas/EntityIdResponse"
          },
          "chainId": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "topic",
          "threshold",
          "developerAccount",
          "chainId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "APITopic.BALANCE_PROJECT": {
        "enum": [
          "balance.project"
        ],
        "type": "string",
        "x-enum-varnames": [
          "BALANCE_PROJECT"
        ]
      },
      "BalanceEventResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.EVENT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "topic": {
            "$ref": "#/components/schemas/APITopic.BALANCE_PROJECT"
          },
          "threshold": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "topic",
          "threshold"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "APITopic.TRANSACTION_SUCCESSFUL": {
        "enum": [
          "transaction_intent.successful"
        ],
        "type": "string",
        "x-enum-varnames": [
          "TRANSACTION_SUCCESSFUL"
        ]
      },
      "TransactionConfirmedEventResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.EVENT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "topic": {
            "$ref": "#/components/schemas/APITopic.TRANSACTION_SUCCESSFUL"
          },
          "numberOfBlocks": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "topic",
          "numberOfBlocks"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EventResponse": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ContractEventResponse"
          },
          {
            "$ref": "#/components/schemas/AccountEventResponse"
          },
          {
            "$ref": "#/components/schemas/BalanceEventResponse"
          },
          {
            "$ref": "#/components/schemas/TransactionConfirmedEventResponse"
          }
        ]
      },
      "EventListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/EventResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EventListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "name": {
            "type": "string",
            "description": "Specifies the name of the event",
            "example": "Event Name"
          },
          "deleted": {
            "type": "boolean",
            "description": "Specifies if display deleted events",
            "example": false
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "GetEventResponse": {
        "$ref": "#/components/schemas/EventResponse"
      },
      "CreateEventResponse": {
        "$ref": "#/components/schemas/EventResponse"
      },
      "CreateEventRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Specifies the name of the event",
            "example": "Event Name"
          },
          "topic": {
            "$ref": "#/components/schemas/APITopic",
            "description": "Specifies the type of the event (transaction_intent.successful, balance.project, balance.contract, balance.dev_account)",
            "example": "balance.project"
          },
          "contract": {
            "type": "string",
            "description": "Specifies the contract id (if the event is a contract event)",
            "example": "con_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "functionArgs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Specifies the function arguments (if the event is a contract event)",
            "example": [
              "arg1",
              "arg2"
            ]
          },
          "functionName": {
            "type": "string",
            "description": "Specifies the function name (if the event is a contract event)",
            "example": "functionName"
          },
          "developerAccount": {
            "type": "string",
            "description": "Specifies the developer account id (if the event is a developer account event)",
            "example": "dev_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "chainId": {
            "type": "number",
            "format": "double",
            "description": "Specifies the chain id (if the event is a developer account event)",
            "example": 80001
          },
          "threshold": {
            "type": "string",
            "description": "Threshold for the event (if the event is a contract, dev account or project event)"
          },
          "numberOfBlocks": {
            "type": "number",
            "format": "double",
            "description": "Specifies the number of confirmations required for the event to trigger",
            "example": 10,
            "default": 5
          }
        },
        "required": [
          "name",
          "topic"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EventDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.EVENT"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EmbeddedResponse": {
        "properties": {
          "share": {
            "type": "string"
          },
          "accountType": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "chainId": {
            "type": "number",
            "format": "double"
          },
          "deviceId": {
            "type": "string"
          }
        },
        "required": [
          "share",
          "accountType",
          "address",
          "chainId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EmbeddedNextActionResponse": {
        "properties": {
          "nextAction": {
            "type": "string",
            "enum": [
              "RECOVER",
              "REGISTER"
            ]
          },
          "player": {
            "type": "string"
          },
          "embedded": {
            "$ref": "#/components/schemas/EmbeddedResponse"
          }
        },
        "required": [
          "nextAction",
          "player"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "InitEmbeddedRequest": {
        "properties": {
          "chainId": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "chainId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EmbeddedV2Response": {
        "properties": {
          "share": {
            "type": "string"
          },
          "accountType": {
            "type": "string"
          },
          "implementationType": {
            "type": "string"
          },
          "implementationAddress": {
            "type": "string"
          },
          "factoryAddress": {
            "type": "string"
          },
          "salt": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "ownerAddress": {
            "type": "string"
          },
          "chainType": {
            "type": "string"
          },
          "chainId": {
            "type": "number",
            "format": "double"
          },
          "device": {
            "type": "string"
          },
          "account": {
            "type": "string"
          },
          "signer": {
            "type": "string"
          }
        },
        "required": [
          "accountType",
          "address",
          "ownerAddress",
          "chainType",
          "account",
          "signer"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RegisterEmbeddedRequest": {
        "properties": {
          "chainId": {
            "type": "number",
            "format": "double"
          },
          "address": {
            "type": "string"
          },
          "share": {
            "type": "string"
          },
          "signerUuid": {
            "type": "string"
          }
        },
        "required": [
          "chainId",
          "address",
          "share"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SwitchChainRequest": {
        "properties": {
          "chainId": {
            "type": "number",
            "format": "double"
          },
          "deviceId": {
            "type": "string"
          }
        },
        "required": [
          "chainId",
          "deviceId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ExportedEmbeddedRequest": {
        "properties": {
          "address": {
            "type": "string"
          }
        },
        "required": [
          "address"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.DEVICE": {
        "enum": [
          "device"
        ],
        "type": "string",
        "x-enum-varnames": [
          "DEVICE"
        ]
      },
      "DeviceResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.DEVICE"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "account": {
            "type": "string"
          },
          "share": {
            "type": "string"
          },
          "isPrimary": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "account",
          "share",
          "isPrimary"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BaseEntityListResponse_DeviceResponse_": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/DeviceResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DeviceListResponse": {
        "$ref": "#/components/schemas/BaseEntityListResponse_DeviceResponse_"
      },
      "DeviceListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "account": {
            "type": "string",
            "description": "Specifies the unique account ID (starts with acc_)",
            "example": "acc_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          }
        },
        "required": [
          "account"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "GetDeviceResponse": {
        "$ref": "#/components/schemas/DeviceResponse"
      },
      "CreateDeviceResponse": {
        "$ref": "#/components/schemas/DeviceResponse"
      },
      "CreateDeviceRequest": {
        "properties": {
          "account": {
            "type": "string",
            "description": "Specifies the unique account ID (starts with acc_)",
            "example": "acc_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "share": {
            "type": "string",
            "description": "Specifies the share repositories",
            "example": "7d526b7e99fbf52850a183..."
          }
        },
        "required": [
          "account",
          "share"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ContractListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/ContractResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ContractListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "name": {
            "type": "string",
            "description": "Specifies the name of the contract.",
            "example": "NFT Contract"
          },
          "deleted": {
            "type": "boolean",
            "description": "Specifies whether to include deleted contracts.",
            "example": false
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID of the contract.",
            "example": 80002
          },
          "address": {
            "type": "string",
            "description": "Specifies the address of the contract.",
            "example": "0x742e6e61d760164d56f44801054bcf40fa821d97"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "CreateContractRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Specifies the name of the contract (Only for display purposes).",
            "example": "NFT Contract"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the chain ID of the contract. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "address": {
            "type": "string",
            "description": "Specifies the address of the contract.",
            "example": "0x742e6e61d760164d56f44801054bcf40fa821d97"
          },
          "abi": {
            "items": {
              "$ref": "#/components/schemas/Abi"
            },
            "type": "array",
            "description": "Specifies the ABI of the contract.",
            "example": [
              {
                "inputs": [
                  {
                    "internalType": "address",
                    "name": "_owner",
                    "type": "address"
                  }
                ],
                "stateMutability": "nonpayable",
                "type": "constructor"
              },
              {
                "inputs": [],
                "name": "owner",
                "outputs": [
                  {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                  }
                ],
                "stateMutability": "view",
                "type": "function"
              }
            ]
          },
          "publicVerification": {
            "type": "boolean",
            "description": "Specifies whether to verify the contract publicly.",
            "example": false
          }
        },
        "required": [
          "name",
          "chainId",
          "address"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateContractRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Specifies the name of the contract (Only for display purposes).",
            "example": "NFT Contract"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the chain ID of the contract. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "deleted": {
            "type": "boolean",
            "description": "Specifies whether to delete the contract.",
            "example": false
          },
          "address": {
            "type": "string",
            "description": "Specifies the address of the contract.",
            "example": "0x1234567890abcdef1234567890abcdef12345678"
          },
          "abi": {
            "items": {
              "$ref": "#/components/schemas/Abi"
            },
            "type": "array",
            "description": "Specifies the ABI of the contract.",
            "example": [
              {
                "inputs": [
                  {
                    "internalType": "address",
                    "name": "_owner",
                    "type": "address"
                  }
                ],
                "stateMutability": "nonpayable",
                "type": "constructor"
              },
              {
                "inputs": [],
                "name": "owner",
                "outputs": [
                  {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                  }
                ],
                "stateMutability": "view",
                "type": "function"
              }
            ]
          },
          "publicVerification": {
            "type": "boolean",
            "description": "Specifies whether to verify the contract publicly.",
            "example": false
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.READCONTRACT": {
        "enum": [
          "readContract"
        ],
        "type": "string",
        "x-enum-varnames": [
          "READCONTRACT"
        ]
      },
      "ContractReadResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.READCONTRACT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "functionName": {
            "type": "string"
          },
          "result": {}
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "functionName",
          "result"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ContractReadQueries": {
        "properties": {
          "functionName": {
            "type": "string",
            "description": "The function name of the contract.",
            "example": "mint"
          },
          "functionArgs": {
            "items": {},
            "type": "array",
            "description": "The function arguments of the contract, in string format. Accepts pla_, con_ and acc_ IDs.",
            "example": [
              "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
            ]
          }
        },
        "required": [
          "functionName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ContractDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.CONTRACT"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AccountResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.ACCOUNT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "address": {
            "type": "string"
          },
          "ownerAddress": {
            "type": "string"
          },
          "deployed": {
            "type": "boolean"
          },
          "custodial": {
            "type": "boolean"
          },
          "embeddedSigner": {
            "type": "boolean"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID."
          },
          "accountType": {
            "type": "string"
          },
          "pendingOwnerAddress": {
            "type": "string"
          },
          "transactionIntents": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TransactionIntent"
                },
                {
                  "$ref": "#/components/schemas/EntityIdResponse"
                }
              ]
            },
            "type": "array"
          },
          "player": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EntityIdResponse"
              },
              {
                "$ref": "#/components/schemas/Player"
              }
            ]
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "address",
          "ownerAddress",
          "deployed",
          "custodial",
          "embeddedSigner",
          "chainId",
          "accountType",
          "player"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AccountListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/AccountResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AccountResponseExpandable": {
        "type": "string",
        "enum": [
          "player",
          "transactionIntents"
        ],
        "nullable": false
      },
      "AccountListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "player": {
            "type": "string",
            "description": "Specifies the unique player ID (starts with pla_)",
            "example": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "address": {
            "type": "string",
            "description": "Specifies the address of the account",
            "example": "0x9590Ed0C18190a310f4e93CAccc4CC17270bED40"
          },
          "expand": {
            "items": {
              "$ref": "#/components/schemas/AccountResponseExpandable"
            },
            "type": "array",
            "description": "Specifies the fields to expand in the response.",
            "example": [
              "transactionIntents"
            ]
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "CreateAccountRequest": {
        "properties": {
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "externalOwnerAddress": {
            "type": "string",
            "description": "Use this parameter to create a new Account for Player with the provided owner address.",
            "example": "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
          },
          "accountType": {
            "type": "string",
            "description": "The type of smart account that will be created (e.g. UpgradeableV6, UpgradeableV5, Simple). Defaults to UpgradeableV6.",
            "example": "UpgradeableV6"
          },
          "defaultGuardian": {
            "type": "boolean",
            "description": "For account types that support social recovery, wether to enable Openfort as guardian or not. Defaults to false.",
            "example": "true"
          },
          "player": {
            "type": "string",
            "description": "ID of the player this account belongs to (starts with `pla_`). If none is provided, a new player will be created.",
            "example": "pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          }
        },
        "required": [
          "chainId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthProviderResponseV2": {
        "type": "string",
        "enum": [
          "credential",
          "email",
          "wallet",
          "google",
          "apple",
          "twitter",
          "discord",
          "facebook",
          "custom",
          "oidc",
          "siwe"
        ]
      },
      "LinkedAccountResponseV2": {
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/AuthProviderResponseV2"
          },
          "createdAt": {
            "type": "number",
            "format": "double"
          },
          "updatedAt": {
            "type": "number",
            "format": "double"
          },
          "accountId": {
            "type": "string"
          },
          "chainType": {
            "type": "string"
          },
          "connectorType": {
            "type": "string"
          },
          "walletClientType": {
            "type": "string"
          }
        },
        "required": [
          "provider",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthUserResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "createdAt": {
            "type": "number",
            "format": "double"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "emailVerified": {
            "type": "boolean"
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "phoneNumberVerified": {
            "type": "boolean"
          },
          "isAnonymous": {
            "type": "boolean"
          },
          "linkedAccounts": {
            "items": {
              "$ref": "#/components/schemas/LinkedAccountResponseV2"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "createdAt",
          "name",
          "email",
          "emailVerified",
          "phoneNumber",
          "phoneNumberVerified",
          "linkedAccounts"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BaseEntityListResponse_AuthUserResponse_": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/AuthUserResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserListResponse": {
        "$ref": "#/components/schemas/BaseEntityListResponse_AuthUserResponse_"
      },
      "UserListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "name": {
            "type": "string",
            "description": "Filter by user name.",
            "example": "John"
          },
          "externalUserId": {
            "type": "string",
            "description": "Filter by external user ID (accountId from linked accounts).",
            "example": "123454456687897"
          },
          "email": {
            "type": "string",
            "description": "Filter by user email.",
            "example": "user@example.com"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Filter by user phone number.",
            "example": "+1234567890"
          },
          "authProviderId": {
            "type": "string",
            "description": "Filter by provider ID (e.g., \"google\", \"apple\", \"siwe\", \"credential\").",
            "example": "google"
          },
          "walletClientType": {
            "type": "string",
            "description": "Filter by wallet client type (for SIWE accounts).",
            "example": "metamask"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.WALLET": {
        "enum": [
          "wallet"
        ],
        "type": "string",
        "x-enum-varnames": [
          "WALLET"
        ]
      },
      "BaseEntityResponse_EntityType.WALLET_": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.WALLET"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "WalletResponse": {
        "$ref": "#/components/schemas/BaseEntityResponse_EntityType.WALLET_"
      },
      "BaseDeleteEntityResponse_EntityType.PLAYER_": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PLAYER"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserDeleteResponse": {
        "$ref": "#/components/schemas/BaseDeleteEntityResponse_EntityType.PLAYER_"
      },
      "SmartAccountData": {
        "properties": {
          "implementationType": {
            "type": "string"
          },
          "factoryAddress": {
            "type": "string"
          },
          "implementationAddress": {
            "type": "string"
          },
          "salt": {
            "type": "string"
          },
          "deployedTx": {
            "type": "string"
          },
          "deployedAt": {
            "type": "number",
            "format": "double"
          },
          "active": {
            "type": "boolean"
          },
          "ownerAddress": {
            "type": "string"
          },
          "chainId": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "implementationType",
          "implementationAddress",
          "active"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PasskeyEnv": {
        "properties": {
          "name": {
            "type": "string"
          },
          "os": {
            "type": "string"
          },
          "osVersion": {
            "type": "string"
          },
          "device": {
            "type": "string"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "RecoveryMethodDetails": {
        "properties": {
          "passkeyId": {
            "type": "string"
          },
          "passkeyEnv": {
            "$ref": "#/components/schemas/PasskeyEnv"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PregenerateAccountEntry": {
        "properties": {
          "id": {
            "type": "string"
          },
          "wallet": {
            "type": "string"
          },
          "accountType": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "ownerAddress": {
            "type": "string"
          },
          "chainType": {
            "type": "string"
          },
          "chainId": {
            "type": "number",
            "format": "double"
          },
          "createdAt": {
            "type": "number",
            "format": "double"
          },
          "updatedAt": {
            "type": "number",
            "format": "double"
          },
          "smartAccount": {
            "$ref": "#/components/schemas/SmartAccountData"
          },
          "recoveryMethod": {
            "type": "string"
          },
          "recoveryMethodDetails": {
            "$ref": "#/components/schemas/RecoveryMethodDetails"
          },
          "custody": {
            "type": "string",
            "enum": [
              "Developer",
              "User"
            ],
            "description": "Indicates key custody: \"Developer\" for TEE managed keys, \"User\" for user-managed keys.",
            "example": "Developer"
          },
          "recoveryShare": {
            "type": "string",
            "description": "The recovery share for this embedded account's signer.\nThis should be stored securely and provided to the user for account recovery."
          },
          "signer": {
            "type": "string",
            "description": "The signer UUID (starts with `sig_`) backing this embedded account.\nUse this value as the `reference` when storing the recovery share with\nShield, so subsequent reads of the account can resolve the recovery\nmethod via the signer-reference lookup."
          }
        },
        "required": [
          "id",
          "wallet",
          "accountType",
          "address",
          "chainType",
          "createdAt",
          "updatedAt",
          "custody",
          "recoveryShare",
          "signer"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PregenerateUserResponseV2": {
        "properties": {
          "user": {
            "type": "string",
            "description": "User uuid (starts with `usr_`)."
          },
          "accounts": {
            "items": {
              "$ref": "#/components/schemas/PregenerateAccountEntry"
            },
            "type": "array",
            "description": "The embedded accounts that were pregenerated for this user,\nin the same order as the `accounts` array in the request."
          }
        },
        "required": [
          "user",
          "accounts"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThirdPartyOAuthProvider": {
        "description": "Enum of the supporting third party auth providers.",
        "enum": [
          "accelbyte",
          "firebase",
          "lootlocker",
          "playfab",
          "supabase",
          "custom",
          "oidc",
          "better-auth"
        ],
        "type": "string",
        "x-enum-varnames": [
          "ACCELBYTE",
          "FIREBASE",
          "LOOTLOCKER",
          "PLAYFAB",
          "SUPABASE",
          "CUSTOM",
          "OIDC",
          "BETTER_AUTH"
        ]
      },
      "PregenerateAccountConfig": {
        "properties": {
          "accountType": {
            "type": "string",
            "enum": [
              "Externally Owned Account",
              "Smart Account",
              "Delegated Account"
            ],
            "description": "The type of account to pregenerate. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".\nDefaults to \"Externally Owned Account\".",
            "example": "Externally Owned Account"
          },
          "chainType": {
            "type": "string",
            "enum": [
              "EVM",
              "SVM"
            ],
            "description": "The chain type. \"EVM\" or \"SVM\". Defaults to \"EVM\".",
            "example": "EVM"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Required for Smart Account and Delegated Account types.\nMust be a [supported chain](/docs/configuration/chains).",
            "example": 137
          },
          "implementationType": {
            "type": "string",
            "description": "The implementation type for Smart Account or Delegated Account (e.g. Calibur, UpgradeableV6).\nRequired for Smart Account and Delegated Account types.",
            "example": "Calibur"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PregenerateUserRequestV2": {
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user to pregenerate.\nRequired if thirdPartyUserId is not provided.",
            "example": "user@example.com"
          },
          "thirdPartyUserId": {
            "type": "string",
            "description": "The third-party user ID from an external auth provider (Firebase, Supabase, etc.).\nRequired if email is not provided.",
            "example": "firebase_uid_abc123"
          },
          "thirdPartyProvider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider",
            "description": "The third-party auth provider. Required when thirdPartyUserId is provided.",
            "example": "firebase"
          },
          "accounts": {
            "items": {
              "$ref": "#/components/schemas/PregenerateAccountConfig"
            },
            "type": "array",
            "description": "One or more embedded accounts to pregenerate for the user.\nEach entry produces its own key material and recovery share.\nUse this to pregenerate accounts on different chain types (e.g. EVM and SVM) in a single call.",
            "minItems": 1
          }
        },
        "required": [
          "accounts"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionStatusV2": {
        "enum": [
          "awaiting_signature",
          "submitted",
          "succeeded",
          "reverted",
          "failed"
        ],
        "type": "string",
        "x-enum-varnames": [
          "AWAITING_SIGNATURE",
          "SUBMITTED",
          "SUCCEEDED",
          "REVERTED",
          "FAILED"
        ]
      },
      "AccountV2Response": {
        "properties": {
          "id": {
            "type": "string"
          },
          "wallet": {
            "type": "string"
          },
          "accountType": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "ownerAddress": {
            "type": "string"
          },
          "chainType": {
            "type": "string"
          },
          "chainId": {
            "type": "number",
            "format": "double"
          },
          "createdAt": {
            "type": "number",
            "format": "double"
          },
          "updatedAt": {
            "type": "number",
            "format": "double"
          },
          "smartAccount": {
            "$ref": "#/components/schemas/SmartAccountData"
          },
          "recoveryMethod": {
            "type": "string"
          },
          "recoveryMethodDetails": {
            "$ref": "#/components/schemas/RecoveryMethodDetails"
          },
          "custody": {
            "type": "string",
            "enum": [
              "Developer",
              "User"
            ],
            "description": "Indicates key custody: \"Developer\" for TEE managed keys, \"User\" for user-managed keys.",
            "example": "Developer"
          }
        },
        "required": [
          "id",
          "wallet",
          "accountType",
          "address",
          "chainType",
          "createdAt",
          "updatedAt",
          "custody"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmTokenContractEntryResponse": {
        "description": "A single ERC-20 token entry returned in an EVM multi-token policy.",
        "properties": {
          "contract": {
            "type": "string",
            "description": "Token contract ID.",
            "example": "con_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "amount": {
            "type": "string",
            "description": "Static exchange rate, or undefined when the dynamic cached rate is used.",
            "example": "1000000000000000000"
          }
        },
        "required": [
          "contract"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FeeSponsorshipStrategyResponse": {
        "description": "Strategy information in fee sponsorship response.",
        "properties": {
          "sponsorSchema": {
            "type": "string",
            "description": "The sponsorship schema type.",
            "example": "pay_for_user"
          },
          "tokenContract": {
            "type": "string",
            "description": "Token contract ID for charge_custom_tokens or fixed_rate schemas (EVM).",
            "example": "con_48eeba57-2cd5-4159-a2cb-057a23a35e65",
            "deprecated": true
          },
          "tokenContractAmount": {
            "type": "string",
            "description": "Token amount for charge_custom_tokens or fixed_rate schemas (EVM).",
            "example": "1000000000000000000",
            "deprecated": true
          },
          "dynamicExchangeRate": {
            "type": "boolean",
            "description": "Whether any accepted token is priced dynamically from cached prices.\nTrue when at least one token has no static amount. For per-token detail,\nread the amount on each tokenContracts entry.",
            "example": true
          },
          "splTokens": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "SPL mint addresses accepted for fee payment on Solana\ncharge_custom_tokens policies.",
            "example": [
              "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
            ]
          },
          "tokenContracts": {
            "items": {
              "$ref": "#/components/schemas/EvmTokenContractEntryResponse"
            },
            "type": "array",
            "description": "ERC-20 tokens accepted as user-pay fee for EVM charge_custom_tokens policies.\nPopulated for both new (tokenContracts) and legacy (tokenContract) requests;\nlegacy single-token policies appear as a 1-element array here.",
            "example": [
              {
                "contract": "con_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                "amount": "1000000000000000000"
              }
            ]
          }
        },
        "required": [
          "sponsorSchema"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.FEE_SPONSORSHIP": {
        "enum": [
          "feeSponsorship"
        ],
        "type": "string",
        "x-enum-varnames": [
          "FEE_SPONSORSHIP"
        ]
      },
      "FeeSponsorshipResponse": {
        "description": "Fee sponsorship policy response.",
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.FEE_SPONSORSHIP"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Name of the fee sponsorship policy.",
            "example": "My DeFi Gas Sponsorship"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Description or comment for the fee sponsorship.",
            "example": "Sponsors gas for free-tier users"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Chain ID for single-chain sponsorship.",
            "example": 8453,
            "deprecated": true
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the policy is enabled.",
            "example": true
          },
          "strategy": {
            "$ref": "#/components/schemas/FeeSponsorshipStrategyResponse",
            "description": "Sponsorship strategy configuration."
          },
          "paymasterId": {
            "type": "string",
            "nullable": true,
            "description": "Paymaster ID (optional).",
            "example": "pay_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "forwarderContractId": {
            "type": "string",
            "nullable": true,
            "description": "Forwarder contract ID (optional, for meta-transactions).",
            "example": "cfo_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "policyId": {
            "type": "string",
            "nullable": true,
            "description": "Linked policy ID for criteria-based transaction filtering.",
            "example": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "name",
          "description",
          "chainId",
          "enabled",
          "strategy",
          "paymasterId",
          "forwarderContractId",
          "policyId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Call": {
        "description": "A single call executed by the transaction. Either a raw call (`to`/`value`/`data`)\nor a contract call resolved through a registered contract (`contractId`/`functionName`/`functionArgs`).",
        "properties": {
          "to": {
            "type": "string",
            "description": "The address that receives the call. Use *only* for raw calls and native token transfers; a\n`pla_...` or `acc_...` id is converted to the corresponding address.",
            "example": "0x3994801f2BF191D22aA60c2ce3728c4D0e856a7B"
          },
          "value": {
            "type": "string",
            "description": "The value sent with the call, as a stringified number in WEI (factor 10^18).",
            "example": "1000000000000000000"
          },
          "data": {
            "type": "string",
            "description": "Raw calldata (hex) for the call. Use instead of `contractId`/`functionName`."
          },
          "dataSuffix": {
            "type": "string",
            "description": "Hex data appended to the encoded function call."
          },
          "contractId": {
            "type": "string",
            "description": "ID of the contract the call interacts with. Must have been added to Openfort first, starts with `con_`.",
            "example": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35"
          },
          "functionName": {
            "type": "string",
            "description": "The function name of the contract. Accepts a function signature as well (e.g. mint(address)).",
            "example": "mint"
          },
          "functionArgs": {
            "items": {},
            "type": "array",
            "description": "The function arguments of the contract, formatted as strings."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "UserOperationExecution": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "userOperation"
            ],
            "nullable": false
          },
          "entryPointVersion": {
            "type": "string",
            "enum": [
              "0.6",
              "0.8",
              "0.9"
            ],
            "description": "ERC-4337 EntryPoint version the user operation targets.",
            "example": "0.8"
          },
          "userOperationHash": {
            "type": "string"
          },
          "userOperation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UserOperationV6"
              },
              {
                "$ref": "#/components/schemas/UserOperationV8"
              },
              {
                "$ref": "#/components/schemas/UserOperationV9"
              }
            ],
            "description": "The full user operation. Present only with `expand=userOperation`."
          }
        },
        "required": [
          "type",
          "entryPointVersion",
          "userOperationHash"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionExecution": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "transaction"
            ],
            "nullable": false
          },
          "from": {
            "type": "string",
            "example": "0x8ab66318aCC6b29A27e74e534bfe3ecf81C50387"
          },
          "to": {
            "type": "string"
          },
          "data": {
            "type": "string"
          },
          "value": {
            "type": "string",
            "description": "Value in wei.",
            "example": "1000000000000000000"
          },
          "nonce": {
            "type": "string",
            "example": "0"
          },
          "gas": {
            "type": "string",
            "example": "21000"
          },
          "maxFeePerGas": {
            "type": "string",
            "example": "1000000000"
          },
          "maxPriorityFeePerGas": {
            "type": "string",
            "example": "1000000000"
          }
        },
        "required": [
          "type",
          "from",
          "to",
          "nonce",
          "gas",
          "maxFeePerGas",
          "maxPriorityFeePerGas"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SignHashAction": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "sign_hash"
            ],
            "nullable": false
          },
          "hash": {
            "type": "string",
            "description": "Chain-agnostic hash to sign with the account's signer, then submit via `POST /v2/transactions/{id}/signature`.",
            "example": "0x1a3d1d2fbb8a9c1a3f0f7d2b6c4a8b2b1e1d5c9a7f3e2b1c0d9e8f7a6b5c4d3e"
          }
        },
        "required": [
          "type",
          "hash"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionReceiptV2": {
        "properties": {
          "createdAt": {
            "type": "integer",
            "format": "int32",
            "description": "Unix timestamp (seconds) when the receipt was recorded."
          },
          "transactionHash": {
            "type": "string"
          },
          "blockNumber": {
            "type": "integer",
            "format": "int32"
          },
          "to": {
            "type": "string",
            "description": "Address the transaction was sent to (the EntryPoint for user operations)."
          },
          "gasUsed": {
            "type": "string"
          },
          "gasFee": {
            "type": "string"
          },
          "l1GasUsed": {
            "type": "string"
          },
          "l1GasFee": {
            "type": "string"
          },
          "logs": {
            "items": {
              "$ref": "#/components/schemas/TransactionResponseLog"
            },
            "type": "array",
            "description": "The transaction's event logs. Present only with `expand=logs`."
          },
          "error": {
            "$ref": "#/components/schemas/TransactionError",
            "description": "Present when the transaction reverted or failed."
          }
        },
        "required": [
          "createdAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionEventV2": {
        "description": "Timeline events: every `TransactionStatusV2` value (a state change), plus monitoring-only events that\nrefine a state without changing it. `status` always equals the last status-valued event.",
        "enum": [
          "awaiting_signature",
          "submitted",
          "indexed",
          "confirmed",
          "dropped",
          "replaced",
          "expired",
          "succeeded",
          "reverted",
          "failed"
        ],
        "type": "string",
        "x-enum-varnames": [
          "AWAITING_SIGNATURE",
          "SUBMITTED",
          "INDEXED",
          "CONFIRMED",
          "DROPPED",
          "REPLACED",
          "EXPIRED",
          "SUCCEEDED",
          "REVERTED",
          "FAILED"
        ]
      },
      "TransactionTimelineEntryV2": {
        "properties": {
          "event": {
            "$ref": "#/components/schemas/TransactionEventV2"
          },
          "at": {
            "type": "integer",
            "format": "int32",
            "description": "Unix timestamp (seconds). Absent when the exact time is unknown (e.g. `submitted` for a\ntransaction the monitor did not track)."
          }
        },
        "required": [
          "event"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.TRANSACTION": {
        "enum": [
          "transaction"
        ],
        "type": "string",
        "x-enum-varnames": [
          "TRANSACTION"
        ]
      },
      "TransactionResponseV2": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.TRANSACTION"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int32"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "example": 80002
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatusV2"
          },
          "accountId": {
            "type": "string",
            "description": "ID of the account that executes the transaction (starts with `acc_`).",
            "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
          },
          "walletId": {
            "type": "string",
            "description": "ID of the wallet that owns the account (starts with `pla_`). Absent for backend wallets.",
            "example": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "feeSponsorshipId": {
            "type": "string",
            "description": "ID of the fee sponsorship paying for gas (starts with `pol_`). Absent when the account pays its own gas.",
            "example": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
          },
          "account": {
            "$ref": "#/components/schemas/AccountV2Response",
            "description": "The executing account. Present only with `expand=account`."
          },
          "feeSponsorship": {
            "$ref": "#/components/schemas/FeeSponsorshipResponse",
            "description": "The fee sponsorship paying for gas. Present only with `expand=feeSponsorship`."
          },
          "calls": {
            "items": {
              "$ref": "#/components/schemas/Call"
            },
            "type": "array",
            "description": "The calls this transaction executes."
          },
          "execution": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UserOperationExecution"
              },
              {
                "$ref": "#/components/schemas/TransactionExecution"
              }
            ],
            "description": "How the transaction is executed on-chain, discriminated by `type`: `userOperation` (ERC-4337 smart\naccounts, including EIP-7702 delegated accounts) or `transaction` (plain EOA transaction).\nAbsent only when the transaction failed before it could be built (`status: \"failed\"`, see `receipt.error`)."
          },
          "nextAction": {
            "$ref": "#/components/schemas/SignHashAction",
            "description": "Present while `status` is `awaiting_signature`."
          },
          "receipt": {
            "$ref": "#/components/schemas/TransactionReceiptV2",
            "description": "Present once the transaction reached a terminal status."
          },
          "timeline": {
            "items": {
              "$ref": "#/components/schemas/TransactionTimelineEntryV2"
            },
            "type": "array",
            "description": "Lifecycle history in order, present only with `expand=timeline`. Status-valued events come from\nthis API's own records and always agree with `status`; monitoring-only events (`indexed`,\n`confirmed`, `dropped`, `replaced`, `expired`) come from the user-operation monitor, are\nbest-effort, and are never present for plain EOA transactions."
          },
          "costUsd": {
            "type": "string",
            "description": "The actual transaction cost in USD, available after on-chain confirmation.",
            "example": "0.42"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "updatedAt",
          "chainId",
          "status",
          "accountId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionListResponseV2": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/TransactionResponseV2"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionExpandableV2": {
        "type": "string",
        "enum": [
          "account",
          "feeSponsorship",
          "timeline",
          "userOperation",
          "logs"
        ]
      },
      "TransactionListQueriesV2": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "expand": {
            "items": {
              "$ref": "#/components/schemas/TransactionExpandableV2"
            },
            "type": "array",
            "description": "Specifies the fields to expand in the response. `timeline` adds the lifecycle history (one\nmonitor lookup per request); `userOperation` and `logs` add the heavyweight execution payload\nand receipt logs, which are otherwise omitted."
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "accountId": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Filter by account ID (starts with acc_).",
            "example": [
              "acc_dc981458-a653-4539-b120-a321915b2896"
            ]
          },
          "userId": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Filter by user ID (starts with usr_).",
            "example": [
              "usr_556166c9-77ad-4a39-aaf8-c432defa8a0f"
            ]
          },
          "walletId": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Filter by wallet ID (starts with pla_).",
            "example": [
              "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
            ]
          },
          "feeSponsorshipId": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Filter by fee sponsorship ID (starts with pol_).",
            "example": [
              "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatusV2",
            "description": "Filter by transaction status.",
            "example": "succeeded"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "CreateTransactionRequestV2": {
        "properties": {
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "accountId": {
            "type": "string",
            "description": "ID of the account that executes the transaction (starts with `acc_`).",
            "example": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60"
          },
          "feeSponsorshipId": {
            "type": "string",
            "description": "ID of the fee sponsorship that pays for gas (starts with `pol_`).\nOmit to pay gas from the account's native token balance.",
            "example": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
          },
          "feeSponsorshipToken": {
            "type": "string",
            "description": "For a fee sponsorship that accepts several user-pay ERC-20 tokens, the on-chain address of the\ntoken the user pays the fee in. Must be one of the sponsorship's configured tokens on this chain.",
            "example": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb"
          },
          "calls": {
            "items": {
              "$ref": "#/components/schemas/Call"
            },
            "type": "array"
          },
          "waitForReceipt": {
            "type": "boolean",
            "description": "Whether to hold the request until the transaction is mined and the `receipt` is available (default `true`).\nSet to `false` to respond as soon as the transaction is broadcast (`status: \"submitted\"`) and poll\n`GET /v2/transactions/{id}` for the outcome.",
            "example": false
          },
          "authorization": {
            "type": "string",
            "description": "EIP-7702 signed authorization (hex) for a delegated account that is not yet delegated on-chain.",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1c"
          }
        },
        "required": [
          "chainId",
          "accountId",
          "calls"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EstimateTransactionResponseV2": {
        "properties": {
          "gas": {
            "type": "string",
            "description": "Estimated gas.",
            "example": "210000"
          },
          "gasPrice": {
            "type": "string",
            "description": "Gas price used for the estimation (wei).",
            "example": "1000000000"
          },
          "fee": {
            "type": "string",
            "description": "Estimated fee in the chain's native token (wei).",
            "example": "210000000000000"
          },
          "feeUsd": {
            "type": "string",
            "description": "Estimated fee in USD.",
            "example": "0.42"
          },
          "feeInToken": {
            "type": "string",
            "description": "Estimated fee in the sponsorship's ERC-20 token (token base units). Present for token-paying sponsorships."
          }
        },
        "required": [
          "gas",
          "gasPrice",
          "fee",
          "feeUsd"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SubmitTransactionSignatureRequestV2": {
        "properties": {
          "signature": {
            "type": "string",
            "description": "Signature of `nextAction.hash` by the account owner or a valid session key.",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
          },
          "waitForReceipt": {
            "type": "boolean",
            "description": "Whether to hold the request until the transaction is mined and the `receipt` is available (default `true`).\nSet to `false` to respond as soon as the transaction is broadcast (`status: \"submitted\"`) and poll\n`GET /v2/transactions/{id}` for the outcome.",
            "example": false
          }
        },
        "required": [
          "signature"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyV2Scope": {
        "enum": [
          "project",
          "account",
          "transaction"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PROJECT",
          "ACCOUNT",
          "TRANSACTION"
        ]
      },
      "PolicyV2Action": {
        "enum": [
          "accept",
          "reject"
        ],
        "type": "string",
        "x-enum-varnames": [
          "ACCEPT",
          "REJECT"
        ]
      },
      "EvmCriteriaType.EVM_ADDRESS": {
        "enum": [
          "evmAddress"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EVM_ADDRESS"
        ]
      },
      "CriteriaOperator.IN": {
        "enum": [
          "in"
        ],
        "type": "string",
        "x-enum-varnames": [
          "IN"
        ]
      },
      "CriteriaOperator.NOT_IN": {
        "enum": [
          "not in"
        ],
        "type": "string",
        "x-enum-varnames": [
          "NOT_IN"
        ]
      },
      "EvmCriteriaType": {
        "enum": [
          "evmAddress",
          "ethValue",
          "evmNetwork",
          "evmMessage",
          "evmData",
          "evmTypedDataVerifyingContract",
          "evmTypedDataField",
          "netUSDChange"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EVM_ADDRESS",
          "ETH_VALUE",
          "EVM_NETWORK",
          "EVM_MESSAGE",
          "EVM_DATA",
          "EVM_TYPED_DATA_VERIFYING_CONTRACT",
          "EVM_TYPED_DATA_FIELD",
          "NET_USD_CHANGE"
        ]
      },
      "SolanaCriteriaType": {
        "enum": [
          "solAddress",
          "solValue",
          "splAddress",
          "splValue",
          "mintAddress",
          "solData",
          "programId",
          "solNetwork",
          "solMessage"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SOL_ADDRESS",
          "SOL_VALUE",
          "SPL_ADDRESS",
          "SPL_VALUE",
          "MINT_ADDRESS",
          "SOL_DATA",
          "PROGRAM_ID",
          "SOL_NETWORK",
          "SOL_MESSAGE"
        ]
      },
      "CriteriaType": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/EvmCriteriaType"
          },
          {
            "$ref": "#/components/schemas/SolanaCriteriaType"
          }
        ]
      },
      "CriteriaOperator": {
        "enum": [
          "in",
          "not in",
          "<",
          "<=",
          ">",
          ">=",
          "==",
          "match"
        ],
        "type": "string",
        "x-enum-varnames": [
          "IN",
          "NOT_IN",
          "LESS_THAN",
          "LESS_THAN_OR_EQUAL",
          "GREATER_THAN",
          "GREATER_THAN_OR_EQUAL",
          "EQUAL",
          "MATCH"
        ]
      },
      "EvmAddressCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/EvmCriteriaType.EVM_ADDRESS"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.IN"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.NOT_IN"
              }
            ]
          },
          "addresses": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "operator",
          "addresses"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmCriteriaType.ETH_VALUE": {
        "enum": [
          "ethValue"
        ],
        "type": "string",
        "x-enum-varnames": [
          "ETH_VALUE"
        ]
      },
      "CriteriaOperator.LESS_THAN_OR_EQUAL": {
        "enum": [
          "<="
        ],
        "type": "string",
        "x-enum-varnames": [
          "LESS_THAN_OR_EQUAL"
        ]
      },
      "CriteriaOperator.GREATER_THAN_OR_EQUAL": {
        "enum": [
          ">="
        ],
        "type": "string",
        "x-enum-varnames": [
          "GREATER_THAN_OR_EQUAL"
        ]
      },
      "CriteriaOperator.LESS_THAN": {
        "enum": [
          "<"
        ],
        "type": "string",
        "x-enum-varnames": [
          "LESS_THAN"
        ]
      },
      "CriteriaOperator.GREATER_THAN": {
        "enum": [
          ">"
        ],
        "type": "string",
        "x-enum-varnames": [
          "GREATER_THAN"
        ]
      },
      "EthValueCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/EvmCriteriaType.ETH_VALUE"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.LESS_THAN_OR_EQUAL"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.GREATER_THAN_OR_EQUAL"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.LESS_THAN"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.GREATER_THAN"
              }
            ]
          },
          "ethValue": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "operator",
          "ethValue"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmCriteriaType.EVM_NETWORK": {
        "enum": [
          "evmNetwork"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EVM_NETWORK"
        ]
      },
      "EvmNetworkCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/EvmCriteriaType.EVM_NETWORK"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.IN"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.NOT_IN"
              }
            ]
          },
          "chainIds": {
            "items": {
              "type": "number",
              "format": "double"
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "operator",
          "chainIds"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmCriteriaType.EVM_MESSAGE": {
        "enum": [
          "evmMessage"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EVM_MESSAGE"
        ]
      },
      "CriteriaOperator.MATCH": {
        "enum": [
          "match"
        ],
        "type": "string",
        "x-enum-varnames": [
          "MATCH"
        ]
      },
      "EvmMessageCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/EvmCriteriaType.EVM_MESSAGE"
          },
          "operator": {
            "$ref": "#/components/schemas/CriteriaOperator.MATCH"
          },
          "pattern": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "operator",
          "pattern"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmCriteriaType.EVM_DATA": {
        "enum": [
          "evmData"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EVM_DATA"
        ]
      },
      "Record_string.unknown_": {
        "properties": {},
        "additionalProperties": {},
        "type": "object",
        "description": "Construct a type with a set of properties K of type T"
      },
      "EvmDataCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/EvmCriteriaType.EVM_DATA"
          },
          "operator": {
            "$ref": "#/components/schemas/CriteriaOperator"
          },
          "abi": {
            "type": "string"
          },
          "functionName": {
            "type": "string"
          },
          "args": {
            "$ref": "#/components/schemas/Record_string.unknown_"
          }
        },
        "required": [
          "type",
          "operator",
          "abi",
          "functionName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmCriteriaType.EVM_TYPED_DATA_VERIFYING_CONTRACT": {
        "enum": [
          "evmTypedDataVerifyingContract"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EVM_TYPED_DATA_VERIFYING_CONTRACT"
        ]
      },
      "EvmTypedDataVerifyingContractCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/EvmCriteriaType.EVM_TYPED_DATA_VERIFYING_CONTRACT"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.IN"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.NOT_IN"
              }
            ]
          },
          "addresses": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "operator",
          "addresses"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmCriteriaType.EVM_TYPED_DATA_FIELD": {
        "enum": [
          "evmTypedDataField"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EVM_TYPED_DATA_FIELD"
        ]
      },
      "EvmTypedDataFieldCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/EvmCriteriaType.EVM_TYPED_DATA_FIELD"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.IN"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.LESS_THAN_OR_EQUAL"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.MATCH"
              }
            ]
          },
          "fieldPath": {
            "type": "string"
          },
          "values": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "operator",
          "fieldPath"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmCriteriaType.NET_USD_CHANGE": {
        "enum": [
          "netUSDChange"
        ],
        "type": "string",
        "x-enum-varnames": [
          "NET_USD_CHANGE"
        ]
      },
      "NetUSDChangeCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/EvmCriteriaType.NET_USD_CHANGE"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.LESS_THAN_OR_EQUAL"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.GREATER_THAN_OR_EQUAL"
              }
            ]
          },
          "usdValue": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "operator",
          "usdValue"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolanaCriteriaType.SOL_ADDRESS": {
        "enum": [
          "solAddress"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SOL_ADDRESS"
        ]
      },
      "SolAddressCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SolanaCriteriaType.SOL_ADDRESS"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.IN"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.NOT_IN"
              }
            ]
          },
          "addresses": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "operator",
          "addresses"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolanaCriteriaType.SOL_VALUE": {
        "enum": [
          "solValue"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SOL_VALUE"
        ]
      },
      "SolValueCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SolanaCriteriaType.SOL_VALUE"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.LESS_THAN_OR_EQUAL"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.GREATER_THAN_OR_EQUAL"
              }
            ]
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolanaCriteriaType.SPL_ADDRESS": {
        "enum": [
          "splAddress"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SPL_ADDRESS"
        ]
      },
      "SplAddressCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SolanaCriteriaType.SPL_ADDRESS"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.IN"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.NOT_IN"
              }
            ]
          },
          "addresses": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "operator",
          "addresses"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolanaCriteriaType.SPL_VALUE": {
        "enum": [
          "splValue"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SPL_VALUE"
        ]
      },
      "SplValueCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SolanaCriteriaType.SPL_VALUE"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.LESS_THAN_OR_EQUAL"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.GREATER_THAN_OR_EQUAL"
              }
            ]
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolanaCriteriaType.MINT_ADDRESS": {
        "enum": [
          "mintAddress"
        ],
        "type": "string",
        "x-enum-varnames": [
          "MINT_ADDRESS"
        ]
      },
      "CriteriaOperator.EQUAL": {
        "enum": [
          "=="
        ],
        "type": "string",
        "x-enum-varnames": [
          "EQUAL"
        ]
      },
      "MintAddressCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SolanaCriteriaType.MINT_ADDRESS"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.EQUAL"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.IN"
              }
            ]
          },
          "addresses": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "operator",
          "addresses"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolanaCriteriaType.SOL_DATA": {
        "enum": [
          "solData"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SOL_DATA"
        ]
      },
      "SolDataCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SolanaCriteriaType.SOL_DATA"
          },
          "operator": {
            "$ref": "#/components/schemas/CriteriaOperator"
          },
          "idl": {
            "type": "string"
          },
          "instructionName": {
            "type": "string"
          },
          "args": {
            "$ref": "#/components/schemas/Record_string.unknown_"
          }
        },
        "required": [
          "type",
          "operator",
          "idl",
          "instructionName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolanaCriteriaType.PROGRAM_ID": {
        "enum": [
          "programId"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PROGRAM_ID"
        ]
      },
      "ProgramIdCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SolanaCriteriaType.PROGRAM_ID"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.IN"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.NOT_IN"
              }
            ]
          },
          "programIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "operator",
          "programIds"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolanaCriteriaType.SOL_NETWORK": {
        "enum": [
          "solNetwork"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SOL_NETWORK"
        ]
      },
      "SolNetworkCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SolanaCriteriaType.SOL_NETWORK"
          },
          "operator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CriteriaOperator.IN"
              },
              {
                "$ref": "#/components/schemas/CriteriaOperator.NOT_IN"
              }
            ]
          },
          "networks": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "type",
          "operator",
          "networks"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolanaCriteriaType.SOL_MESSAGE": {
        "enum": [
          "solMessage"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SOL_MESSAGE"
        ]
      },
      "SolMessageCriterion": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SolanaCriteriaType.SOL_MESSAGE"
          },
          "operator": {
            "$ref": "#/components/schemas/CriteriaOperator.MATCH"
          },
          "pattern": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "operator",
          "pattern"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyV2Criterion": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/EvmAddressCriterion"
          },
          {
            "$ref": "#/components/schemas/EthValueCriterion"
          },
          {
            "$ref": "#/components/schemas/EvmNetworkCriterion"
          },
          {
            "$ref": "#/components/schemas/EvmMessageCriterion"
          },
          {
            "$ref": "#/components/schemas/EvmDataCriterion"
          },
          {
            "$ref": "#/components/schemas/EvmTypedDataVerifyingContractCriterion"
          },
          {
            "$ref": "#/components/schemas/EvmTypedDataFieldCriterion"
          },
          {
            "$ref": "#/components/schemas/NetUSDChangeCriterion"
          },
          {
            "$ref": "#/components/schemas/SolAddressCriterion"
          },
          {
            "$ref": "#/components/schemas/SolValueCriterion"
          },
          {
            "$ref": "#/components/schemas/SplAddressCriterion"
          },
          {
            "$ref": "#/components/schemas/SplValueCriterion"
          },
          {
            "$ref": "#/components/schemas/MintAddressCriterion"
          },
          {
            "$ref": "#/components/schemas/SolDataCriterion"
          },
          {
            "$ref": "#/components/schemas/ProgramIdCriterion"
          },
          {
            "$ref": "#/components/schemas/SolNetworkCriterion"
          },
          {
            "$ref": "#/components/schemas/SolMessageCriterion"
          }
        ]
      },
      "EntityType.POLICY_V2_RULE": {
        "enum": [
          "policyV2Rule"
        ],
        "type": "string",
        "x-enum-varnames": [
          "POLICY_V2_RULE"
        ]
      },
      "PolicyV2RuleResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY_V2_RULE"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "action": {
            "$ref": "#/components/schemas/PolicyV2Action",
            "description": "The action to take when this rule matches.",
            "example": "accept"
          },
          "operation": {
            "type": "string",
            "description": "The operation this rule applies to.\nEVM: signEvmTransaction, sendEvmTransaction, signEvmTypedData, signEvmMessage, signEvmHash\nSolana: signSolTransaction, sendSolTransaction, signSolMessage",
            "example": "signEvmTransaction"
          },
          "criteria": {
            "items": {
              "$ref": "#/components/schemas/PolicyV2Criterion"
            },
            "type": "array",
            "description": "Array of criteria to match for this rule. All criteria must match (AND logic)."
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "action",
          "operation",
          "criteria"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.POLICY_V2": {
        "enum": [
          "policyV2"
        ],
        "type": "string",
        "x-enum-varnames": [
          "POLICY_V2"
        ]
      },
      "PolicyV2Response": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY_V2"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "scope": {
            "$ref": "#/components/schemas/PolicyV2Scope",
            "description": "The scope of the policy.",
            "example": "project"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "A description of what this policy does.",
            "example": "Limit ETH transfers to 1 ETH to approved addresses"
          },
          "accountId": {
            "type": "string",
            "nullable": true,
            "description": "The account ID for account-scoped policies.",
            "example": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the policy is enabled.",
            "example": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "description": "Priority of the policy.",
            "example": 0
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/PolicyV2RuleResponse"
            },
            "type": "array",
            "description": "The rules that make up this policy. Rules are processed sequentially until a match occurs."
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "scope",
          "description",
          "accountId",
          "enabled",
          "priority",
          "rules"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyV2ListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/PolicyV2Response"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyV2ListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "scope": {
            "items": {
              "type": "string",
              "enum": [
                "project",
                "account",
                "transaction"
              ]
            },
            "type": "array",
            "description": "Filter by scope.",
            "example": [
              "project",
              "account"
            ]
          },
          "enabled": {
            "type": "boolean",
            "description": "Filter by enabled status.",
            "example": true
          },
          "accountId": {
            "type": "string",
            "description": "Filter by account ID (for account-scoped policies).",
            "example": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "operation": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Only include policies that have at least one rule with an operation in this list.",
            "example": [
              "signEvmTransaction",
              "signEvmMessage"
            ]
          },
          "operationNotIn": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Exclude policies where all rules have operations in this list.",
            "example": [
              "sponsorEvmTransaction",
              "sponsorSolTransaction"
            ]
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "EvmAddressCriterionRequest": {
        "description": "EVM Address criterion - validates recipient addresses.\nOperators: \"in\", \"not in\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "evmAddress"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "evmAddress"
          },
          "operator": {
            "type": "string",
            "enum": [
              "in",
              "not in"
            ],
            "description": "The operator to use for comparison.",
            "example": "in"
          },
          "addresses": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "List of EVM addresses (hex format with 0x prefix).",
            "example": [
              "0x742d35Cc6634C0532925a3b844Bc9e7595f0aB12"
            ]
          }
        },
        "required": [
          "type",
          "operator",
          "addresses"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EthValueCriterionRequest": {
        "description": "ETH Value criterion - validates native asset amounts in wei.\nOperators: \"<=\", \">=\", \"<\", \">\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "ethValue"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "ethValue"
          },
          "operator": {
            "type": "string",
            "enum": [
              "<=",
              ">=",
              "<",
              ">"
            ],
            "description": "The operator to use for comparison.",
            "example": "<="
          },
          "ethValue": {
            "type": "string",
            "description": "Value in wei as a string.",
            "example": "1000000000000000000"
          }
        },
        "required": [
          "type",
          "operator",
          "ethValue"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmNetworkCriterionRequest": {
        "description": "EVM Network criterion - validates chain IDs.\nOperators: \"in\", \"not in\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "evmNetwork"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "evmNetwork"
          },
          "operator": {
            "type": "string",
            "enum": [
              "in",
              "not in"
            ],
            "description": "The operator to use for comparison.",
            "example": "in"
          },
          "chainIds": {
            "items": {
              "type": "number",
              "format": "double"
            },
            "type": "array",
            "description": "List of chain IDs.",
            "example": [
              1,
              137,
              8453
            ]
          }
        },
        "required": [
          "type",
          "operator",
          "chainIds"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmMessageCriterionRequest": {
        "description": "EVM Message criterion - validates message content with regex (RE2).\nOperators: \"match\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "evmMessage"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "evmMessage"
          },
          "operator": {
            "type": "string",
            "enum": [
              "match"
            ],
            "nullable": false,
            "description": "The operator to use for comparison.",
            "example": "match"
          },
          "pattern": {
            "type": "string",
            "description": "RE2 regex pattern to match against the message.",
            "example": "^Sign this message"
          }
        },
        "required": [
          "type",
          "operator",
          "pattern"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmDataCriterionRequest": {
        "description": "EVM Data criterion - validates transaction calldata via ABI.\nOperators: \"in\", \"not in\", \"<\", \"<=\", \">\", \">=\", \"==\", \"match\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "evmData"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "evmData"
          },
          "operator": {
            "type": "string",
            "enum": [
              "in",
              "not in",
              "<",
              "<=",
              ">",
              ">=",
              "==",
              "match"
            ],
            "description": "The operator to use for comparison.",
            "x-enum-varnames": [
              "In",
              "NotIn",
              "LessThan",
              "LessThanOrEqualTo",
              "GreaterThan",
              "GreaterThanOrEqualTo",
              "Equal",
              "Match"
            ]
          },
          "abi": {
            "type": "string",
            "description": "Contract ABI as JSON string."
          },
          "functionName": {
            "type": "string",
            "description": "Function name to match.",
            "example": "transfer"
          },
          "args": {
            "$ref": "#/components/schemas/Record_string.unknown_",
            "description": "Argument constraints."
          }
        },
        "required": [
          "type",
          "operator",
          "abi",
          "functionName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmTypedDataVerifyingContractCriterionRequest": {
        "description": "EVM Typed Data Verifying Contract criterion - validates EIP-712 domain contract.\nOperators: \"in\", \"not in\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "evmTypedDataVerifyingContract"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "evmTypedDataVerifyingContract"
          },
          "operator": {
            "type": "string",
            "enum": [
              "in",
              "not in"
            ],
            "description": "The operator to use for comparison.",
            "example": "in"
          },
          "addresses": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "List of verifying contract addresses."
          }
        },
        "required": [
          "type",
          "operator",
          "addresses"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvmTypedDataFieldCriterionRequest": {
        "description": "EVM Typed Data Field criterion - validates EIP-712 field values.\nOperators: \"in\", \"<=\", \"match\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "evmTypedDataField"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "evmTypedDataField"
          },
          "operator": {
            "type": "string",
            "enum": [
              "in",
              "<=",
              "match"
            ],
            "description": "The operator to use for comparison.",
            "example": "in"
          },
          "fieldPath": {
            "type": "string",
            "description": "Dot-notation path to field.",
            "example": "message.spender"
          },
          "values": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Values for \"in\" operator."
          },
          "value": {
            "type": "string",
            "description": "Value for \"<=\" or \"match\" operators."
          }
        },
        "required": [
          "type",
          "operator",
          "fieldPath"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "NetUSDChangeCriterionRequest": {
        "description": "Net USD Change criterion - validates USD exposure limits (mainnet only).\nOperators: \"<=\", \">=\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "netUSDChange"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "netUSDChange"
          },
          "operator": {
            "type": "string",
            "enum": [
              "<=",
              ">="
            ],
            "description": "The operator to use for comparison.",
            "example": "<="
          },
          "usdValue": {
            "type": "string",
            "description": "USD value as string.",
            "example": "1000.00"
          }
        },
        "required": [
          "type",
          "operator",
          "usdValue"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolAddressCriterionRequest": {
        "description": "Solana Address criterion - validates native SOL transfer recipients.\nOperators: \"in\", \"not in\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "solAddress"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "solAddress"
          },
          "operator": {
            "type": "string",
            "enum": [
              "in",
              "not in"
            ],
            "description": "The operator to use for comparison.",
            "example": "in"
          },
          "addresses": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "List of Solana addresses (Base58).",
            "example": [
              "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"
            ]
          }
        },
        "required": [
          "type",
          "operator",
          "addresses"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolValueCriterionRequest": {
        "description": "SOL Value criterion - validates SOL amounts in lamports.\nOperators: \"<=\", \">=\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "solValue"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "solValue"
          },
          "operator": {
            "type": "string",
            "enum": [
              "<=",
              ">="
            ],
            "description": "The operator to use for comparison.",
            "example": "<="
          },
          "value": {
            "type": "string",
            "description": "Value in lamports as string.",
            "example": "1000000000"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SplAddressCriterionRequest": {
        "description": "SPL Address criterion - validates SPL token recipients.\nOperators: \"in\", \"not in\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "splAddress"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "splAddress"
          },
          "operator": {
            "type": "string",
            "enum": [
              "in",
              "not in"
            ],
            "description": "The operator to use for comparison.",
            "example": "in"
          },
          "addresses": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "List of recipient addresses (Base58)."
          }
        },
        "required": [
          "type",
          "operator",
          "addresses"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SplValueCriterionRequest": {
        "description": "SPL Value criterion - validates SPL token amounts.\nOperators: \"<=\", \">=\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "splValue"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "splValue"
          },
          "operator": {
            "type": "string",
            "enum": [
              "<=",
              ">="
            ],
            "description": "The operator to use for comparison.",
            "example": "<="
          },
          "value": {
            "type": "string",
            "description": "Token amount as string."
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MintAddressCriterionRequest": {
        "description": "Mint Address criterion - validates token mint addresses.\nOperators: \"==\", \"in\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "mintAddress"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "mintAddress"
          },
          "operator": {
            "type": "string",
            "enum": [
              "==",
              "in"
            ],
            "description": "The operator to use for comparison.",
            "example": "in",
            "x-enum-varnames": [
              "Equal",
              "In"
            ]
          },
          "addresses": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "List of mint addresses (Base58)."
          }
        },
        "required": [
          "type",
          "operator",
          "addresses"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolDataCriterionRequest": {
        "description": "Solana Data criterion - validates instruction params via Anchor IDL.\nOperators: \"in\", \"not in\", \"<=\", \">=\", \"==\", \"match\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "solData"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "solData"
          },
          "operator": {
            "type": "string",
            "enum": [
              "in",
              "not in",
              "<=",
              ">=",
              "==",
              "match"
            ],
            "description": "The operator to use for comparison.",
            "x-enum-varnames": [
              "In",
              "NotIn",
              "LessThanOrEqualTo",
              "GreaterThanOrEqualTo",
              "Equal",
              "Match"
            ]
          },
          "idl": {
            "type": "string",
            "description": "Anchor IDL JSON (v0.30+)."
          },
          "instructionName": {
            "type": "string",
            "description": "Instruction name."
          },
          "args": {
            "$ref": "#/components/schemas/Record_string.unknown_",
            "description": "Argument constraints."
          }
        },
        "required": [
          "type",
          "operator",
          "idl",
          "instructionName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ProgramIdCriterionRequest": {
        "description": "Program ID criterion - validates Solana program IDs.\nOperators: \"in\", \"not in\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "programId"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "programId"
          },
          "operator": {
            "type": "string",
            "enum": [
              "in",
              "not in"
            ],
            "description": "The operator to use for comparison.",
            "example": "in"
          },
          "programIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "List of program IDs (Base58)."
          }
        },
        "required": [
          "type",
          "operator",
          "programIds"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolNetworkCriterionRequest": {
        "description": "Solana Network criterion - validates Solana network.\nOperators: \"in\", \"not in\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "solNetwork"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "solNetwork"
          },
          "operator": {
            "type": "string",
            "enum": [
              "in",
              "not in"
            ],
            "description": "The operator to use for comparison.",
            "example": "in"
          },
          "networks": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "List of networks: \"mainnet-beta\", \"devnet\", \"testnet\".",
            "example": [
              "mainnet-beta"
            ]
          }
        },
        "required": [
          "type",
          "operator",
          "networks"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SolMessageCriterionRequest": {
        "description": "Solana Message criterion - validates message content with regex.\nOperators: \"match\"",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "solMessage"
            ],
            "nullable": false,
            "description": "The type of criterion.",
            "example": "solMessage"
          },
          "operator": {
            "type": "string",
            "enum": [
              "match"
            ],
            "nullable": false,
            "description": "The operator to use for comparison.",
            "example": "match"
          },
          "pattern": {
            "type": "string",
            "description": "RE2 regex pattern."
          }
        },
        "required": [
          "type",
          "operator",
          "pattern"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PolicyV2CriterionRequest": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/EvmAddressCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/EthValueCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/EvmNetworkCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/EvmMessageCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/EvmDataCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/EvmTypedDataVerifyingContractCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/EvmTypedDataFieldCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/NetUSDChangeCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/SolAddressCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/SolValueCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/SplAddressCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/SplValueCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/MintAddressCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/SolDataCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/ProgramIdCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/SolNetworkCriterionRequest"
          },
          {
            "$ref": "#/components/schemas/SolMessageCriterionRequest"
          }
        ],
        "description": "Union of all criterion request types."
      },
      "CreatePolicyV2RuleRequest": {
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "accept",
              "reject"
            ],
            "description": "The action to take when this rule matches.",
            "example": "accept"
          },
          "operation": {
            "type": "string",
            "description": "The operation this rule applies to.\nEVM: signEvmTransaction, sendEvmTransaction, signEvmTypedData, signEvmMessage, signEvmHash\nSolana: signSolTransaction, sendSolTransaction, signSolMessage",
            "example": "signEvmTransaction"
          },
          "criteria": {
            "items": {
              "$ref": "#/components/schemas/PolicyV2CriterionRequest"
            },
            "type": "array",
            "description": "Array of criteria to match for this rule. All criteria must match (AND logic)."
          }
        },
        "required": [
          "action",
          "operation"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreatePolicyV2Request": {
        "properties": {
          "scope": {
            "type": "string",
            "enum": [
              "project",
              "account",
              "transaction"
            ],
            "description": "The scope of the policy.\n- 'project': applies to all accounts (soft validation - no match = user pays)\n- 'account': applies to a specific account (soft validation)\n- 'transaction': only when explicitly passed (hard validation - no match = tx fails)",
            "example": "project"
          },
          "description": {
            "type": "string",
            "description": "A description of what this policy does.",
            "example": "Limit ETH transfers to 1 ETH to approved addresses"
          },
          "accountId": {
            "type": "string",
            "description": "The account ID for account-scoped policies (starts with acc_). Required when scope is 'account'.",
            "example": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the policy is enabled.",
            "example": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "description": "Priority of the policy. Higher priority policies are evaluated first.",
            "example": 0
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/CreatePolicyV2RuleRequest"
            },
            "type": "array",
            "description": "The rules that make up this policy. Rules are processed sequentially until a match occurs."
          }
        },
        "required": [
          "scope",
          "rules"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvaluatePolicyV2Response": {
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "policy_evaluation"
            ],
            "nullable": false,
            "description": "The object type.",
            "example": "policy_evaluation"
          },
          "allowed": {
            "type": "boolean",
            "description": "Whether the operation is allowed by the policy.",
            "example": true
          },
          "reason": {
            "type": "string",
            "description": "The reason for the policy decision.",
            "example": "Allowed by policy rule"
          },
          "operation": {
            "type": "string",
            "description": "The operation that was evaluated.",
            "example": "signEvmTransaction"
          },
          "accountId": {
            "type": "string",
            "description": "The account ID that was evaluated (if any).",
            "example": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "matchedPolicyId": {
            "type": "string",
            "description": "The ID of the policy that matched (if any).",
            "example": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "matchedRuleId": {
            "type": "string",
            "description": "The ID of the rule that matched (if any).",
            "example": "plr_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        },
        "required": [
          "object",
          "allowed",
          "reason",
          "operation"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EvaluatePolicyV2Payload": {
        "properties": {
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "Chain ID for EVM operations.",
            "example": 1
          },
          "to": {
            "type": "string",
            "description": "Recipient address for EVM transaction (hex with 0x prefix).",
            "example": "0x742d35Cc6634C0532925a3b844Bc9e7595f0aB12"
          },
          "value": {
            "type": "string",
            "description": "Value in wei for EVM transaction.",
            "example": "1000000000000000000"
          },
          "data": {
            "type": "string",
            "description": "Transaction data/calldata for EVM transaction (hex with 0x prefix).",
            "example": "0xa9059cbb..."
          },
          "verifyingContract": {
            "type": "string",
            "description": "Verifying contract address for EIP-712 typed data."
          },
          "domain": {
            "$ref": "#/components/schemas/Record_string.unknown_",
            "description": "EIP-712 domain object."
          },
          "message": {
            "$ref": "#/components/schemas/Record_string.unknown_",
            "description": "EIP-712 message object."
          },
          "primaryType": {
            "type": "string",
            "description": "Primary type for EIP-712 typed data.",
            "example": "Permit"
          },
          "evmMessage": {
            "type": "string",
            "description": "Message content for signEvmMessage."
          },
          "network": {
            "type": "string",
            "description": "Solana network: \"mainnet-beta\", \"devnet\", \"testnet\".",
            "example": "mainnet-beta"
          },
          "recipients": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Recipient addresses for SOL transfers (Base58)."
          },
          "solValue": {
            "type": "string",
            "description": "SOL amount in lamports.",
            "example": "1000000000"
          },
          "splRecipients": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Recipient addresses for SPL token transfers (Base58)."
          },
          "splValue": {
            "type": "string",
            "description": "SPL token amount."
          },
          "mintAddress": {
            "type": "string",
            "description": "Token mint address (Base58)."
          },
          "programIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Program IDs involved in transaction (Base58)."
          },
          "solMessage": {
            "type": "string",
            "description": "Message content for signSolMessage."
          },
          "instructionData": {
            "type": "string",
            "description": "Base64-encoded instruction data for Solana programs (includes 8-byte discriminator)."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "EvaluatePolicyV2Request": {
        "properties": {
          "operation": {
            "type": "string",
            "description": "The signing operation to evaluate.\nEVM: signEvmTransaction, sendEvmTransaction, signEvmTypedData, signEvmMessage, signEvmHash\nSolana: signSolTransaction, sendSolTransaction, signSolMessage",
            "example": "signEvmTransaction"
          },
          "accountId": {
            "type": "string",
            "description": "The account ID to evaluate policies for (starts with acc_). If not provided, only project-scoped policies are evaluated.",
            "example": "acc_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "payload": {
            "$ref": "#/components/schemas/EvaluatePolicyV2Payload",
            "description": "The payload to evaluate against policy criteria. Structure depends on the operation type."
          }
        },
        "required": [
          "operation"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdatePolicyV2Request": {
        "properties": {
          "description": {
            "type": "string",
            "description": "A description of what this policy does.",
            "example": "Limit ETH transfers to 1 ETH to approved addresses"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the policy is enabled.",
            "example": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "description": "Priority of the policy. Higher priority policies are evaluated first.",
            "example": 0
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/CreatePolicyV2RuleRequest"
            },
            "type": "array",
            "description": "The rules that make up this policy. If provided, replaces all existing rules."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PolicyV2DeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.POLICY_V2"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampVerificationResponse": {
        "description": "A started onramp verification — the OTP is on its way to the destination.",
        "properties": {
          "verificationId": {
            "type": "string"
          },
          "otpExpiresAt": {
            "type": "string",
            "description": "ISO-8601 — the OTP expires ~10 minutes after initiation."
          }
        },
        "required": [
          "verificationId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampVerificationSubmitResponse": {
        "description": "A completed onramp verification — attach the id to a wallet-pay commit.",
        "properties": {
          "verificationId": {
            "type": "string"
          },
          "verificationExpiresAt": {
            "type": "string",
            "description": "ISO-8601 — the verification record stays valid ~60 days."
          }
        },
        "required": [
          "verificationId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampAuthIntentResponse": {
        "description": "A minted embedded-flow auth intent — the client renders the provider's auth element with it.",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampAuthTokenExchangeResponse": {
        "description": "Result of exchanging a completed auth intent (the provider token stays server-side).",
        "properties": {
          "exchanged": {
            "type": "boolean"
          }
        },
        "required": [
          "exchanged"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampIdentityResponse": {
        "description": "The buyer's identity state at the resolved provider. `providedFields` names\nthe identity steps already satisfied (\"identifiers\", \"attestation\", …), so\nthe client prompts only for what is outstanding rather than guessing.",
        "properties": {
          "region": {
            "type": "string",
            "enum": [
              "us",
              "eu",
              null
            ],
            "nullable": true,
            "description": "Regulatory region the provider judged the buyer to be in."
          },
          "level": {
            "type": "string",
            "enum": [
              "L0",
              "L1",
              "L2",
              "PENDING",
              "REJECTED",
              "REQUIRES_KYC"
            ],
            "description": "Verification tier reached; anything but L0/L1/L2 means more is needed."
          },
          "providedFields": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "region",
          "level",
          "providedFields"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampLimitUpgradeStatusResponse": {
        "description": "Where a buyer stands on raising their spending limit.",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "unrequested",
              "resubmit",
              "pending",
              "active",
              "inactive"
            ]
          },
          "available": {
            "type": "boolean",
            "description": "False once the provider has stopped offering the upgrade at all."
          }
        },
        "required": [
          "status",
          "available"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampLimitsResponse": {
        "description": "The buyer's current transaction limits, as the provider shapes them.\nMONETARY VALUES ARE IN CENTS.\n\nThe normalized fields are populated for the wallet-pay (phone) form; the\nembedded (auth-intent) form returns only the raw `limits` passthrough.",
        "properties": {
          "limits": {
            "$ref": "#/components/schemas/Record_string.unknown_"
          },
          "remainingMinor": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Remaining spend this period, MINOR units. Null when the provider gave none."
          },
          "remainingTransactions": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Remaining purchases; null means UNLIMITED, never zero."
          },
          "upgrade": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OnrampLimitUpgradeStatusResponse"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "limits"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampLimitUpgradeResponse": {
        "description": "A started, provider-hosted limit upgrade — embed the URL before it expires.",
        "properties": {
          "url": {
            "type": "string",
            "description": "Single-use and short-lived; request a fresh one per attempt."
          },
          "expiresAt": {
            "type": "string",
            "description": "ISO-8601."
          }
        },
        "required": [
          "url",
          "expiresAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ResolvedFundingMethodResponse": {
        "description": "One resolved funding method the SDK/widget renders. The provider is included\nfor telemetry but is NOT shown to the user. `angle` is \"popup\" | \"native\" | \"embedded\".\nClients derive display labels and device-capability gating (e.g. Apple Pay\non Safari) from `method` and `rail`.",
        "properties": {
          "method": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "angle": {
            "type": "string"
          },
          "rail": {
            "type": "string",
            "description": "Regional bank rail for bank_transfer (\"ach\" | \"sepa\" | \"interac\")."
          },
          "providerPublishableKey": {
            "type": "string",
            "description": "Provider PUBLISHABLE key for \"embedded\" rows — the client's pre-commit\nelements (the embedded auth element) initialize with it. Public by design."
          }
        },
        "required": [
          "method",
          "provider",
          "angle"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampMethodsResponse": {
        "description": "Resolved onramp methods for a destination + region (provider auto-selected, hidden).",
        "properties": {
          "country": {
            "type": "string",
            "nullable": true,
            "description": "Resolved ISO-3166 alpha-2 country, or null for rest-of-world."
          },
          "methods": {
            "items": {
              "$ref": "#/components/schemas/ResolvedFundingMethodResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "country",
          "methods"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingChainCurrencyResponse": {
        "description": "A source currency available on a chain.",
        "properties": {
          "symbol": {
            "type": "string"
          },
          "address": {
            "type": "string",
            "description": "Token contract address, or the zero address for the chain's native asset."
          },
          "decimals": {
            "type": "integer",
            "format": "int32"
          },
          "logo": {
            "type": "string",
            "nullable": true
          },
          "native": {
            "type": "boolean",
            "description": "True for the chain's native currency."
          }
        },
        "required": [
          "symbol",
          "address",
          "decimals",
          "logo",
          "native"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingChainResponse": {
        "description": "A source chain the funding rail can route a deposit from.",
        "properties": {
          "id": {
            "type": "string",
            "description": "CAIP-2 chain id, e.g. \"eip155:8453\"."
          },
          "name": {
            "type": "string"
          },
          "logo": {
            "type": "string",
            "nullable": true
          },
          "vmType": {
            "type": "string",
            "description": "\"evm\" | \"svm\"."
          },
          "currencies": {
            "items": {
              "$ref": "#/components/schemas/FundingChainCurrencyResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "logo",
          "vmType",
          "currencies"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingChainsResponse": {
        "description": "Source chains + currencies the rail supports (a live passthrough of Relay's dictionary).",
        "properties": {
          "chains": {
            "items": {
              "$ref": "#/components/schemas/FundingChainResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "chains"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingTargetResponse": {
        "description": "Where the funded crypto lands.",
        "properties": {
          "chain": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "address": {
            "type": "string"
          }
        },
        "required": [
          "chain",
          "currency",
          "address"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingMetadata": {
        "description": "Arbitrary string metadata stored with a funding session.",
        "properties": {},
        "type": "object",
        "additionalProperties": {
          "type": "string"
        }
      },
      "FundingSourceResponse": {
        "description": "The committed source route.",
        "properties": {
          "chain": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          }
        },
        "required": [
          "chain",
          "currency",
          "amount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingWalletDeeplinkResponse": {
        "description": "A prefilled deeplink into a source wallet app.",
        "properties": {
          "app": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "app",
          "label",
          "url"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingFeeResponse": {
        "description": "A single fee line reported by the rail provider.",
        "properties": {
          "kind": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "amount",
          "currency"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingCryptoPaymentMethodResponse": {
        "description": "The resolved crypto payment method — what the client renders.",
        "properties": {
          "type": {
            "type": "string",
            "description": "Source family (\"evm\" or \"solana\")."
          },
          "source": {
            "$ref": "#/components/schemas/FundingSourceResponse"
          },
          "receiverAddress": {
            "type": "string",
            "description": "Address the user sends the source funds to."
          },
          "addressUri": {
            "type": "string",
            "description": "BIP-21 / EIP-681 / Solana Pay URI for QR rendering."
          },
          "deeplinks": {
            "items": {
              "$ref": "#/components/schemas/FundingWalletDeeplinkResponse"
            },
            "type": "array",
            "description": "Wallet deeplinks for the transfer, populated client-side."
          },
          "fees": {
            "items": {
              "$ref": "#/components/schemas/FundingFeeResponse"
            },
            "type": "array"
          },
          "minAmount": {
            "type": "string",
            "nullable": true,
            "description": "Minimum the user must send for this route (source base units), or null."
          }
        },
        "required": [
          "type",
          "source",
          "receiverAddress",
          "addressUri",
          "deeplinks",
          "fees",
          "minAmount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingOnrampPaymentMethodResponse": {
        "description": "The resolved fiat onramp payment method. The executing provider is resolved\nserver-side and intentionally not part of the response — the client renders\nthe method and opens `url`.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "onramp"
            ],
            "nullable": false
          },
          "method": {
            "type": "string",
            "description": "The funding method (\"apple_pay\" | \"google_pay\" | \"card\" | \"bank_transfer\")."
          },
          "angle": {
            "type": "string",
            "description": "How to execute: \"popup\" (open `url` in a popup/new tab — the hosted page cannot be iframed), \"native\" (in-page provider SDK), or \"embedded\" (the provider's headless element flow)."
          },
          "url": {
            "type": "string",
            "nullable": true,
            "description": "Hosted checkout URL to open, or null."
          },
          "providerSessionId": {
            "type": "string",
            "nullable": true,
            "description": "The provider's own session/order id for this commit (for embedded rows,\nthe id the client's checkout element executes against), or null."
          },
          "fees": {
            "items": {
              "$ref": "#/components/schemas/FundingFeeResponse"
            },
            "type": "array"
          },
          "minAmount": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "type",
          "method",
          "angle",
          "url",
          "providerSessionId",
          "fees",
          "minAmount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingPaymentMethodResponse": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/FundingCryptoPaymentMethodResponse"
          },
          {
            "$ref": "#/components/schemas/FundingOnrampPaymentMethodResponse"
          }
        ],
        "description": "The resolved payment method — a crypto source route or a fiat onramp."
      },
      "EntityType.FUNDING_SESSION": {
        "enum": [
          "fundingSession"
        ],
        "type": "string",
        "x-enum-varnames": [
          "FUNDING_SESSION"
        ]
      },
      "FundingSessionResponse": {
        "description": "A funding session.",
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.FUNDING_SESSION"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "description": "Session lifecycle state.",
            "example": "waiting_payment"
          },
          "clientSecret": {
            "type": "string",
            "description": "Per-session secret clients present to read or advance the session."
          },
          "target": {
            "$ref": "#/components/schemas/FundingTargetResponse"
          },
          "amountUnits": {
            "type": "string",
            "nullable": true,
            "description": "Locked amount (destination base units), or null when the sender chooses."
          },
          "metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FundingMetadata"
              }
            ],
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "strict": {
            "type": "boolean"
          },
          "paymentMethod": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FundingPaymentMethodResponse"
              }
            ],
            "nullable": true
          },
          "expiresAt": {
            "type": "integer",
            "format": "int32",
            "description": "Unix seconds when the session expires (24h after creation)."
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "status",
          "clientSecret",
          "target",
          "amountUnits",
          "metadata",
          "externalId",
          "strict",
          "paymentMethod",
          "expiresAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingTargetRequest": {
        "description": "Where the funded crypto should land.",
        "properties": {
          "chain": {
            "type": "string",
            "description": "Destination CAIP-2 chain id.",
            "example": "eip155:8453"
          },
          "currency": {
            "type": "string",
            "description": "Destination token contract, or the zero address for the chain's native asset.",
            "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
          },
          "address": {
            "type": "string",
            "description": "Destination wallet that receives the bridged funds.",
            "example": "0x0000000000000000000000000000000000000000"
          }
        },
        "required": [
          "chain",
          "currency",
          "address"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingSourceRequest": {
        "description": "The source route the user commits to sending from.",
        "properties": {
          "chain": {
            "type": "string",
            "description": "Source CAIP-2 chain id.",
            "example": "eip155:137"
          },
          "currency": {
            "type": "string",
            "description": "Source token contract, or the zero address for native."
          },
          "amount": {
            "type": "string",
            "description": "Amount in the source token's smallest unit (wei, lamports, base units).",
            "example": "10000000"
          }
        },
        "required": [
          "chain",
          "currency",
          "amount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CryptoPaymentMethodRequest": {
        "description": "A self-custody crypto payment method (source) for a session.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "evm",
              "solana"
            ],
            "description": "Self-custody source family.",
            "example": "evm"
          },
          "source": {
            "$ref": "#/components/schemas/FundingSourceRequest"
          },
          "refundTo": {
            "type": "string",
            "description": "Origin-chain address refunded if the deposit bounces. Defaults to the\ntarget address (valid for same-address EVM embedded wallets)."
          }
        },
        "required": [
          "type",
          "source"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OnrampPaymentMethodRequest": {
        "description": "A fiat web2 onramp payment method. The provider is auto-selected server-side\n(buyer region + destination asset + project config) — it is never chosen by\nthe client. The response's `paymentMethod` carries the hosted checkout `url`\nto open; the session then advances via the provider's settlement webhook.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "onramp"
            ],
            "nullable": false
          },
          "method": {
            "type": "string",
            "enum": [
              "apple_pay",
              "google_pay",
              "card",
              "bank_transfer"
            ],
            "description": "The funding method the user picked.",
            "example": "card"
          },
          "sourceAmount": {
            "type": "string",
            "description": "Fiat amount to prefill in the provider checkout, in the source currency's\nhuman units (decimal string). Omit to let the user choose in-checkout.",
            "example": "100.00"
          },
          "sourceCurrency": {
            "type": "string",
            "description": "ISO-4217 fiat currency for `sourceAmount`.",
            "example": "USD"
          },
          "country": {
            "type": "string",
            "description": "Explicit buyer country override (ISO-3166 alpha-2). Wins over the request\nIP — the escape hatch for QA and apps that already know their user's region.",
            "example": "US"
          },
          "redirectUrl": {
            "type": "string",
            "description": "URL the provider redirects back to after checkout."
          },
          "angles": {
            "items": {
              "type": "string",
              "enum": [
                "popup",
                "native",
                "embedded"
              ]
            },
            "type": "array",
            "description": "Integration angles the client can execute; omit for no restriction. A\nclient that can't run a flow (React Native has no DOM for `embedded`\nelements and no Safari context for the `native` wallet-pay sheet) sends\ne.g. `[\"popup\"]` — routing then skips providers whose flow resolves to an\nexcluded angle, falling through to the hosted popup checkout when allowed.",
            "example": [
              "popup"
            ]
          },
          "refundTo": {
            "type": "string",
            "description": "Origin-chain refund address for an auto-bridged (chained) route — where the\nonramped intermediate is refunded if the Relay bridge to the target bounces.\nOnly consulted when the route chains cross-VM (e.g. an EVM intermediate to a\nSolana target); same-VM chains refund to the target address automatically."
          },
          "email": {
            "type": "string",
            "description": "OTP-verified buyer email — REQUIRED for `apple_pay`/`google_pay` (the\nnative wallet-pay sheet needs verified buyer identity). Ignored for\n`card`/`bank_transfer`. Openfort verifies it via its own email OTP.",
            "example": "buyer@example.com"
          },
          "phoneNumber": {
            "type": "string",
            "description": "OTP-verified US mobile in E.164 — REQUIRED for `apple_pay`/`google_pay`;\nthe wallet-pay rail currently requires a verified US cell. Ignored for\n`card`/`bank_transfer`.",
            "example": "+14155550123"
          },
          "phoneNumberVerifiedAt": {
            "type": "string",
            "description": "ISO-8601 time the phone OTP was verified. REQUIRED for\n`apple_pay`/`google_pay`; must be recent enough for the wallet-pay rail's\nre-verify window.",
            "example": "2026-07-07T12:00:00.000Z"
          },
          "agreementAcceptedAt": {
            "type": "string",
            "description": "ISO-8601 time the buyer accepted the checkout terms surfaced at the\namount step. REQUIRED for `apple_pay`/`google_pay`.",
            "example": "2026-07-07T12:01:00.000Z"
          },
          "smsVerificationId": {
            "type": "string",
            "description": "Verification record for the phone, from\nPOST /v2/funding/onramp/verifications (channel \"sms\") + submit."
          },
          "emailVerificationId": {
            "type": "string",
            "description": "Verification record for the email, from\nPOST /v2/funding/onramp/verifications (channel \"email\") + submit."
          },
          "embedded": {
            "properties": {
              "paymentToken": {
                "type": "string",
                "description": "Payment token from the client's embedded payment element."
              },
              "customerRef": {
                "type": "string",
                "description": "Authenticated buyer id from the client's embedded auth element."
              },
              "authIntentId": {
                "type": "string",
                "description": "The auth intent minted by POST /v2/funding/onramp/auth_intents."
              }
            },
            "required": [
              "paymentToken",
              "customerRef",
              "authIntentId"
            ],
            "type": "object",
            "description": "Embedded (headless) element flow. Present when the client authenticated\nthe buyer with the provider's embedded auth element and collected a\npayment method — the commit then creates a headless provider session and\nthe client redeems its secret via POST /sessions/{id}/onramp_checkout.\nIgnored when the resolved method doesn't execute embedded."
          }
        },
        "required": [
          "type",
          "method"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PaymentMethodRequest": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/CryptoPaymentMethodRequest"
          },
          {
            "$ref": "#/components/schemas/OnrampPaymentMethodRequest"
          }
        ],
        "description": "A single payment method for a session — a crypto source or a fiat onramp."
      },
      "CreateFundingSessionRequest": {
        "description": "Create a funding session for a destination.",
        "properties": {
          "target": {
            "$ref": "#/components/schemas/FundingTargetRequest"
          },
          "amountUnits": {
            "type": "string",
            "description": "Lock the deposit to a fixed amount (destination base units). Omit to let\nthe sender choose any amount above the route minimum.",
            "example": "10000000"
          },
          "metadata": {
            "$ref": "#/components/schemas/FundingMetadata",
            "description": "Arbitrary string metadata stored with the session."
          },
          "externalId": {
            "type": "string",
            "description": "Idempotency/correlation key. Reusing the same value returns the existing\nsession instead of creating a new one."
          },
          "strict": {
            "type": "boolean",
            "description": "Deposit-address mode. `true` mints a single-use address bound to one\ndeposit; `false` (default) mints an open address reusable for the route."
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/PaymentMethodRequest",
            "description": "Set the payment method in the same call when the source route is already\nknown — the response comes back in `waiting_payment` with the deposit\naddress, collapsing the create + setPaymentMethod round trip.\n\nNote: when `externalId` matches an existing session, that session is\nreturned unchanged (use `setPaymentMethod` with its `clientSecret` to\nadvance it). If minting fails, the created session is still returned by a\nretry and can be advanced with `setPaymentMethod`."
          }
        },
        "required": [
          "target"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SetPaymentMethodRequest": {
        "description": "Set the (single) payment method on a session.",
        "properties": {
          "clientSecret": {
            "type": "string",
            "description": "The session's client secret, returned at creation."
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/PaymentMethodRequest"
          }
        },
        "required": [
          "clientSecret",
          "paymentMethod"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SessionQuoteRequest": {
        "description": "Price a fiat onramp route for a session before committing it. The provider is\nresolved exactly as `setPaymentMethod` would resolve it, so the quoted price\nmatches the checkout the user will get. `sourceAmount` in the response is the\nfee-inclusive total the buyer pays. Some providers price all card-family\nmethods identically (bank-rail-specific pricing may not be reflected).",
        "properties": {
          "clientSecret": {
            "type": "string",
            "description": "The session's client secret, returned at creation."
          },
          "method": {
            "type": "string",
            "enum": [
              "apple_pay",
              "google_pay",
              "card",
              "bank_transfer"
            ],
            "description": "The funding method to price.",
            "example": "card"
          },
          "sourceAmount": {
            "type": "string",
            "description": "Fiat amount in the source currency's human units (decimal string).",
            "example": "100.00"
          },
          "sourceCurrency": {
            "type": "string",
            "description": "ISO-4217 fiat currency.",
            "example": "USD"
          },
          "country": {
            "type": "string",
            "description": "Explicit buyer country override (ISO-3166 alpha-2); defaults to the request IP."
          },
          "angles": {
            "items": {
              "type": "string",
              "enum": [
                "popup",
                "native",
                "embedded"
              ]
            },
            "type": "array",
            "description": "Integration angles the client can execute; omit for no restriction. Must\nmatch the `angles` the commit will send so the quoted provider is the one\nthat executes.",
            "example": [
              "popup"
            ]
          }
        },
        "required": [
          "clientSecret",
          "method",
          "sourceAmount",
          "sourceCurrency"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PayLinkResponse": {
        "description": "A prefilled centralized-exchange (cex) transfer URL for the cex funding path.",
        "properties": {
          "url": {
            "type": "string",
            "description": "The hosted exchange URL to open (prefilled transfer page)."
          }
        },
        "required": [
          "url"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PayLinkRequest": {
        "description": "Build a prefilled centralized-exchange (cex) transfer link for a session.\n\nSession-bound: the destination address and chain come from the session, so the\nclient can't redirect the withdrawal. The user opens the URL, signs into their\nown exchange account, and the exchange delivers the asset to the session's\nwallet — handling any bridging/conversion from the balance they already hold.\nThis path does not touch Relay. The active cex provider is resolved\nserver-side (e.g. Coinbase today; other exchanges may back this path later).",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "The funding session id (starts with fnd_) whose wallet receives the funds.",
            "example": "fnd_1a2b3c"
          },
          "clientSecret": {
            "type": "string",
            "description": "The session's client secret, returned at creation."
          },
          "amount": {
            "type": "string",
            "description": "Amount to deliver, in the asset's human units. Minimum 5 (the cex\nprovider's minimum, enforced server-side).",
            "example": "10"
          },
          "asset": {
            "type": "string",
            "description": "Asset ticker to deliver, as the exchange labels it. Must be supported by\nthe cex provider on the session's chain. Defaults to \"USDC\".",
            "example": "USDC"
          }
        },
        "required": [
          "sessionId",
          "clientSecret",
          "amount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Pick_FundingProjectConfig.Exclude_keyofFundingProjectConfig.credentials__": {
        "properties": {
          "ecosystem": {
            "type": "string"
          },
          "defaultChain": {
            "type": "string"
          },
          "defaultCurrency": {
            "type": "string"
          },
          "recommendedAmount": {
            "type": "string"
          },
          "crossChainBridging": {
            "type": "boolean"
          },
          "onrampEnabled": {
            "type": "boolean"
          },
          "onrampMethods": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Enabled web2 methods (FundingMethod values), in display order."
          },
          "walletPayEnabled": {
            "type": "boolean",
            "description": "Whether native wallet pay (Apple/Google Pay) is offered. Needs the project's own CDP keys."
          },
          "stripeEnabled": {
            "type": "boolean",
            "description": "Whether the Stripe rail is offered. With the project's own Link OAuth\nclient it runs in-page (embedded); without one it degrades to the\nhosted popup on the project's secret key alone."
          },
          "hostedCheckoutEnabled": {
            "type": "boolean",
            "description": "Whether Coinbase hosted-checkout popup rows (including the rest-of-world fallback) are offered."
          },
          "depositAddressEnabled": {
            "type": "boolean"
          },
          "depositFromWalletEnabled": {
            "type": "boolean"
          },
          "stripePublishableKey": {
            "type": "string",
            "description": "The project's Stripe publishable key, handed to the client so the embedded\ncomponent can initialize. Public by design — it belongs to the same Stripe\naccount as the embedded credentials below, so it is per-project too."
          }
        },
        "required": [
          "ecosystem",
          "defaultChain",
          "defaultCurrency",
          "recommendedAmount",
          "crossChainBridging",
          "onrampEnabled",
          "onrampMethods",
          "walletPayEnabled",
          "stripeEnabled",
          "hostedCheckoutEnabled",
          "depositAddressEnabled",
          "depositFromWalletEnabled",
          "stripePublishableKey"
        ],
        "type": "object",
        "description": "From T, pick a set of properties whose keys are in the union K"
      },
      "FundingConfigResponse": {
        "description": "GET/PUT /v2/funding/config response — the project funding config with the\ncredentials replaced by presence flags. Stored secrets are write-only: the\ndashboard renders \"configured / not configured\", never a value it could echo\nback.",
        "properties": {
          "ecosystem": {
            "type": "string"
          },
          "defaultChain": {
            "type": "string"
          },
          "defaultCurrency": {
            "type": "string"
          },
          "recommendedAmount": {
            "type": "string"
          },
          "crossChainBridging": {
            "type": "boolean"
          },
          "onrampEnabled": {
            "type": "boolean"
          },
          "onrampMethods": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Enabled web2 methods (FundingMethod values), in display order."
          },
          "walletPayEnabled": {
            "type": "boolean",
            "description": "Whether native wallet pay (Apple/Google Pay) is offered. Needs the project's own CDP keys."
          },
          "stripeEnabled": {
            "type": "boolean",
            "description": "Whether the Stripe rail is offered. With the project's own Link OAuth\nclient it runs in-page (embedded); without one it degrades to the\nhosted popup on the project's secret key alone."
          },
          "hostedCheckoutEnabled": {
            "type": "boolean",
            "description": "Whether Coinbase hosted-checkout popup rows (including the rest-of-world fallback) are offered."
          },
          "depositAddressEnabled": {
            "type": "boolean"
          },
          "depositFromWalletEnabled": {
            "type": "boolean"
          },
          "stripePublishableKey": {
            "type": "string",
            "description": "The project's Stripe publishable key, handed to the client so the embedded\ncomponent can initialize. Public by design — it belongs to the same Stripe\naccount as the embedded credentials below, so it is per-project too."
          },
          "coinbaseHeadlessConfigured": {
            "type": "boolean",
            "description": "The project's CDP key pair is set (webhook secret is separate and optional)."
          },
          "stripeConfigured": {
            "type": "boolean",
            "description": "The project's Stripe secret key is set (webhook secret is separate and optional)."
          },
          "stripeEmbeddedConfigured": {
            "type": "boolean",
            "description": "The project's Stripe secret key AND Link OAuth client are set — the\nembedded in-page rail is unlocked. Without the optional Link OAuth\nclient, Stripe runs through the hosted popup on the secret key alone."
          }
        },
        "required": [
          "ecosystem",
          "defaultChain",
          "defaultCurrency",
          "recommendedAmount",
          "crossChainBridging",
          "onrampEnabled",
          "onrampMethods",
          "walletPayEnabled",
          "stripeEnabled",
          "hostedCheckoutEnabled",
          "depositAddressEnabled",
          "depositFromWalletEnabled",
          "stripePublishableKey",
          "coinbaseHeadlessConfigured",
          "stripeConfigured",
          "stripeEmbeddedConfigured"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FundingCredentialsRequest": {
        "description": "The developer's provider credentials for the in-page rails. Every field is\noptional and write-only: omit one to keep what is stored, send an empty\nstring to clear it. They are never returned by the API.",
        "properties": {
          "coinbaseKeyName": {
            "type": "string",
            "description": "CDP key id — Coinbase headless/native orders sign with it."
          },
          "coinbaseKeySecret": {
            "type": "string",
            "description": "CDP key secret."
          },
          "coinbaseWebhookSecret": {
            "type": "string",
            "description": "Signing secret for the project's tenant-scoped Coinbase webhook endpoint."
          },
          "stripeSecretKey": {
            "type": "string",
            "description": "The Stripe secret key the Link OAuth client was provisioned against."
          },
          "stripeLinkClientId": {
            "type": "string",
            "description": "Link OAuth client id, provisioned by Stripe during onboarding."
          },
          "stripeLinkClientSecret": {
            "type": "string",
            "description": "Link OAuth client secret."
          },
          "stripeWebhookSecret": {
            "type": "string",
            "description": "Signing secret for the project's tenant-scoped Stripe webhook endpoint."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "Pick_FundingProjectConfig.Exclude_keyofFundingProjectConfig.recommendedAmount-or-credentials-or-stripePublishableKey__": {
        "properties": {
          "ecosystem": {
            "type": "string"
          },
          "defaultChain": {
            "type": "string"
          },
          "defaultCurrency": {
            "type": "string"
          },
          "crossChainBridging": {
            "type": "boolean"
          },
          "onrampEnabled": {
            "type": "boolean"
          },
          "onrampMethods": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Enabled web2 methods (FundingMethod values), in display order."
          },
          "walletPayEnabled": {
            "type": "boolean",
            "description": "Whether native wallet pay (Apple/Google Pay) is offered. Needs the project's own CDP keys."
          },
          "stripeEnabled": {
            "type": "boolean",
            "description": "Whether the Stripe rail is offered. With the project's own Link OAuth\nclient it runs in-page (embedded); without one it degrades to the\nhosted popup on the project's secret key alone."
          },
          "hostedCheckoutEnabled": {
            "type": "boolean",
            "description": "Whether Coinbase hosted-checkout popup rows (including the rest-of-world fallback) are offered."
          },
          "depositAddressEnabled": {
            "type": "boolean"
          },
          "depositFromWalletEnabled": {
            "type": "boolean"
          }
        },
        "required": [
          "ecosystem",
          "defaultChain",
          "defaultCurrency",
          "crossChainBridging",
          "onrampEnabled",
          "onrampMethods",
          "walletPayEnabled",
          "stripeEnabled",
          "hostedCheckoutEnabled",
          "depositAddressEnabled",
          "depositFromWalletEnabled"
        ],
        "type": "object",
        "description": "From T, pick a set of properties whose keys are in the union K"
      },
      "UpdateFundingConfigRequest": {
        "description": "Body for PUT /v2/funding/config — the dashboard \"Funding\" section config.\nThe stored shape verbatim, except credentials are write-only and partial.",
        "properties": {
          "ecosystem": {
            "type": "string"
          },
          "defaultChain": {
            "type": "string"
          },
          "defaultCurrency": {
            "type": "string"
          },
          "crossChainBridging": {
            "type": "boolean"
          },
          "onrampEnabled": {
            "type": "boolean"
          },
          "onrampMethods": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Enabled web2 methods (FundingMethod values), in display order."
          },
          "walletPayEnabled": {
            "type": "boolean",
            "description": "Whether native wallet pay (Apple/Google Pay) is offered. Needs the project's own CDP keys."
          },
          "stripeEnabled": {
            "type": "boolean",
            "description": "Whether the Stripe rail is offered. With the project's own Link OAuth\nclient it runs in-page (embedded); without one it degrades to the\nhosted popup on the project's secret key alone."
          },
          "hostedCheckoutEnabled": {
            "type": "boolean",
            "description": "Whether Coinbase hosted-checkout popup rows (including the rest-of-world fallback) are offered."
          },
          "depositAddressEnabled": {
            "type": "boolean"
          },
          "depositFromWalletEnabled": {
            "type": "boolean"
          },
          "recommendedAmount": {
            "type": "string",
            "nullable": true,
            "description": "Null and omitted both mean \"no recommended amount\"."
          },
          "stripePublishableKey": {
            "type": "string",
            "nullable": true,
            "description": "Follows the credential rules, since it belongs to the same Stripe account:\nomit to keep what is stored, send an empty string to clear it."
          },
          "credentials": {
            "$ref": "#/components/schemas/FundingCredentialsRequest"
          }
        },
        "required": [
          "ecosystem",
          "defaultChain",
          "defaultCurrency",
          "crossChainBridging",
          "onrampEnabled",
          "onrampMethods",
          "walletPayEnabled",
          "stripeEnabled",
          "hostedCheckoutEnabled",
          "depositAddressEnabled",
          "depositFromWalletEnabled"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FeeSponsorshipListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/FeeSponsorshipResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FeeSponsorshipListQueries": {
        "description": "Query parameters for listing fee sponsorship policies.",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "name": {
            "type": "string",
            "description": "Filter by policy name (partial match).",
            "example": "DeFi"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "Filter by chain ID.",
            "example": 1
          },
          "enabled": {
            "type": "boolean",
            "description": "Filter by enabled status.",
            "example": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Include deleted policies.",
            "example": false,
            "default": false
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "EvmTokenContractEntry": {
        "description": "A single ERC-20 token entry in a multi-token EVM gas-sponsorship policy.",
        "properties": {
          "contract": {
            "type": "string",
            "description": "Token contract UUID.",
            "example": "con_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "amount": {
            "type": "string",
            "description": "Static exchange rate (wei-denominated). Omit to use the dynamic cached rate.",
            "example": "1000000000000000000"
          }
        },
        "required": [
          "contract"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FeeSponsorshipStrategy": {
        "description": "Strategy configuration for fee sponsorship.",
        "properties": {
          "sponsorSchema": {
            "$ref": "#/components/schemas/SponsorSchema",
            "description": "The sponsorship schema type.",
            "example": "pay_for_user"
          },
          "tokenContract": {
            "type": "string",
            "description": "Token contract UUID for charge_custom_tokens or fixed_rate schemas (EVM).",
            "example": "con_48eeba57-2cd5-4159-a2cb-057a23a35e65",
            "deprecated": true
          },
          "tokenContractAmount": {
            "type": "string",
            "description": "Token amount for charge_custom_tokens or fixed_rate schemas (EVM).",
            "example": "1000000000000000000",
            "deprecated": true
          },
          "tokenContracts": {
            "items": {
              "$ref": "#/components/schemas/EvmTokenContractEntry"
            },
            "type": "array",
            "description": "ERC-20 tokens accepted as user-pay fee for EVM charge_custom_tokens policies.\nMutually exclusive with the deprecated tokenContract / tokenContractAmount fields\nand with splTokens.",
            "example": [
              {
                "contract": "con_48eeba57-2cd5-4159-a2cb-057a23a35e65",
                "amount": "1000000000000000000"
              }
            ]
          },
          "splTokens": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "SPL mint addresses (base58) accepted as fee payment for Solana\ncharge_custom_tokens policies. Solana-only; mutually exclusive with\ntokenContract / tokenContracts.",
            "example": [
              "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
            ]
          }
        },
        "required": [
          "sponsorSchema"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateFeeSponsorshipRequest": {
        "description": "Request to create a new fee sponsorship policy.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the fee sponsorship policy.",
            "example": "My DeFi Gas Sponsorship"
          },
          "strategy": {
            "$ref": "#/components/schemas/FeeSponsorshipStrategy",
            "description": "Sponsorship strategy configuration."
          },
          "paymaster": {
            "type": "string",
            "description": "Paymaster UUID (optional, for pay_for_user schema).",
            "example": "pay_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "Chain ID for single-chain sponsorship.",
            "example": 8453,
            "deprecated": true
          },
          "forwarderContractId": {
            "type": "string",
            "description": "Forwarder contract UUID (optional, for meta-transactions).",
            "example": "cfo_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "policyId": {
            "type": "string",
            "description": "Link to a policy for criteria-based transaction filtering.\nCreate the policy first via /v2/policies, then reference it here.",
            "example": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        },
        "required": [
          "strategy",
          "policyId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateFeeSponsorshipRequest": {
        "description": "Request to update a fee sponsorship policy.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the fee sponsorship policy.",
            "example": "Updated Gas Sponsorship"
          },
          "strategy": {
            "$ref": "#/components/schemas/FeeSponsorshipStrategy",
            "description": "Sponsorship strategy configuration."
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "Chain ID for single-chain sponsorship.",
            "example": 8453,
            "deprecated": true
          },
          "forwarderContractId": {
            "type": "string",
            "description": "Forwarder contract UUID (optional, for meta-transactions).",
            "example": "cfo_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "policyId": {
            "type": "string",
            "description": "Link to a policy for criteria-based transaction filtering.",
            "example": "ply_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "FeeSponsorshipDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.FEE_SPONSORSHIP"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RecoverV2Response": {
        "properties": {
          "id": {
            "type": "string"
          },
          "account": {
            "type": "string"
          },
          "signerAddress": {
            "type": "string"
          },
          "signer": {
            "type": "string"
          },
          "share": {
            "type": "string"
          },
          "isPrimary": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "account",
          "signerAddress",
          "signer",
          "share",
          "isPrimary",
          "createdAt",
          "user"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RecoverV2EmbeddedRequest": {
        "properties": {
          "account": {
            "type": "string"
          }
        },
        "required": [
          "account"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RegisterEmbeddedV2Request": {
        "properties": {
          "account": {
            "type": "string"
          },
          "share": {
            "type": "string"
          }
        },
        "required": [
          "account",
          "share"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateEmbeddedRequest": {
        "properties": {
          "accountType": {
            "type": "string",
            "enum": [
              "Externally Owned Account",
              "Smart Account",
              "Delegated Account"
            ],
            "description": "The type of smart account that will be created. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".",
            "example": "Externally Owned Account"
          },
          "chainType": {
            "type": "string",
            "enum": [
              "EVM",
              "SVM"
            ],
            "description": "The chain type. \"EVM\" or \"SVM\".",
            "example": "EVM"
          },
          "address": {
            "type": "string",
            "description": "The wallet address. For EOA: the EOA address. For Smart Account: the owner address (EOA will be created with this address). For Delegated Account: the address for both EOA and Delegated Account.",
            "example": "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains). Required for Smart Account and Delegated Account types.",
            "example": 80002
          },
          "share": {
            "type": "string",
            "description": "Specifies the share repositories. Required for creating embedded accounts.",
            "example": "7d526b7e99fbf52850a183..."
          },
          "signerUuid": {
            "type": "string"
          },
          "implementationType": {
            "type": "string",
            "description": "The type of smart account that will be created (e.g. UpgradeableV6, UpgradeableV5, Calibur, Simple). Defaults to UpgradeableV6 in mainnets. Must support EIP-7702 for Delegated Accounts.",
            "example": "UpgradeableV6"
          }
        },
        "required": [
          "accountType",
          "chainType",
          "address"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateBackendWalletResponse": {
        "description": "Response from creating a new backend wallet account.",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "account"
            ],
            "nullable": false,
            "description": "The type of object."
          },
          "id": {
            "type": "string",
            "description": "The created account ID (starts with `acc_`).",
            "example": "acc_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          },
          "address": {
            "type": "string",
            "description": "The wallet address generated for this account.",
            "example": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
          },
          "walletId": {
            "type": "string",
            "description": "The wallet ID",
            "example": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "chainType": {
            "type": "string",
            "enum": [
              "EVM",
              "SVM"
            ],
            "description": "The chain type the wallet is associated with.",
            "example": "EVM"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32",
            "description": "Creation timestamp (Unix epoch seconds)."
          }
        },
        "required": [
          "object",
          "id",
          "address",
          "walletId",
          "chainType",
          "createdAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateBackendWalletRequest": {
        "description": "Request to create a new backend wallet account.",
        "properties": {
          "chainType": {
            "type": "string",
            "enum": [
              "EVM",
              "SVM"
            ],
            "description": "The chain type for the new wallet.",
            "example": "EVM"
          },
          "wallet": {
            "type": "string",
            "description": "The wallet ID to associate with this wallet (starts with `pla_`).",
            "example": "pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          }
        },
        "required": [
          "chainType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DeleteBackendWalletResponse": {
        "description": "Response from deleting a backend wallet.",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "backendWallet"
            ],
            "nullable": false,
            "description": "The type of object."
          },
          "id": {
            "type": "string",
            "description": "The deleted wallet ID.",
            "example": "acc_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          },
          "deleted": {
            "type": "boolean",
            "description": "Whether the wallet was deleted."
          }
        },
        "required": [
          "object",
          "id",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SignResponse": {
        "description": "Response from signing data via backend wallet.",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "signature"
            ],
            "nullable": false,
            "description": "The type of object."
          },
          "account": {
            "type": "string",
            "description": "The account ID that signed the data (starts with `acc_`).",
            "example": "acc_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          },
          "signature": {
            "type": "string",
            "description": "The signature bytes (hex-encoded).",
            "example": "0x1234567890abcdef..."
          }
        },
        "required": [
          "object",
          "account",
          "signature"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SignRequest": {
        "description": "Request to sign data via backend wallet.",
        "properties": {
          "data": {
            "type": "string",
            "description": "The data to sign (hex-encoded transaction data or message hash).",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
          }
        },
        "required": [
          "data"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ExportPrivateKeyResponse": {
        "description": "Response from exporting a private key with E2E encryption.",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "exportedKey"
            ],
            "nullable": false,
            "description": "The type of object."
          },
          "encryptedPrivateKey": {
            "type": "string",
            "description": "The private key encrypted with RSA-OAEP SHA-256 using your ephemeral public key (base64-encoded).\nDecrypt using your ephemeral RSA private key.",
            "example": "base64_encrypted_data..."
          }
        },
        "required": [
          "object",
          "encryptedPrivateKey"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ExportPrivateKeyRequest": {
        "description": "Request to export private key with E2E encryption.",
        "properties": {
          "encryptionKey": {
            "type": "string",
            "description": "Client's ephemeral RSA-4096 public key for end-to-end encryption (base64 SPKI DER format).\nThe backend wallet will encrypt the private key using RSA-OAEP SHA-256.",
            "example": "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA..."
          }
        },
        "required": [
          "encryptionKey"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ImportPrivateKeyResponse": {
        "description": "Response from importing a private key with E2E encryption.",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "account"
            ],
            "nullable": false,
            "description": "The type of object."
          },
          "id": {
            "type": "string",
            "description": "The created account ID (starts with `acc_`).",
            "example": "acc_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          },
          "address": {
            "type": "string",
            "description": "The wallet address derived from the imported private key.",
            "example": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
          },
          "walletId": {
            "type": "string",
            "description": "The wallet ID",
            "example": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "chainType": {
            "type": "string",
            "enum": [
              "EVM",
              "SVM"
            ],
            "description": "The chain type the wallet is associated with.",
            "example": "EVM"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32",
            "description": "Creation timestamp (Unix epoch seconds)."
          }
        },
        "required": [
          "object",
          "id",
          "address",
          "walletId",
          "createdAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ImportPrivateKeyRequest": {
        "description": "Request to import private key with E2E encryption.",
        "properties": {
          "encryptedPrivateKey": {
            "type": "string",
            "description": "The private key encrypted with RSA-OAEP SHA-256 using the server's static import public key.\nObtain the server's import public key out-of-band (e.g., from SDK or documentation).",
            "example": "base64_encrypted_data..."
          },
          "chainType": {
            "type": "string",
            "enum": [
              "EVM",
              "SVM"
            ],
            "description": "The chain type for the imported wallet.",
            "example": "EVM"
          },
          "wallet": {
            "type": "string",
            "description": "The wallet ID to associate with this wallet (starts with `pla_`).",
            "example": "pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          }
        },
        "required": [
          "encryptedPrivateKey"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RegisterWalletSecretResponse": {
        "description": "Response from registering a new wallet secret.",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "walletSecret"
            ],
            "nullable": false,
            "description": "The type of object."
          },
          "keyId": {
            "type": "string",
            "description": "The key ID for the registered secret.",
            "example": "ws_1234567890"
          },
          "registeredAt": {
            "type": "integer",
            "format": "int32",
            "description": "Timestamp when the secret was registered (Unix epoch seconds)."
          }
        },
        "required": [
          "object",
          "keyId",
          "registeredAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RegisterWalletSecretRequest": {
        "description": "Request to register a new wallet secret (authentication key).\n\nUses provided-key authentication: the walletAuthToken JWT must be signed by\nthe private key corresponding to the publicKey being registered.",
        "properties": {
          "publicKey": {
            "type": "string",
            "description": "ECDSA P-256 public key for wallet authentication (PEM format).\nThis will be used to verify X-Wallet-Auth JWT signatures.",
            "example": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE..."
          },
          "walletAuthToken": {
            "type": "string",
            "description": "JWT signed with the private key corresponding to publicKey.\nThis proves possession of the private key without transmitting it.\n\nJWT must include: uris (matching request path), reqHash (SHA-256 of request body),\niat (issued at), nbf (not before), and optionally exp (expiration).",
            "example": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9..."
          },
          "keyId": {
            "type": "string",
            "description": "Key identifier for the secret.\nUsed to identify this key in X-Wallet-Auth JWT headers.",
            "example": "ws_1234567890"
          }
        },
        "required": [
          "publicKey",
          "walletAuthToken"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RevokeWalletSecretResponse": {
        "description": "Response from revoking a wallet secret.",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "walletSecretRevocation"
            ],
            "nullable": false,
            "description": "The type of object."
          },
          "keyId": {
            "type": "string",
            "description": "The key ID of the revoked secret.",
            "example": "ws_1234567890"
          },
          "revoked": {
            "type": "boolean",
            "description": "Whether the secret was successfully revoked."
          },
          "revokedAt": {
            "type": "integer",
            "format": "int32",
            "description": "Timestamp when the secret was revoked (Unix epoch seconds)."
          }
        },
        "required": [
          "object",
          "keyId",
          "revoked",
          "revokedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RevokeWalletSecretRequest": {
        "description": "Request to revoke a wallet secret (authentication key).",
        "properties": {
          "keyId": {
            "type": "string",
            "description": "Key identifier of the secret to revoke.",
            "example": "ws_1234567890"
          }
        },
        "required": [
          "keyId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RotateWalletSecretResponse": {
        "description": "Response from rotating a wallet secret.",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "walletSecretRotation"
            ],
            "nullable": false,
            "description": "The type of object."
          },
          "success": {
            "type": "boolean",
            "description": "Whether the rotation was successful."
          },
          "rotatedAt": {
            "type": "integer",
            "format": "int32",
            "description": "Timestamp when the rotation occurred (Unix epoch seconds)."
          }
        },
        "required": [
          "object",
          "success",
          "rotatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RotateWalletSecretRequest": {
        "description": "Request to rotate wallet secret (authentication key).\n\nUses provided-key authentication: the walletAuthToken JWT must be signed by\nthe private key corresponding to the newPublicKey being registered.",
        "properties": {
          "newPublicKey": {
            "type": "string",
            "description": "New ECDSA P-256 public key for wallet authentication (PEM format).\nThis will replace the current wallet secret used for X-Wallet-Auth JWT signing.",
            "example": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE..."
          },
          "walletAuthToken": {
            "type": "string",
            "description": "JWT signed with the private key corresponding to newPublicKey.\nThis proves possession of the private key without transmitting it.\n\nJWT must include: uris (matching request path), reqHash (SHA-256 of request body),\niat (issued at), nbf (not before), and optionally exp (expiration).",
            "example": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9..."
          },
          "newKeyId": {
            "type": "string",
            "description": "Key identifier for the new secret.\nUsed to identify this key in X-Wallet-Auth JWT headers.",
            "example": "ws_1234567890"
          }
        },
        "required": [
          "newPublicKey",
          "walletAuthToken"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BaseEntityListResponse_AccountV2Response_": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/AccountV2Response"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AccountListV2Response": {
        "$ref": "#/components/schemas/BaseEntityListResponse_AccountV2Response_"
      },
      "AccountListQueriesV2": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "user": {
            "type": "string",
            "description": "Specifies the unique user ID (starts with pla_)",
            "example": "pla_6f6c9067-89fa-4fc8-ac72-c242a268c584"
          },
          "chainType": {
            "type": "string",
            "enum": [
              "EVM",
              "SVM"
            ],
            "description": "The chain type. Must be either \"EVM\" or \"SVM\".",
            "example": "EVM"
          },
          "accountType": {
            "type": "string",
            "enum": [
              "Externally Owned Account",
              "Smart Account",
              "Delegated Account"
            ],
            "description": "Specifies the type of account. Must be either \"Smart Account\" or \"Externally Owned Account\".",
            "example": "Smart Account"
          },
          "custody": {
            "type": "string",
            "enum": [
              "Developer",
              "User"
            ],
            "description": "Specifies the key custody of the account. Must be either \"Developer\" or \"User\".",
            "example": "Developer"
          },
          "address": {
            "type": "string",
            "description": "Specifies the account address",
            "example": "0xf7b4c54cca21cccf42796502bf94e2838fbd44c4"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "SignerIdResponse": {
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SwitchChainQueriesV2": {
        "properties": {
          "account": {
            "type": "string",
            "description": "The account ID (starts with acc_)"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The target chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          }
        },
        "required": [
          "account",
          "chainId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateAccountRequestV2": {
        "properties": {
          "accountType": {
            "type": "string",
            "enum": [
              "Externally Owned Account",
              "Smart Account",
              "Delegated Account"
            ],
            "description": "The type of smart account that will be created. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".",
            "example": "Externally Owned Account"
          },
          "chainType": {
            "type": "string",
            "enum": [
              "EVM",
              "SVM"
            ],
            "description": "The chain type. \"EVM\" or \"SVM\".",
            "example": "EVM"
          },
          "address": {
            "type": "string"
          },
          "implementationType": {
            "type": "string",
            "description": "The type of smart account that will be created (e.g. UpgradeableV6, UpgradeableV5, Calibur). Defaults to UpgradeableV6 in mainnets.",
            "example": "UpgradeableV6"
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "user": {
            "type": "string",
            "description": "ID of the user this account belongs to (starts with `usr_`). Also might take wallet ID (starts with `pla_`)",
            "example": "usr_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          },
          "account": {
            "type": "string",
            "description": "ID of the account (starts with `acc_`) to be linked with. Required for accountType \"Smart Account\".",
            "example": "acc_e0b84653-1741-4a3d-9e91-2b0fd2942f60"
          }
        },
        "required": [
          "accountType",
          "chainType",
          "user"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ExportShareResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "wallet": {
            "type": "string"
          },
          "accountType": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "ownerAddress": {
            "type": "string"
          },
          "chainType": {
            "type": "string"
          },
          "chainId": {
            "type": "number",
            "format": "double"
          },
          "createdAt": {
            "type": "number",
            "format": "double"
          },
          "updatedAt": {
            "type": "number",
            "format": "double"
          },
          "smartAccount": {
            "$ref": "#/components/schemas/SmartAccountData"
          },
          "recoveryMethod": {
            "type": "string"
          },
          "recoveryMethodDetails": {
            "$ref": "#/components/schemas/RecoveryMethodDetails"
          },
          "custody": {
            "type": "string",
            "enum": [
              "Developer",
              "User"
            ],
            "description": "Indicates key custody: \"Developer\" for TEE managed keys, \"User\" for user-managed keys.",
            "example": "Developer"
          },
          "share": {
            "type": "string"
          },
          "signerId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "wallet",
          "accountType",
          "address",
          "chainType",
          "createdAt",
          "updatedAt",
          "custody",
          "share",
          "signerId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DeleteAccountResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.ACCOUNT"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "WebhookSecretInfoResponse": {
        "description": "Metadata about the per-environment webhook signing secret.\n\nNever includes the raw secret. The hint is a short prefix so callers can\nidentify which secret is active without seeing the full value.",
        "properties": {
          "hint": {
            "type": "string"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int32"
          },
          "livemode": {
            "type": "boolean"
          }
        },
        "required": [
          "hint",
          "createdAt",
          "updatedAt",
          "livemode"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "WebhookSecretRotateResponse": {
        "description": "Response from a rotation. The raw secret is returned exactly once here and\ncannot be retrieved again — callers must capture it now. `updatedAt` is the\ntimestamp at which the new secret was written.",
        "properties": {
          "signingSecret": {
            "type": "string"
          },
          "hint": {
            "type": "string"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int32"
          },
          "livemode": {
            "type": "boolean"
          }
        },
        "required": [
          "signingSecret",
          "hint",
          "updatedAt",
          "livemode"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserProjectRole": {
        "enum": [
          "OWNER",
          "ADMIN",
          "MEMBER"
        ],
        "type": "string",
        "x-enum-varnames": [
          "OWNER",
          "ADMIN",
          "MEMBER"
        ]
      },
      "EntityType.USER": {
        "enum": [
          "user"
        ],
        "type": "string",
        "x-enum-varnames": [
          "USER"
        ]
      },
      "UserProjectResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.USER"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int32"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "role": {
            "$ref": "#/components/schemas/UserProjectRole"
          },
          "email": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "updatedAt",
          "firstName",
          "lastName",
          "role",
          "email"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserProjectListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/UserProjectResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserProjectRole.ADMIN": {
        "enum": [
          "ADMIN"
        ],
        "type": "string",
        "x-enum-varnames": [
          "ADMIN"
        ]
      },
      "UserProjectRole.MEMBER": {
        "enum": [
          "MEMBER"
        ],
        "type": "string",
        "x-enum-varnames": [
          "MEMBER"
        ]
      },
      "UserProjectCreateRequest": {
        "properties": {
          "role": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UserProjectRole.ADMIN"
              },
              {
                "$ref": "#/components/schemas/UserProjectRole.MEMBER"
              }
            ],
            "description": "The role of the user.",
            "example": "MEMBER"
          },
          "email": {
            "type": "string",
            "description": "The email of the user to add.",
            "example": "name@company.com"
          }
        },
        "required": [
          "email"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserProjectUpdateRequest": {
        "properties": {
          "role": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UserProjectRole.MEMBER"
              },
              {
                "$ref": "#/components/schemas/UserProjectRole.ADMIN"
              }
            ],
            "description": "The role of the user.",
            "example": "MEMBER"
          }
        },
        "required": [
          "role"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserProjectDeleteResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.USER"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UsageAlert": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "warning",
              "critical",
              "info"
            ]
          },
          "message": {
            "type": "string"
          },
          "percentUsed": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "type",
          "message",
          "percentUsed"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UsageSummaryResponse": {
        "properties": {
          "plan": {
            "properties": {
              "priceUsd": {
                "type": "integer",
                "format": "int32"
              },
              "name": {
                "type": "string"
              },
              "tier": {
                "type": "string"
              }
            },
            "required": [
              "priceUsd",
              "name",
              "tier"
            ],
            "type": "object"
          },
          "operations": {
            "properties": {
              "estimatedOverageCostUsd": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "overageCount": {
                "type": "integer",
                "format": "int32"
              },
              "percentUsed": {
                "type": "number",
                "format": "double"
              },
              "included": {
                "type": "integer",
                "format": "int32"
              },
              "current": {
                "type": "integer",
                "format": "int32"
              }
            },
            "required": [
              "estimatedOverageCostUsd",
              "overageCount",
              "percentUsed",
              "included",
              "current"
            ],
            "type": "object"
          },
          "billingPeriod": {
            "properties": {
              "end": {
                "type": "string"
              },
              "start": {
                "type": "string"
              }
            },
            "required": [
              "end",
              "start"
            ],
            "type": "object"
          },
          "alerts": {
            "items": {
              "$ref": "#/components/schemas/UsageAlert"
            },
            "type": "array"
          }
        },
        "required": [
          "plan",
          "operations",
          "billingPeriod",
          "alerts"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MonthlyUsageHistoryResponse": {
        "properties": {
          "months": {
            "items": {
              "properties": {
                "overageCostUsd": {
                  "type": "number",
                  "format": "double",
                  "nullable": true
                },
                "operationsIncluded": {
                  "type": "integer",
                  "format": "int32"
                },
                "operationsCount": {
                  "type": "integer",
                  "format": "int32"
                },
                "month": {
                  "type": "string"
                }
              },
              "required": [
                "overageCostUsd",
                "operationsIncluded",
                "operationsCount",
                "month"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "months"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ApiKeyResponse": {
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "token": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "livemode": {
            "type": "boolean"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Scopes restricting this API key's access. Empty array means full access."
          },
          "secretKey": {
            "type": "string",
            "description": "The raw secret key - only populated on creation/rotation for secret keys"
          }
        },
        "required": [
          "id",
          "createdAt",
          "token",
          "name",
          "livemode",
          "scopes"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "WebhookResponse": {
        "properties": {
          "webhook": {
            "type": "string",
            "nullable": true
          },
          "livemode": {
            "type": "boolean"
          },
          "signingSecret": {
            "type": "string",
            "description": "The raw webhook signing secret. Only populated on project creation —\nnever returned by GET endpoints. Capture it now; use the rotate endpoint\nif you lose it."
          }
        },
        "required": [
          "webhook",
          "livemode"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.PROJECT": {
        "enum": [
          "project"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PROJECT"
        ]
      },
      "ChildProjectResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PROJECT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ChildProjectListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/ChildProjectResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ProjectResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PROJECT"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "apikeys": {
            "items": {
              "$ref": "#/components/schemas/ApiKeyResponse"
            },
            "type": "array"
          },
          "webhook": {
            "items": {
              "$ref": "#/components/schemas/WebhookResponse"
            },
            "type": "array"
          },
          "parentProject": {
            "type": "string"
          },
          "childProjects": {
            "$ref": "#/components/schemas/ChildProjectListResponse"
          },
          "isV2": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "deletionProtected": {
            "type": "boolean",
            "description": "\"Permanent\" marker: the project is exempt from the automatic inactivity\ndeletion sweep. Toggled by Openfort staff only; manual owner deletion\nignores it."
          },
          "scheduledDeletion": {
            "properties": {
              "deleteAfter": {
                "type": "string",
                "description": "ISO 8601 timestamp after which the purge may start.",
                "example": "2026-09-08T03:00:00.000Z"
              }
            },
            "required": [
              "deleteAfter"
            ],
            "type": "object",
            "description": "Present when the project is scheduled for deletion due to inactivity.\nPurely informational for the dashboard: any authenticated activity on\nthe project — including the dashboard visit that fetched this response —\ncancels the schedule automatically at the next daily inactivity check."
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "updatedAt",
          "name",
          "isV2",
          "isActive"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ProjectListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/ProjectResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TransactionStat": {
        "properties": {
          "timestamp": {
            "type": "string"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "successful": {
            "type": "number",
            "format": "double"
          },
          "gasUsed": {
            "type": "string"
          }
        },
        "required": [
          "timestamp",
          "total",
          "successful",
          "gasUsed"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Stat": {
        "properties": {
          "timestamp": {
            "type": "string"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "timestamp",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DeviceStat": {
        "$ref": "#/components/schemas/Stat"
      },
      "ProjectStatsResponse": {
        "properties": {
          "transactionIntents": {
            "items": {
              "$ref": "#/components/schemas/TransactionStat"
            },
            "type": "array"
          },
          "devices": {
            "items": {
              "$ref": "#/components/schemas/DeviceStat"
            },
            "type": "array"
          }
        },
        "required": [
          "transactionIntents",
          "devices"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ProjectStatsRequest": {
        "properties": {
          "timeFrame": {
            "type": "string",
            "enum": [
              "day",
              "week",
              "month",
              "all"
            ]
          }
        },
        "required": [
          "timeFrame"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Plan": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "price": {
            "type": "number",
            "format": "double"
          },
          "is_current": {
            "type": "boolean"
          },
          "change_type": {
            "type": "string",
            "enum": [
              "upgrade",
              "downgrade",
              "none"
            ]
          },
          "legacy": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "price",
          "is_current",
          "change_type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PlansResponse": {
        "properties": {
          "plans": {
            "items": {
              "$ref": "#/components/schemas/Plan"
            },
            "type": "array"
          }
        },
        "required": [
          "plans"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BillingSubscriptionResponse": {
        "properties": {
          "currentPeriodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "currentPeriodStart": {
            "type": "string",
            "format": "date-time"
          },
          "canceledAt": {
            "type": "string",
            "format": "date-time"
          },
          "plan": {
            "properties": {
              "price": {
                "type": "number",
                "format": "double"
              },
              "name": {
                "type": "string"
              },
              "id": {
                "type": "string"
              }
            },
            "required": [
              "price",
              "name",
              "id"
            ],
            "type": "object"
          }
        },
        "required": [
          "plan"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PrivateKeyPolicy": {
        "enum": [
          "INDIVIDUAL",
          "PROJECT"
        ],
        "type": "string",
        "x-enum-varnames": [
          "INDIVIDUAL",
          "PROJECT"
        ]
      },
      "CreateProjectRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the project.",
            "example": "My Project",
            "minLength": 1,
            "maxLength": 256
          },
          "pkPolicy": {
            "$ref": "#/components/schemas/PrivateKeyPolicy",
            "description": "The private key policyfor the project.",
            "example": "PROJECT"
          },
          "createApiKey": {
            "type": "boolean",
            "description": "Whether to create API keys for the project.",
            "default": true
          }
        },
        "required": [
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DeletionProtectionRequest": {
        "properties": {
          "protected": {
            "type": "boolean",
            "description": "true marks the project \"permanent\" (exempt from the automatic inactivity\ndeletion sweep); false removes the exemption."
          }
        },
        "required": [
          "protected"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.PROJECT_DELETION": {
        "enum": [
          "project.deletion"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PROJECT_DELETION"
        ]
      },
      "ProjectDeletionResponse": {
        "properties": {
          "id": {
            "type": "string",
            "description": "The project being deleted.",
            "example": "pro_00000000-0000-0000-0000-000000000000"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PROJECT_DELETION"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending"
            ],
            "nullable": false,
            "description": "Deletion state. Access is cut immediately; the purge itself runs\nasynchronously."
          }
        },
        "required": [
          "id",
          "object",
          "status"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DeleteProjectRequest": {
        "properties": {
          "confirmation": {
            "type": "string",
            "description": "The exact name of the project, typed as confirmation. Deletion is\nirreversible: it wipes all project data across every Openfort service,\nincluding embedded-wallet key material.",
            "example": "My Project",
            "minLength": 1,
            "maxLength": 256
          }
        },
        "required": [
          "confirmation"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateProjectRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the project.",
            "example": "My Project",
            "minLength": 1,
            "maxLength": 256
          }
        },
        "required": [
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AllowedOriginsResponse": {
        "properties": {
          "allowedOrigins": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "allowedOrigins"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AllowedOriginsRequest": {
        "properties": {
          "allowedOrigins": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "allowedOrigins"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MfaEmailChallengeResponse": {
        "properties": {
          "sent": {
            "type": "boolean"
          }
        },
        "required": [
          "sent"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MfaEmailVerifyResponse": {
        "properties": {
          "verified": {
            "type": "boolean"
          },
          "factorsRemoved": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "verified",
          "factorsRemoved"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MfaEmailVerifyRequest": {
        "properties": {
          "code": {
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SMTPVerificationResponse": {
        "description": "Result of the confirmation email Openfort sends through the configuration.",
        "properties": {
          "delivered": {
            "type": "boolean",
            "description": "True when the SMTP server accepted and delivered the confirmation email."
          },
          "code": {
            "type": "string",
            "description": "SMTP client error identifier, e.g. \"EAUTH\", \"ETIMEDOUT\". Absent when delivered."
          },
          "responseCode": {
            "type": "number",
            "format": "double",
            "description": "SMTP reply code, e.g. 535. Absent when delivered."
          },
          "response": {
            "type": "string",
            "description": "Raw reply from the SMTP server. Absent when delivered."
          },
          "message": {
            "type": "string",
            "description": "Human readable failure reason. Absent when delivered."
          }
        },
        "required": [
          "delivered"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EntityType.SMTP_CONFIG": {
        "enum": [
          "smtpConfig"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SMTP_CONFIG"
        ]
      },
      "CreateSMTPConfigResponse": {
        "properties": {
          "user": {
            "type": "string"
          },
          "pass": {
            "type": "string"
          },
          "host": {
            "type": "string"
          },
          "port": {
            "type": "number",
            "format": "double"
          },
          "from": {
            "type": "string"
          },
          "useSSL": {
            "type": "boolean"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.SMTP_CONFIG"
          },
          "verification": {
            "$ref": "#/components/schemas/SMTPVerificationResponse"
          }
        },
        "required": [
          "user",
          "pass",
          "host",
          "port",
          "from",
          "useSSL",
          "object",
          "verification"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpsertSMTPConfigRequest": {
        "properties": {
          "user": {
            "type": "string",
            "description": "Specifies the user name",
            "example": "user"
          },
          "pass": {
            "type": "string",
            "description": "Specifies the password",
            "example": "pass"
          },
          "host": {
            "type": "string",
            "description": "Specifies the host",
            "example": "host"
          },
          "from": {
            "type": "string",
            "description": "Specifies the from",
            "example": "from"
          },
          "port": {
            "type": "number",
            "format": "double",
            "description": "Specifies the port",
            "example": 0
          },
          "useSSL": {
            "type": "boolean",
            "description": "Specifies the use SSL",
            "example": true
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "TestSMTPConfigResponse": {
        "properties": {
          "verification": {
            "$ref": "#/components/schemas/SMTPVerificationResponse"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.SMTP_CONFIG"
          }
        },
        "required": [
          "verification",
          "object"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SMTPConfigResponse": {
        "properties": {
          "user": {
            "type": "string"
          },
          "pass": {
            "type": "string"
          },
          "host": {
            "type": "string"
          },
          "port": {
            "type": "number",
            "format": "double"
          },
          "from": {
            "type": "string"
          },
          "useSSL": {
            "type": "boolean"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.SMTP_CONFIG"
          }
        },
        "required": [
          "user",
          "pass",
          "host",
          "port",
          "from",
          "useSSL",
          "object"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "GetSMTPConfigResponse": {
        "$ref": "#/components/schemas/SMTPConfigResponse"
      },
      "DeleteSMTPConfigResponse": {
        "properties": {
          "deleted": {
            "type": "boolean"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.SMTP_CONFIG"
          }
        },
        "required": [
          "deleted",
          "object"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EmailTypeResponse": {
        "enum": [
          "emailVerification",
          "passwordReset"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EMAIL_VERIFICATION",
          "PASSWORD_RESET"
        ]
      },
      "EntityType.EMAIL_SAMPLE": {
        "enum": [
          "emailSample"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EMAIL_SAMPLE"
        ]
      },
      "EmailSampleResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.EMAIL_SAMPLE"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/EmailTypeResponse"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "name",
          "subject",
          "body",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateEmailSampleResponse": {
        "$ref": "#/components/schemas/EmailSampleResponse"
      },
      "EmailTypeRequest": {
        "enum": [
          "emailVerification",
          "passwordReset"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EMAIL_VERIFICATION",
          "PASSWORD_RESET"
        ]
      },
      "CreateEmailSampleRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Specifies the name",
            "example": "name"
          },
          "subject": {
            "type": "string",
            "description": "Specifies the subject",
            "example": "subject"
          },
          "body": {
            "type": "string",
            "description": "Specifies the body",
            "example": "body"
          },
          "type": {
            "$ref": "#/components/schemas/EmailTypeRequest",
            "description": "Specifies the type",
            "example": "emailVerification"
          }
        },
        "required": [
          "name",
          "subject",
          "body",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "GetEmailSampleResponse": {
        "$ref": "#/components/schemas/EmailSampleResponse"
      },
      "BaseEntityListResponse_EmailSampleResponse_": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/EmailSampleResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EmailSampleListResponse": {
        "$ref": "#/components/schemas/BaseEntityListResponse_EmailSampleResponse_"
      },
      "EmailSampleDeleteResponse": {
        "properties": {
          "deleted": {
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.EMAIL_SAMPLE"
          }
        },
        "required": [
          "deleted",
          "id",
          "object"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateEmailSampleResponse": {
        "$ref": "#/components/schemas/EmailSampleResponse"
      },
      "UpdateEmailSampleRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Specifies the name",
            "example": "name"
          },
          "subject": {
            "type": "string",
            "description": "Specifies the subject",
            "example": "subject"
          },
          "body": {
            "type": "string",
            "description": "Specifies the body",
            "example": "body"
          },
          "type": {
            "$ref": "#/components/schemas/EmailTypeRequest",
            "description": "Specifies the type",
            "example": "emailVerification"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "EcosystemMetadata": {
        "properties": {},
        "type": "object",
        "additionalProperties": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "number",
              "format": "double"
            }
          ]
        }
      },
      "EcosystemConfigurationResponse": {
        "properties": {
          "customDomain": {
            "type": "string",
            "description": "Subdomain of the ecosystem."
          },
          "primaryColor": {
            "type": "string",
            "description": "Primary color of the ecosystem."
          },
          "primaryColorForeground": {
            "type": "string",
            "description": "Primary color foreground of the ecosystem."
          },
          "radius": {
            "type": "string",
            "description": "Radius of the ecosystem."
          },
          "logoUrl": {
            "type": "string",
            "description": "Logo URL of the ecosystem."
          },
          "ecosystemWalletDomains": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Whitelisted frontend domains of the ecosystem."
          },
          "termsOfServiceUrl": {
            "type": "string",
            "description": "Terms of service URL",
            "example": "https://example.com/terms"
          },
          "privacyPolicyUrl": {
            "type": "string",
            "description": "Privacy policy URL",
            "example": "https://example.com/privacy"
          },
          "faviconUrl": {
            "type": "string",
            "description": "Favicon URL",
            "example": "https://example.com/favicon.ico"
          },
          "dashboardExamples": {
            "items": {
              "$ref": "#/components/schemas/EcosystemMetadata"
            },
            "type": "array",
            "description": "Examples of the ecosystem.",
            "example": []
          },
          "dashboardSDKs": {
            "items": {
              "$ref": "#/components/schemas/EcosystemMetadata"
            },
            "type": "array",
            "description": "SDKs of the ecosystem.",
            "example": []
          },
          "supportEmail": {
            "type": "string",
            "description": "Support email of the ecosystem.",
            "example": "support@openfort.xyz"
          },
          "documentationUrl": {
            "type": "string",
            "description": "Documentation URL of the ecosystem.",
            "example": "https://www.openfort.io/docs"
          }
        },
        "required": [
          "customDomain",
          "primaryColor",
          "primaryColorForeground",
          "radius",
          "logoUrl",
          "ecosystemWalletDomains"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateEcosystemConfigurationRequest": {
        "properties": {
          "customDomain": {
            "type": "string",
            "description": "Custom domain of the ecosystem."
          },
          "primaryColor": {
            "type": "string",
            "description": "Primary color of the ecosystem."
          },
          "primaryColorForeground": {
            "type": "string",
            "description": "Primary color foreground of the ecosystem."
          },
          "radius": {
            "type": "string",
            "description": "Radius of the ecosystem."
          },
          "logoUrl": {
            "type": "string",
            "description": "Logo URL of the ecosystem."
          },
          "ecosystemWalletDomains": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "URLs where the ecosystem wallet is hosted."
          },
          "termsOfServiceUrl": {
            "type": "string",
            "description": "Terms of service URL",
            "example": "https://example.com/terms"
          },
          "privacyPolicyUrl": {
            "type": "string",
            "description": "Privacy policy URL",
            "example": "https://example.com/privacy"
          },
          "faviconUrl": {
            "type": "string",
            "description": "Favicon URL",
            "example": "https://example.com/favicon.ico"
          },
          "dashboardExamples": {
            "items": {
              "$ref": "#/components/schemas/EcosystemMetadata"
            },
            "type": "array",
            "description": "Examples of the ecosystem.",
            "example": []
          },
          "dashboardSDKs": {
            "items": {
              "$ref": "#/components/schemas/EcosystemMetadata"
            },
            "type": "array",
            "description": "SDKs of the ecosystem.",
            "example": []
          },
          "supportEmail": {
            "type": "string",
            "description": "Support email of the ecosystem.",
            "example": "support@openfort.xyz"
          },
          "documentationUrl": {
            "type": "string",
            "description": "Documentation URL of the ecosystem.",
            "example": "https://www.openfort.io/docs"
          }
        },
        "required": [
          "customDomain",
          "primaryColor",
          "primaryColorForeground",
          "radius",
          "logoUrl"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MyEcosystemResponse": {
        "properties": {
          "publishableKey": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "configuration": {
            "$ref": "#/components/schemas/EcosystemConfigurationResponse"
          }
        },
        "required": [
          "publishableKey",
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ApiKeyType": {
        "enum": [
          "pk",
          "sk",
          "pk_shield",
          "sk_shield",
          "pk_wallet"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PUBLIC_KEY",
          "SECRET_KEY",
          "PUBLIC_KEY_SHIELD",
          "SECRET_KEY_SHIELD",
          "BACKEND_WALLET_PUBLIC_KEY"
        ]
      },
      "CreateProjectApiKeyRequest": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ApiKeyType",
            "description": "The type of the API key.",
            "example": "sk"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Optional scopes to restrict this API key's access.\nOnly applicable to secret keys (sk). Empty array or omitted means full access.",
            "example": [
              "accounts:read",
              "transactions:write"
            ]
          }
        },
        "required": [
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateProjectApiKeyRequest": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ApiKeyType",
            "description": "The type of the API key.",
            "example": "sk"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Optional scopes to restrict this API key's access.\nOnly applicable to secret keys (sk). Empty array or omitted means full access.",
            "example": [
              "accounts:read",
              "transactions:write"
            ]
          },
          "uuid": {
            "type": "string",
            "description": "The API key to update.",
            "example": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
          }
        },
        "required": [
          "type",
          "uuid"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateApiKeyScopesRequest": {
        "properties": {
          "uuid": {
            "type": "string",
            "description": "The API key to update.",
            "example": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The scopes to set on this secret key.",
            "example": [
              "accounts:read",
              "transactions:write"
            ],
            "minItems": 1
          }
        },
        "required": [
          "uuid",
          "scopes"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthorizedOriginsResponse": {
        "properties": {
          "origins": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "origins"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateAuthorizedOriginsRequest": {
        "properties": {
          "origins": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "origins"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthorizedNetworksResponse": {
        "properties": {
          "authorizedNetworks": {
            "items": {
              "properties": {
                "network": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "network",
                "name"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "authorizedNetworks"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthorizedNetwork": {
        "properties": {
          "name": {
            "type": "string"
          },
          "network": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "network"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateAuthorizedNetworksRequest": {
        "properties": {
          "authorizedNetworks": {
            "items": {
              "$ref": "#/components/schemas/AuthorizedNetwork"
            },
            "type": "array"
          }
        },
        "required": [
          "authorizedNetworks"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthorizedAppsResponse": {
        "properties": {
          "authorizedApps": {
            "items": {
              "properties": {
                "appUrlScheme": {
                  "type": "string"
                },
                "appIdentifier": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "appIdentifier",
                "name"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "authorizedApps"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthorizedApp": {
        "properties": {
          "name": {
            "type": "string"
          },
          "appIdentifier": {
            "type": "string"
          },
          "appUrlScheme": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "appIdentifier"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateAuthorizedAppsRequest": {
        "properties": {
          "authorizedApps": {
            "items": {
              "$ref": "#/components/schemas/AuthorizedApp"
            },
            "type": "array"
          }
        },
        "required": [
          "authorizedApps"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthProviderResponse": {
        "type": "string",
        "enum": [
          "email",
          "wallet",
          "google",
          "apple",
          "twitter",
          "discord",
          "epic_games",
          "facebook",
          "accelbyte",
          "firebase",
          "lootlocker",
          "playfab",
          "supabase",
          "custom",
          "oidc"
        ]
      },
      "LinkedAccountResponse": {
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/AuthProviderResponse"
          },
          "email": {
            "type": "string"
          },
          "externalUserId": {
            "type": "string"
          },
          "connectorType": {
            "type": "string"
          },
          "walletClientType": {
            "type": "string"
          },
          "disabled": {
            "type": "boolean"
          },
          "verified": {
            "type": "boolean"
          },
          "updatedAt": {
            "type": "number",
            "format": "double"
          },
          "address": {
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/PlayerMetadata"
          }
        },
        "required": [
          "provider",
          "disabled"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Pick_PlayerResponse.id_": {
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "description": "From T, pick a set of properties whose keys are in the union K"
      },
      "AuthPlayerResponse": {
        "properties": {
          "player": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlayerResponse"
              },
              {
                "$ref": "#/components/schemas/Pick_PlayerResponse.id_"
              }
            ]
          },
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PLAYER"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "linkedAccounts": {
            "items": {
              "$ref": "#/components/schemas/LinkedAccountResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "linkedAccounts"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthResponse": {
        "properties": {
          "player": {
            "$ref": "#/components/schemas/AuthPlayerResponse",
            "description": "Player's identifier."
          },
          "token": {
            "type": "string",
            "description": "JWT access token."
          },
          "refreshToken": {
            "type": "string",
            "description": "Refresh token."
          }
        },
        "required": [
          "player",
          "token",
          "refreshToken"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RefreshTokenRequest": {
        "properties": {
          "refreshToken": {
            "type": "string",
            "description": "Specifies the session refresh token."
          },
          "forceRefresh": {
            "type": "boolean",
            "description": "Specifies whether to force refresh the session.",
            "example": false
          }
        },
        "required": [
          "refreshToken"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "LogoutRequest": {
        "properties": {
          "refreshToken": {
            "type": "string",
            "description": "Specifies the refresh token."
          }
        },
        "required": [
          "refreshToken"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SIWEInitResponse": {
        "properties": {
          "address": {
            "type": "string",
            "description": "The address of the player.",
            "example": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBE"
          },
          "nonce": {
            "type": "string"
          },
          "expiresAt": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "address",
          "nonce",
          "expiresAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SIWERequest": {
        "properties": {
          "address": {
            "type": "string",
            "description": "The address of the user.",
            "example": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa"
          }
        },
        "required": [
          "address"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SIWEAuthenticateRequest": {
        "properties": {
          "signature": {
            "type": "string",
            "description": "Signature of the EIP-712 message with the user's wallet.",
            "example": "0x1773ca2e6514a795bc9549ffbdf73909b2cd0ba8eafe52a1751c3ee8d644458701debd502ee5b5a8fca24606eee42a2cc756a04958c7c189913184d46c48783e1b"
          },
          "message": {
            "type": "string",
            "description": "The EIP-712 message to sign.",
            "example": "demo.openfort.io wants you to sign in with your Ethereum account:"
          },
          "walletClientType": {
            "type": "string",
            "description": "The wallet client of the user",
            "example": "metamask"
          },
          "connectorType": {
            "type": "string",
            "description": "The connector type of the user",
            "example": "injected"
          }
        },
        "required": [
          "signature",
          "message",
          "walletClientType",
          "connectorType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Actions": {
        "enum": [
          "verify_email"
        ],
        "type": "string",
        "x-enum-varnames": [
          "ActionVerifyEmail"
        ]
      },
      "ActionRequiredResponse": {
        "properties": {
          "action": {
            "$ref": "#/components/schemas/Actions"
          }
        },
        "required": [
          "action"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SignupRequest": {
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the player.",
            "example": "user@email.com"
          },
          "password": {
            "type": "string",
            "description": "The password of the player.",
            "example": "password"
          },
          "name": {
            "type": "string",
            "description": "The name of the player.",
            "example": "John Doe"
          },
          "description": {
            "type": "string",
            "description": "The description of the player.",
            "example": "I'm a developer."
          }
        },
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "LoginRequest": {
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "user@email.com"
          },
          "password": {
            "type": "string",
            "description": "The password of the user.",
            "example": "password"
          }
        },
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CodeChallenge": {
        "properties": {
          "codeChallenge": {
            "type": "string",
            "description": "The code challenge.",
            "example": "code"
          },
          "method": {
            "type": "string",
            "enum": [
              "plain",
              "S256"
            ],
            "description": "The code verifier.",
            "example": "S256"
          }
        },
        "required": [
          "codeChallenge",
          "method"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RequestVerifyEmailRequest": {
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "user@email.com"
          },
          "redirectUrl": {
            "type": "string",
            "description": "The URL sent to the user by email to reset the password. At the end of the URL, we will add the token in the format `?token=token`.",
            "example": "https://openfort.io/reset-password"
          },
          "challenge": {
            "$ref": "#/components/schemas/CodeChallenge",
            "description": "The Code Challenge if you want to use PKCE."
          }
        },
        "required": [
          "email",
          "redirectUrl"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CodeChallengeVerify": {
        "properties": {
          "codeVerifier": {
            "type": "string",
            "description": "The code verifier.",
            "example": "verifier"
          }
        },
        "required": [
          "codeVerifier"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "VerifyEmailRequest": {
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "user@email.com"
          },
          "token": {
            "type": "string",
            "description": "Unique value to identify the request. Obtained from the email.",
            "example": "515151"
          },
          "challenge": {
            "$ref": "#/components/schemas/CodeChallengeVerify",
            "description": "The Code Challenge to verify the PKCE if you used it in the request."
          }
        },
        "required": [
          "email",
          "token"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RequestResetPasswordRequest": {
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "user@email.com"
          },
          "redirectUrl": {
            "type": "string",
            "description": "The URL sent to the user by email to reset the password. At the end of the URL, we will add the token in the format `?token=token`.",
            "example": "https://openfort.io/reset-password"
          },
          "challenge": {
            "$ref": "#/components/schemas/CodeChallenge",
            "description": "The Code Challenge if you want to use PKCE."
          }
        },
        "required": [
          "email",
          "redirectUrl"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ResetPasswordRequest": {
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "user@email.com"
          },
          "password": {
            "type": "string",
            "description": "The new password of the user.",
            "example": "password"
          },
          "state": {
            "type": "string",
            "description": "Unique value to identify the request. It's used to mitigate CSRF attacks."
          },
          "challenge": {
            "$ref": "#/components/schemas/CodeChallengeVerify",
            "description": "The Code Challenge to verify the PKCE if you used it in the request."
          }
        },
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UnlinkEmailRequest": {
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "user@email.com"
          }
        },
        "required": [
          "email"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OAuthResponse": {
        "properties": {
          "url": {
            "type": "string"
          },
          "key": {
            "type": "string"
          }
        },
        "required": [
          "url",
          "key"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OAuthProvider": {
        "description": "Enum of the supporting OAuth providers.",
        "enum": [
          "google",
          "twitter",
          "facebook",
          "discord",
          "epic_games",
          "line",
          "apple"
        ],
        "type": "string",
        "x-enum-varnames": [
          "GOOGLE",
          "TWITTER",
          "FACEBOOK",
          "DISCORD",
          "EPIC_GAMES",
          "LINE",
          "APPLE"
        ]
      },
      "OAuthInitRequest": {
        "properties": {
          "options": {
            "properties": {
              "callbackTo": {
                "type": "string",
                "description": "A URL to custom handle the provider callback"
              },
              "queryParams": {
                "properties": {},
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object",
                "description": "An object of query params"
              },
              "redirectTo": {
                "type": "string",
                "description": "A URL to send the user to after they are confirmed."
              }
            },
            "type": "object"
          },
          "usePooling": {
            "type": "boolean",
            "description": "Use Pooling for the OAuth flow\n\nThis option is for the flow that requires the user can't be redirected from the authorization page to the application.\nThe client should poll the server to check if the user has authorized the application."
          },
          "provider": {
            "$ref": "#/components/schemas/OAuthProvider",
            "description": "One of the providers supported by Openfort"
          }
        },
        "required": [
          "provider"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThirdPartyLinkRequest": {
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider"
          },
          "token": {
            "type": "string"
          },
          "tokenType": {
            "type": "string"
          }
        },
        "required": [
          "provider",
          "token",
          "tokenType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "LoginWithIdTokenRequest": {
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/OAuthProvider",
            "description": "OAuth provider",
            "example": "firebase"
          },
          "token": {
            "type": "string",
            "description": "Token to be verified",
            "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
          }
        },
        "required": [
          "provider",
          "token"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TokenType": {
        "description": "Enum of the supporting OAuth providers.",
        "enum": [
          "idToken",
          "customToken"
        ],
        "type": "string",
        "x-enum-varnames": [
          "IDTOKEN",
          "CUSTOMTOKEN"
        ]
      },
      "ThirdPartyOAuthRequest": {
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider",
            "description": "OAuth provider",
            "example": "firebase"
          },
          "token": {
            "type": "string",
            "description": "Token to be verified",
            "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
          },
          "tokenType": {
            "$ref": "#/components/schemas/TokenType"
          }
        },
        "required": [
          "provider",
          "token"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthenticateOAuthRequest": {
        "properties": {
          "provider": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OAuthProvider"
              },
              {
                "$ref": "#/components/schemas/ThirdPartyOAuthProvider"
              }
            ],
            "description": "OAuth provider",
            "example": "firebase"
          },
          "token": {
            "type": "string",
            "description": "Token to be verified",
            "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
          },
          "tokenType": {
            "$ref": "#/components/schemas/TokenType",
            "description": "Type of the token.",
            "example": "idToken"
          },
          "expand": {
            "items": {
              "$ref": "#/components/schemas/PlayerResponseExpandable"
            },
            "type": "array",
            "description": "Specifies the fields to expand in the response.",
            "example": [
              "transactionIntents"
            ]
          }
        },
        "required": [
          "provider",
          "token",
          "tokenType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UnlinkOAuthRequest": {
        "description": "The request to verify access token",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/OAuthProvider",
            "description": "The provider type being linked",
            "example": "Google"
          }
        },
        "required": [
          "provider"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BasicAuthProvider.EMAIL": {
        "enum": [
          "email"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EMAIL"
        ]
      },
      "BasicAuthProvider": {
        "description": "Enum of the supporting Basic Auth providers.",
        "enum": [
          "email",
          "wallet",
          "guest",
          "web3",
          "phone",
          "test_account"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EMAIL",
          "WALLET",
          "GUEST",
          "WEB3",
          "PHONE",
          "TEST_ACCOUNT"
        ]
      },
      "AuthProvider": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/OAuthProvider"
          },
          {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider"
          },
          {
            "$ref": "#/components/schemas/BasicAuthProvider"
          }
        ],
        "description": "Enum of the supporting Auth providers."
      },
      "EmailAuthConfig": {
        "description": "Email auth configuration",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/BasicAuthProvider.EMAIL",
            "description": "Auth provider type"
          },
          "allowUnverified": {
            "type": "boolean",
            "description": "Allow unverified emails: Users will be able to sign in with unverified emails"
          },
          "otpLength": {
            "type": "number",
            "format": "double",
            "description": "Length of the OTP code (default: 6)"
          },
          "passwordRequirements": {
            "properties": {
              "requireSpecialChar": {
                "type": "boolean",
                "description": "Require at least one special character (default: false)"
              },
              "requireNumber": {
                "type": "boolean",
                "description": "Require at least one number (default: false)"
              },
              "requireLowercase": {
                "type": "boolean",
                "description": "Require at least one lowercase letter (default: false)"
              },
              "requireUppercase": {
                "type": "boolean",
                "description": "Require at least one uppercase letter (default: false)"
              },
              "minLength": {
                "type": "number",
                "format": "double",
                "description": "Minimum password length (default: 6)"
              }
            },
            "required": [
              "minLength"
            ],
            "type": "object",
            "description": "Password requirements configuration"
          }
        },
        "required": [
          "enabled",
          "provider",
          "allowUnverified",
          "otpLength",
          "passwordRequirements"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BasicAuthProvider.GUEST": {
        "enum": [
          "guest"
        ],
        "type": "string",
        "x-enum-varnames": [
          "GUEST"
        ]
      },
      "GuestAuthConfig": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/BasicAuthProvider.GUEST",
            "description": "Auth provider type"
          }
        },
        "required": [
          "enabled",
          "provider"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BasicAuthProvider.WEB3": {
        "enum": [
          "web3"
        ],
        "type": "string",
        "x-enum-varnames": [
          "WEB3"
        ]
      },
      "Web3AuthConfig": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/BasicAuthProvider.WEB3",
            "description": "Auth provider type"
          }
        },
        "required": [
          "enabled",
          "provider"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BasicAuthProvider.PHONE": {
        "enum": [
          "phone"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PHONE"
        ]
      },
      "SmsProvider.TWILIO": {
        "enum": [
          "twilio"
        ],
        "type": "string",
        "x-enum-varnames": [
          "TWILIO"
        ]
      },
      "TwilioSmsProviderConfig": {
        "description": "Twilio SMS provider configuration",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/SmsProvider.TWILIO"
          },
          "accountSid": {
            "type": "string",
            "description": "Twilio Account SID"
          },
          "authToken": {
            "type": "string",
            "description": "Twilio Auth Token"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Twilio phone number (from)"
          }
        },
        "required": [
          "provider",
          "accountSid",
          "authToken",
          "phoneNumber"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SmsProvider.MESSAGEBIRD": {
        "enum": [
          "messagebird"
        ],
        "type": "string",
        "x-enum-varnames": [
          "MESSAGEBIRD"
        ]
      },
      "MessageBirdSmsProviderConfig": {
        "description": "MessageBird SMS provider configuration",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/SmsProvider.MESSAGEBIRD"
          },
          "accessKey": {
            "type": "string",
            "description": "MessageBird Access Key"
          },
          "originator": {
            "type": "string",
            "description": "Sender name or number"
          }
        },
        "required": [
          "provider",
          "accessKey",
          "originator"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SmsProvider.TXTLOCAL": {
        "enum": [
          "txtlocal"
        ],
        "type": "string",
        "x-enum-varnames": [
          "TXTLOCAL"
        ]
      },
      "TxtLocalSmsProviderConfig": {
        "description": "TxtLocal SMS provider configuration",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/SmsProvider.TXTLOCAL"
          },
          "apiKey": {
            "type": "string",
            "description": "TxtLocal API Key"
          },
          "sender": {
            "type": "string",
            "description": "Sender name"
          }
        },
        "required": [
          "provider",
          "apiKey",
          "sender"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SmsProvider.VONAGE": {
        "enum": [
          "vonage"
        ],
        "type": "string",
        "x-enum-varnames": [
          "VONAGE"
        ]
      },
      "VonageSmsProviderConfig": {
        "description": "Vonage SMS provider configuration",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/SmsProvider.VONAGE"
          },
          "apiKey": {
            "type": "string",
            "description": "Vonage API Key"
          },
          "apiSecret": {
            "type": "string",
            "description": "Vonage API Secret"
          },
          "from": {
            "type": "string",
            "description": "Sender ID or phone number"
          }
        },
        "required": [
          "provider",
          "apiKey",
          "apiSecret",
          "from"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SmsProvider.SMS_API": {
        "enum": [
          "sms_api"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SMS_API"
        ]
      },
      "SmsApiProviderConfig": {
        "description": "SMS API provider configuration",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/SmsProvider.SMS_API"
          },
          "from": {
            "type": "string",
            "description": "Sender name"
          },
          "token": {
            "type": "string",
            "description": "SMSAPI OAuth token"
          }
        },
        "required": [
          "provider",
          "from",
          "token"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PhoneAuthConfig": {
        "description": "Phone auth configuration",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/BasicAuthProvider.PHONE",
            "description": "Auth provider type"
          },
          "smsProviderConfig": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TwilioSmsProviderConfig"
              },
              {
                "$ref": "#/components/schemas/MessageBirdSmsProviderConfig"
              },
              {
                "$ref": "#/components/schemas/TxtLocalSmsProviderConfig"
              },
              {
                "$ref": "#/components/schemas/VonageSmsProviderConfig"
              },
              {
                "$ref": "#/components/schemas/SmsApiProviderConfig"
              }
            ],
            "description": "SMS provider configuration"
          },
          "smsTemplate": {
            "type": "string",
            "description": "SMS message template. Use {{ .Code }} to format the OTP code (default: \"Your code is {{ .Code }}\")"
          }
        },
        "required": [
          "enabled",
          "provider",
          "smsProviderConfig",
          "smsTemplate"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThirdPartyOAuthProvider.SUPABASE": {
        "enum": [
          "supabase"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SUPABASE"
        ]
      },
      "SupabaseAuthConfig": {
        "description": "Supabase oauth configuration",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider.SUPABASE",
            "description": "OAuth provider type"
          },
          "url": {
            "type": "string",
            "description": "The unique Supabase URL which is supplied when you create a new project in your project dashboard."
          },
          "key": {
            "type": "string",
            "description": "The unique Supabase Key which is supplied when you create a new project in your project dashboard."
          }
        },
        "required": [
          "enabled",
          "provider",
          "url",
          "key"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThirdPartyOAuthProvider.OIDC": {
        "enum": [
          "oidc"
        ],
        "type": "string",
        "x-enum-varnames": [
          "OIDC"
        ]
      },
      "OIDCAuthConfig": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider.OIDC",
            "description": "OAuth provider type"
          },
          "publicVerificationKey": {
            "type": "string",
            "description": "PEM encoded public key to verify the JWT token"
          },
          "aud": {
            "type": "string",
            "description": "Audience of the JWT token"
          },
          "jwksUrl": {
            "type": "string",
            "description": "JWKS URL to fetch the public key"
          }
        },
        "required": [
          "enabled",
          "provider",
          "aud"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThirdPartyOAuthProvider.ACCELBYTE": {
        "enum": [
          "accelbyte"
        ],
        "type": "string",
        "x-enum-varnames": [
          "ACCELBYTE"
        ]
      },
      "AccelbyteOAuthConfig": {
        "description": "Accelbyte oauth configuration",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider.ACCELBYTE",
            "description": "OAuth provider type"
          },
          "baseUrl": {
            "type": "string",
            "description": "Base URI of your accelbyte gaming service environment. E.g. https://mygame.dev.gamingservices.accelbyte.io/"
          },
          "clientId": {
            "type": "string",
            "description": "Client ID of your accelbyte gaming service environment."
          },
          "clientSecret": {
            "type": "string",
            "description": "Secret of your confidential IAM client."
          }
        },
        "required": [
          "enabled",
          "provider",
          "baseUrl",
          "clientId",
          "clientSecret"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OAuthProvider.GOOGLE": {
        "enum": [
          "google"
        ],
        "type": "string",
        "x-enum-varnames": [
          "GOOGLE"
        ]
      },
      "GoogleOAuthConfig": {
        "description": "Google oauth configuration",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/OAuthProvider.GOOGLE",
            "description": "OAuth provider type"
          },
          "clientId": {
            "type": "string",
            "description": "Google API client ID."
          },
          "clientSecret": {
            "type": "string",
            "description": "Google API client secret."
          }
        },
        "required": [
          "enabled",
          "provider",
          "clientId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OAuthProvider.TWITTER": {
        "enum": [
          "twitter"
        ],
        "type": "string",
        "x-enum-varnames": [
          "TWITTER"
        ]
      },
      "TwitterOAuthConfig": {
        "description": "Twitter oauth configuration",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/OAuthProvider.TWITTER",
            "description": "OAuth provider type"
          },
          "clientId": {
            "type": "string",
            "description": "Twitter API consumer key."
          },
          "clientSecret": {
            "type": "string",
            "description": "Twitter API consumer secret."
          }
        },
        "required": [
          "enabled",
          "provider",
          "clientId",
          "clientSecret"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OAuthProvider.FACEBOOK": {
        "enum": [
          "facebook"
        ],
        "type": "string",
        "x-enum-varnames": [
          "FACEBOOK"
        ]
      },
      "FacebookOAuthConfig": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/OAuthProvider.FACEBOOK",
            "description": "OAuth provider type"
          },
          "clientId": {
            "type": "string",
            "description": "Facebook API client ID."
          },
          "clientSecret": {
            "type": "string",
            "description": "Facebook API client secret."
          }
        },
        "required": [
          "enabled",
          "provider",
          "clientId",
          "clientSecret"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OAuthProvider.APPLE": {
        "enum": [
          "apple"
        ],
        "type": "string",
        "x-enum-varnames": [
          "APPLE"
        ]
      },
      "AppleOAuthConfig": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/OAuthProvider.APPLE",
            "description": "OAuth provider type"
          },
          "clientId": {
            "type": "string",
            "description": "Apple API client ID (Service ID)."
          },
          "clientSecret": {
            "type": "string",
            "description": "Pre-generated client secret JWT"
          }
        },
        "required": [
          "enabled",
          "provider",
          "clientId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OAuthProvider.LINE": {
        "enum": [
          "line"
        ],
        "type": "string",
        "x-enum-varnames": [
          "LINE"
        ]
      },
      "LineOAuthConfig": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/OAuthProvider.LINE",
            "description": "OAuth provider type"
          },
          "channelId": {
            "type": "string",
            "description": "Line Channel ID."
          },
          "channelSecret": {
            "type": "string",
            "description": "Line Channel secret."
          }
        },
        "required": [
          "enabled",
          "provider",
          "channelId",
          "channelSecret"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OAuthProvider.DISCORD": {
        "enum": [
          "discord"
        ],
        "type": "string",
        "x-enum-varnames": [
          "DISCORD"
        ]
      },
      "DiscordOAuthConfig": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/OAuthProvider.DISCORD",
            "description": "OAuth provider type"
          },
          "clientId": {
            "type": "string",
            "description": "Discord API client ID."
          },
          "clientSecret": {
            "type": "string",
            "description": "Discord API client secret."
          }
        },
        "required": [
          "enabled",
          "provider",
          "clientId",
          "clientSecret"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OAuthProvider.EPIC_GAMES": {
        "enum": [
          "epic_games"
        ],
        "type": "string",
        "x-enum-varnames": [
          "EPIC_GAMES"
        ]
      },
      "EpicGamesOAuthConfig": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/OAuthProvider.EPIC_GAMES",
            "description": "OAuth provider type"
          },
          "clientId": {
            "type": "string",
            "description": "Epic Games API client ID."
          },
          "clientSecret": {
            "type": "string",
            "description": "Epic Games API client secret."
          }
        },
        "required": [
          "enabled",
          "provider",
          "clientId",
          "clientSecret"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThirdPartyOAuthProvider.PLAYFAB": {
        "enum": [
          "playfab"
        ],
        "type": "string",
        "x-enum-varnames": [
          "PLAYFAB"
        ]
      },
      "PlayFabOAuthConfig": {
        "description": "PlayFab oauth configuration",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider.PLAYFAB",
            "description": "OAuth provider type"
          },
          "titleId": {
            "type": "string",
            "description": "Title ID of your Play Fab gaming service environment."
          }
        },
        "required": [
          "enabled",
          "provider",
          "titleId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThirdPartyOAuthProvider.FIREBASE": {
        "enum": [
          "firebase"
        ],
        "type": "string",
        "x-enum-varnames": [
          "FIREBASE"
        ]
      },
      "FirebaseOAuthConfig": {
        "description": "Firebase configuration",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider.FIREBASE",
            "description": "OAuth provider type"
          },
          "projectId": {
            "type": "string",
            "description": "Project ID of your Firebase service environment."
          }
        },
        "required": [
          "enabled",
          "provider",
          "projectId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThirdPartyOAuthProvider.CUSTOM": {
        "enum": [
          "custom"
        ],
        "type": "string",
        "x-enum-varnames": [
          "CUSTOM"
        ]
      },
      "CustomAuthConfig": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider.CUSTOM",
            "description": "OAuth provider type"
          },
          "headers": {
            "type": "string",
            "description": "Headers to send with the request"
          },
          "authenticationUrl": {
            "type": "string",
            "description": "URL to send the request to to verify the payload"
          }
        },
        "required": [
          "enabled",
          "provider",
          "authenticationUrl"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThirdPartyOAuthProvider.LOOTLOCKER": {
        "enum": [
          "lootlocker"
        ],
        "type": "string",
        "x-enum-varnames": [
          "LOOTLOCKER"
        ]
      },
      "LootLockerOAuthConfig": {
        "description": "LootLocker oauth configuration",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider.LOOTLOCKER",
            "description": "OAuth provider type"
          }
        },
        "required": [
          "enabled",
          "provider"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThirdPartyOAuthProvider.BETTER_AUTH": {
        "enum": [
          "better-auth"
        ],
        "type": "string",
        "x-enum-varnames": [
          "BETTER_AUTH"
        ]
      },
      "BetterAuthConfig": {
        "description": "Better Auth configuration",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider.BETTER_AUTH",
            "description": "OAuth provider type"
          },
          "baseUrl": {
            "type": "string",
            "description": "Base URL of the Better Auth instance. E.g. https://your-app.com/api/auth"
          }
        },
        "required": [
          "enabled",
          "provider",
          "baseUrl"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "BasicAuthProvider.TEST_ACCOUNT": {
        "enum": [
          "test_account"
        ],
        "type": "string",
        "x-enum-varnames": [
          "TEST_ACCOUNT"
        ]
      },
      "TestAccountConfig": {
        "description": "Test account configuration for automated testing and App Store review flows.\nWorks on both livemode and sandbox environments with V2 auth enabled.",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable OAuth provider."
          },
          "provider": {
            "$ref": "#/components/schemas/BasicAuthProvider.TEST_ACCOUNT",
            "description": "OAuth provider type"
          },
          "emailSuffix": {
            "type": "string",
            "description": "Auto-generated 4-char hex suffix for test-XXXX@openfort.xyz. Server-generated, read-only."
          },
          "phoneSuffix": {
            "type": "string",
            "description": "Auto-generated 4-digit phone suffix for +1 555 555 XXXX. Server-generated, read-only."
          },
          "otpCode": {
            "type": "string",
            "description": "Auto-generated 6-digit OTP code. Server-generated, read-only."
          }
        },
        "required": [
          "enabled",
          "provider"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthConfig": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/EmailAuthConfig"
          },
          {
            "$ref": "#/components/schemas/GuestAuthConfig"
          },
          {
            "$ref": "#/components/schemas/Web3AuthConfig"
          },
          {
            "$ref": "#/components/schemas/PhoneAuthConfig"
          },
          {
            "$ref": "#/components/schemas/SupabaseAuthConfig"
          },
          {
            "$ref": "#/components/schemas/OIDCAuthConfig"
          },
          {
            "$ref": "#/components/schemas/AccelbyteOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/GoogleOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/TwitterOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/FacebookOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/AppleOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/LineOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/DiscordOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/EpicGamesOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/PlayFabOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/FirebaseOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/CustomAuthConfig"
          },
          {
            "$ref": "#/components/schemas/LootLockerOAuthConfig"
          },
          {
            "$ref": "#/components/schemas/BetterAuthConfig"
          },
          {
            "$ref": "#/components/schemas/TestAccountConfig"
          }
        ]
      },
      "OAuthConfigListResponse": {
        "description": "Response for the OAuth config list method.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AuthConfig"
            },
            "type": "array",
            "description": "List of the OAuth providers configurations"
          }
        },
        "required": [
          "data"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "GrantOAuthResponse": {
        "properties": {
          "authorizationCode": {
            "type": "string"
          },
          "accessToken": {
            "type": "string"
          },
          "refreshToken": {
            "type": "string"
          },
          "playerId": {
            "type": "string"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "GrantCallbackRequest": {
        "properties": {
          "code": {
            "type": "string"
          },
          "state": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "state"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OAuthConfigResponse": {
        "$ref": "#/components/schemas/AuthConfig",
        "description": "OAuth provider specific configuration."
      },
      "OAuthConfigRequest": {
        "$ref": "#/components/schemas/AuthConfig",
        "description": "Request for the configuration endpoints for the OAuth providers"
      },
      "AuthMigrationStatus": {
        "enum": [
          "created",
          "running",
          "paused",
          "completed",
          "failed",
          "canceled"
        ],
        "type": "string",
        "x-enum-varnames": [
          "CREATED",
          "RUNNING",
          "PAUSED",
          "COMPLETED",
          "FAILED",
          "CANCELED"
        ]
      },
      "MappingStrategy": {
        "description": "Mapping strategy for the migration. This is used to transform the ids between the source and destination providers.\nFor the transformation, the order of the operations is:\n1. Trim the prefix and suffix from the destination id.\n2. Add the prefix and suffix to the destination id.\nWhen a user is authenticated in the destination provider, the id is transformed using the mapping strategy to find if exists in the source provider.\nIf the id is not found, the user is created in the destination provider.\nIf the id is found, the user in the destination provider is linked to the source provider.",
        "properties": {
          "trimPrefix": {
            "type": "string",
            "description": "Prefix to trim from the destination id."
          },
          "trimSuffix": {
            "type": "string",
            "description": "Suffix to trim from the destination id."
          },
          "addPrefix": {
            "type": "string",
            "description": "Prefix to add to the destination id."
          },
          "addSuffix": {
            "type": "string",
            "description": "Suffix to add to the destination id."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "AuthMigrationResponse": {
        "description": "Auth Migration Response.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the migration."
          },
          "sourceProvider": {
            "$ref": "#/components/schemas/AuthProvider",
            "description": "The source provider for the migration."
          },
          "destinationProvider": {
            "$ref": "#/components/schemas/AuthProvider",
            "description": "The destination provider for the migration."
          },
          "status": {
            "$ref": "#/components/schemas/AuthMigrationStatus",
            "description": "The status of the migration."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The created date of the migration."
          },
          "finishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "If the migration is finished, this will be the date it was finished."
          },
          "mappingStrategy": {
            "$ref": "#/components/schemas/MappingStrategy",
            "description": "The mapping strategy used for the migration.\nIf not provided, the direct mapping will be used."
          }
        },
        "required": [
          "id",
          "sourceProvider",
          "destinationProvider",
          "status",
          "createdAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateMigrationRequest": {
        "properties": {
          "mappingStrategy": {
            "$ref": "#/components/schemas/MappingStrategy",
            "description": "The mapping strategy used for the migration.\nIf not provided, the direct mapping will be used."
          },
          "destinationProvider": {
            "$ref": "#/components/schemas/AuthProvider",
            "description": "Destination provider"
          },
          "sourceProvider": {
            "$ref": "#/components/schemas/AuthProvider",
            "description": "Source provider"
          }
        },
        "required": [
          "destinationProvider",
          "sourceProvider"
        ],
        "type": "object",
        "description": "Request for migrating authentication from one provider to another"
      },
      "AuthMigrationListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/AuthMigrationResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ListMigrationsRequest": {
        "description": "Request for listing Migrations",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "sourceProvider": {
            "$ref": "#/components/schemas/AuthProvider",
            "description": "Source provider"
          },
          "destinationProvider": {
            "$ref": "#/components/schemas/AuthProvider",
            "description": "Destination provider"
          },
          "status": {
            "items": {
              "$ref": "#/components/schemas/AuthMigrationStatus"
            },
            "type": "array",
            "description": "Status of the migration"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "UpdateMigrationRequest": {
        "properties": {
          "mappingStrategy": {
            "$ref": "#/components/schemas/MappingStrategy",
            "description": "The mapping strategy used for the migration.\nIf not provided, the direct mapping will be used."
          },
          "status": {
            "$ref": "#/components/schemas/AuthMigrationStatus",
            "description": "Status of the migration"
          }
        },
        "required": [
          "status"
        ],
        "type": "object",
        "description": "Request for update the status of a migration"
      },
      "AuthenticationType": {
        "enum": [
          "oauth",
          "basic",
          "third_party"
        ],
        "type": "string",
        "x-enum-varnames": [
          "OAUTH",
          "BASIC",
          "THIRD_PARTY"
        ]
      },
      "AuthProviderWithTypeResponse": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/AuthenticationType"
          },
          "provider": {
            "$ref": "#/components/schemas/AuthProvider"
          }
        },
        "required": [
          "type",
          "provider"
        ],
        "type": "object"
      },
      "AuthProviderListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AuthProviderWithTypeResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ListConfigRequest": {
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "AuthPlayerResponseWithRecoveryShare": {
        "properties": {
          "player": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlayerResponse"
              },
              {
                "$ref": "#/components/schemas/Pick_PlayerResponse.id_"
              }
            ]
          },
          "id": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/EntityType.PLAYER"
          },
          "createdAt": {
            "type": "integer",
            "format": "int32"
          },
          "linkedAccounts": {
            "items": {
              "$ref": "#/components/schemas/LinkedAccountResponse"
            },
            "type": "array"
          },
          "recoveryShare": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "linkedAccounts"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateAuthPlayerRequest": {
        "properties": {
          "thirdPartyUserId": {
            "type": "string",
            "description": "The third party user id.",
            "example": "dsajkl23r43l1234jl"
          },
          "thirdPartyProvider": {
            "$ref": "#/components/schemas/ThirdPartyOAuthProvider",
            "description": "The third party provider.",
            "example": "firebase"
          },
          "preGenerateEmbeddedAccount": {
            "type": "boolean",
            "description": "Pre generate embedded account.",
            "example": true
          },
          "chainId": {
            "type": "integer",
            "format": "int32",
            "description": "The chain ID. Must be a [supported chain](/docs/configuration/chains).",
            "example": 80002
          },
          "metadata": {
            "$ref": "#/components/schemas/PlayerMetadata",
            "description": "Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata."
          }
        },
        "required": [
          "thirdPartyUserId",
          "thirdPartyProvider",
          "preGenerateEmbeddedAccount"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthPlayerListResponse": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/ResponseType.LIST"
          },
          "url": {
            "type": "string"
          },
          "data": {
            "items": {
              "$ref": "#/components/schemas/AuthPlayerResponse"
            },
            "type": "array"
          },
          "start": {
            "type": "integer",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "object",
          "url",
          "data",
          "start",
          "end",
          "total"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthPlayerListQueries": {
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the maximum number of records to return.",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the offset for the first records to return.",
            "minimum": 0
          },
          "order": {
            "$ref": "#/components/schemas/Prisma.SortOrder",
            "description": "Specifies the order in which to sort the results."
          },
          "email": {
            "type": "string",
            "description": "Specifies the email address of the user.",
            "example": "user@email.com"
          },
          "externalUserId": {
            "type": "string",
            "description": "Specifies the external user ID.",
            "example": "externalUserId"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "AuthSessionResponse": {
        "properties": {
          "livemode": {
            "type": "boolean"
          },
          "projectId": {
            "type": "string"
          },
          "playerId": {
            "type": "string"
          },
          "issuer": {
            "type": "string"
          },
          "issuedAt": {
            "type": "number",
            "format": "double"
          },
          "expiration": {
            "type": "number",
            "format": "double"
          },
          "sessionId": {
            "type": "string"
          }
        },
        "required": [
          "livemode",
          "projectId",
          "playerId",
          "issuer",
          "issuedAt",
          "expiration",
          "sessionId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "JwtKey": {
        "properties": {
          "kty": {
            "type": "string"
          },
          "x": {
            "type": "string"
          },
          "y": {
            "type": "string"
          },
          "crv": {
            "type": "string"
          },
          "kid": {
            "type": "string"
          },
          "use": {
            "type": "string"
          },
          "alg": {
            "type": "string"
          }
        },
        "required": [
          "kty",
          "x",
          "y",
          "crv",
          "kid",
          "use",
          "alg"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "JwtKeyResponse": {
        "properties": {
          "keys": {
            "items": {
              "$ref": "#/components/schemas/JwtKey"
            },
            "type": "array"
          }
        },
        "required": [
          "keys"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "emailVerified": {
            "type": "boolean",
            "default": false,
            "readOnly": true
          },
          "image": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "default": "Generated at runtime"
          },
          "updatedAt": {
            "type": "string",
            "default": "Generated at runtime"
          },
          "isAnonymous": {
            "type": "boolean"
          },
          "phoneNumber": {
            "type": "string"
          },
          "phoneNumberVerified": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "name",
          "email",
          "createdAt",
          "updatedAt"
        ]
      },
      "Session": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "default": "Generated at runtime"
          },
          "updatedAt": {
            "type": "string"
          },
          "ipAddress": {
            "type": "string"
          },
          "userAgent": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "expiresAt",
          "token",
          "createdAt",
          "updatedAt",
          "userId"
        ]
      },
      "AccountAuth": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "accountId": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "accessToken": {
            "type": "string"
          },
          "refreshToken": {
            "type": "string"
          },
          "idToken": {
            "type": "string"
          },
          "accessTokenExpiresAt": {
            "type": "string"
          },
          "refreshTokenExpiresAt": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "default": "Generated at runtime"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "accountId",
          "providerId",
          "userId",
          "createdAt",
          "updatedAt"
        ]
      },
      "Verification": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "identifier": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "default": "Generated at runtime"
          },
          "updatedAt": {
            "type": "string",
            "default": "Generated at runtime"
          }
        },
        "required": [
          "identifier",
          "value",
          "expiresAt",
          "createdAt",
          "updatedAt"
        ]
      },
      "Jwks": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "publicKey": {
            "type": "string"
          },
          "privateKey": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          }
        },
        "required": [
          "publicKey",
          "privateKey",
          "createdAt"
        ]
      },
      "OtpVerificationResponse": {
        "type": "object",
        "description": "Response from OTP verification check",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the OTP verification was successful"
          }
        },
        "required": [
          "success"
        ]
      },
      "SignOutResponse": {
        "type": "object",
        "description": "Response from sign out operation",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the sign out was successful"
          }
        },
        "required": [
          "success"
        ]
      },
      "UnlinkAccountResponse": {
        "type": "object",
        "description": "Response from unlink account operation",
        "properties": {
          "status": {
            "type": "boolean",
            "description": "Indicates whether the account was successfully unlinked"
          }
        },
        "required": [
          "status"
        ]
      },
      "ResetPasswordResponse": {
        "type": "object",
        "description": "Response from reset password operation",
        "properties": {
          "status": {
            "type": "boolean",
            "description": "Indicates whether the password was successfully reset"
          }
        },
        "required": [
          "status"
        ]
      }
    },
    "responses": {},
    "parameters": {},
    "examples": {},
    "requestBodies": {},
    "headers": {},
    "securitySchemes": {
      "pk": {
        "type": "http",
        "scheme": "bearer",
        "description": "Publishable Key authentication. Use your publishable API key as the bearer token. Format: pk_test_<uuid> (sandbox) or pk_live_<uuid> (live). Used for client-side SDK operations."
      },
      "sk": {
        "type": "http",
        "scheme": "bearer",
        "description": "Secret Key authentication. Use your secret API key as the bearer token. Format: sk_test_<uuid> (sandbox) or sk_live_<uuid> (live). Used for server-to-server operations. Keep this key confidential."
      },
      "pk_access_token": {
        "type": "http",
        "scheme": "bearer",
        "description": "Player Access Token authentication. Requires two headers: (1) Authorization: Bearer <publishable_key> (pk_test_<uuid> or pk_live_<uuid>), and (2) x-player-token: <JWT> — a user session token issued by the project's auth system."
      },
      "pk_third_party": {
        "type": "http",
        "scheme": "bearer",
        "description": "Third-Party OAuth authentication. Requires three headers: (1) Authorization: Bearer <publishable_key> (pk_test_<uuid> or pk_live_<uuid>), (2) x-auth-provider: <provider_name> (e.g., firebase, accelbyte, lootlocker, playfab, custom, supabase, oidc), and (3) x-player-token: <provider_token>."
      },
      "auth_token": {
        "type": "http",
        "scheme": "bearer",
        "description": "Auth session token (V2 auth). Requires two headers: (1) Authorization: Bearer <session_token>, and (2) x-project-key: <publishable_key> (pk_test_<uuid> or pk_live_<uuid>)."
      },
      "wallet_auth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Wallet Auth for TEE wallet operations. Requires two headers: (1) Authorization: Bearer <secret_key> (sk_test_<uuid> or sk_live_<uuid>), and (2) x-wallet-auth: <ES256_JWT> containing claims for key_id, nonce (jti), and reqHash for request integrity."
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Users & Authentication",
      "tags": [
        "Users",
        "Sign In and Sign Up",
        "Sign-In with Ethereum",
        "Email OTP",
        "Phone",
        "Password and Email",
        "Sessions and Tokens",
        "Linked Accounts"
      ]
    },
    {
      "name": "Wallets",
      "tags": [
        "Accounts",
        "Sessions",
        "Backend Wallets"
      ]
    },
    {
      "name": "Transactions & Contracts",
      "tags": [
        "Transactions",
        "Contracts",
        "Solana Transactions"
      ]
    },
    {
      "name": "Sponsorship & Policies",
      "tags": [
        "Fee Sponsorship",
        "Policies"
      ]
    }
  ]
}