{
  "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.\n\n**Base URL**: `https://api.openfort.io`\n\nEvery request sends a Bearer token in the `Authorization` header — your **secret key** (`sk_test_…` / `sk_live_…`) for server-to-server calls, or your **publishable key** (`pk_test_…` / `pk_live_…`) for client-safe ones. Test keys operate on testnet chains, live keys on mainnet.\n\nRead the guides before you start:\n\n- [**Authentication**](/docs/api-reference/authentication) — keys, user access tokens, third-party auth, and test vs live mode.\n- [**Errors**](/docs/api-reference/errors) — HTTP status codes and the JSON error envelope.\n- [**Pagination**](/docs/api-reference/pagination) — paging list endpoints with `limit` and `skip`, and expanding related data.\n\nThe machine-readable spec is served at [`/docs/openapi.json`](https://www.openfort.io/docs/openapi.json). To try requests outside the browser, import the [Postman API Suite](/docs/reference/postman).\n\n## Endpoints",
    "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": "Transaction Intents",
      "description": "Create, sign, and track blockchain transactions executed through Openfort."
    },
    {
      "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/transaction_intents": {
      "get": {
        "operationId": "GetTransactionIntents",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionIntentListResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "object": "list",
                      "url": "/v1/transaction_intents",
                      "start": 0,
                      "end": 1,
                      "total": 1,
                      "data": [
                        {
                          "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
                          "createdAt": 1689869074,
                          "object": "transactionIntent",
                          "finalCost": "0.42",
                          "details": {
                            "userOperationHash": "0x25d3...005c",
                            "userOperation": {
                              "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
                              "nonce": "0x2",
                              "initCode": "0x",
                              "callData": "0xb61d...0000",
                              "callGasLimit": "0x27863",
                              "verificationGasLimit": "0x16001",
                              "preVerificationGas": "0xb818",
                              "maxFeePerGas": "0x62590091",
                              "maxPriorityFeePerGas": "0x62590091",
                              "paymasterAndData": "0x3210...b51c",
                              "signature": "0x6202...3d1b"
                            }
                          },
                          "chainId": 80002,
                          "abstractionType": "accountAbstractionV6",
                          "updatedAt": 1689869074,
                          "policy": {
                            "id": "pol_..."
                          },
                          "player": {
                            "id": "pla_..."
                          },
                          "account": {
                            "id": "acc_..."
                          },
                          "response": {
                            "createdAt": 1689869074,
                            "logs": [
                              {
                                "removed": false,
                                "transactionIndex": 0,
                                "blockNumber": 44904492,
                                "transactionHash": "0x25d3...005c",
                                "address": "0x5FF1...2789",
                                "topics": [
                                  "0xbb47...f972"
                                ],
                                "data": "0x",
                                "logIndex": 0,
                                "blockHash": "0x8a69...6d59"
                              }
                            ],
                            "blockNumber": 8789286,
                            "transactionHash": "0x25d3...005c",
                            "to": "0x0576...1B57",
                            "gasUsed": "336730",
                            "status": 1
                          },
                          "interactions": [
                            {
                              "functionName": "mint",
                              "contract": "con_...",
                              "functionArgs": [
                                "0x63B7...484f"
                              ]
                            }
                          ],
                          "transitions": [
                            {
                              "fromStatus": "none",
                              "toStatus": "new",
                              "at": 1750154762
                            },
                            {
                              "fromStatus": "new",
                              "toStatus": "sent",
                              "at": 1750154762
                            },
                            {
                              "fromStatus": "sent",
                              "toStatus": "indexed",
                              "at": 1750154762
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          }
        },
        "description": "Returns a list of TransactionIntents.",
        "summary": "List transaction intents",
        "tags": [
          "Transaction Intents"
        ],
        "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.",
            "in": "query",
            "name": "expand",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/TransactionIntentResponseExpandable"
              },
              "example": "policy"
            }
          },
          {
            "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 or developer account (starts with acc_ or dac_ respectively).",
            "in": "query",
            "name": "account",
            "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 player ID (starts with pla_).",
            "in": "query",
            "name": "player",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": [
                "pla_556166c9-77ad-4a39-aaf8-c432defa8a0f"
              ]
            },
            "example": [
              "pla_556166c9-77ad-4a39-aaf8-c432defa8a0f"
            ]
          },
          {
            "description": "Filter by successful (1) or failed (0) transaction intents.",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "format": "double",
              "type": "number",
              "example": 1
            },
            "example": 1
          },
          {
            "description": "Filter by policy ID (starts with pol_).",
            "in": "query",
            "name": "policy",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": [
                "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
              ]
            },
            "example": [
              "pol_7e07ae30-2a4d-48fa-803f-361da94905dd"
            ]
          }
        ]
      },
      "post": {
        "operationId": "CreateTransactionIntent",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionIntentResponse"
                },
                "examples": {
                  "Transaction for custodial account": {
                    "value": {
                      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
                      "createdAt": 1689869074,
                      "object": "transactionIntent",
                      "finalCost": "0.42",
                      "details": {
                        "userOperationHash": "0x25d3...005c",
                        "userOperation": {
                          "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
                          "nonce": "0x2",
                          "initCode": "0x",
                          "callData": "0xb61d...0000",
                          "callGasLimit": "0x27863",
                          "verificationGasLimit": "0x16001",
                          "preVerificationGas": "0xb818",
                          "maxFeePerGas": "0x62590091",
                          "maxPriorityFeePerGas": "0x62590091",
                          "paymasterAndData": "0x3210...b51c",
                          "signature": "0x6202...3d1b"
                        }
                      },
                      "chainId": 80002,
                      "abstractionType": "accountAbstractionV6",
                      "updatedAt": 1689869074,
                      "policy": {
                        "id": "pol_..."
                      },
                      "player": {
                        "id": "pla_..."
                      },
                      "account": {
                        "id": "acc_..."
                      },
                      "response": {
                        "createdAt": 1689869074,
                        "logs": [
                          {
                            "removed": false,
                            "transactionIndex": 0,
                            "blockNumber": 44904492,
                            "transactionHash": "0x25d3...005c",
                            "address": "0x5FF1...2789",
                            "topics": [
                              "0xbb47...f972"
                            ],
                            "data": "0x",
                            "logIndex": 0,
                            "blockHash": "0x8a69...6d59"
                          }
                        ],
                        "blockNumber": 8789286,
                        "transactionHash": "0x25d3...005c",
                        "to": "0x0576...1B57",
                        "gasUsed": "336730",
                        "status": 1
                      },
                      "interactions": [
                        {
                          "functionName": "mint",
                          "contract": "con_...",
                          "functionArgs": [
                            "0x63B7...484f"
                          ]
                        }
                      ],
                      "transitions": [
                        {
                          "fromStatus": "none",
                          "toStatus": "new",
                          "at": 1750154762
                        },
                        {
                          "fromStatus": "new",
                          "toStatus": "sent",
                          "at": 1750154762
                        },
                        {
                          "fromStatus": "sent",
                          "toStatus": "indexed",
                          "at": 1750154762
                        }
                      ]
                    }
                  },
                  "Transaction for non-custodial account": {
                    "value": {
                      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
                      "createdAt": 1689869074,
                      "object": "transactionIntent",
                      "details": {
                        "userOperationHash": "0x25d3...005c",
                        "userOperation": {
                          "sender": "0x814A...FB72",
                          "nonce": "0x0",
                          "initCode": "0x",
                          "callData": "0xb61d27f6000000000000000",
                          "callGasLimit": "0x2e84d",
                          "verificationGasLimit": "0x1bcef",
                          "maxFeePerGas": "0x62590091",
                          "maxPriorityFeePerGas": "0x62590091",
                          "paymasterAndData": "0x3210...391b",
                          "signature": "",
                          "preVerificationGas": "0xb80c"
                        }
                      },
                      "chainId": 80002,
                      "abstractionType": "accountAbstractionV6",
                      "updatedAt": 1689869074,
                      "policy": {
                        "id": "pol_..."
                      },
                      "player": {
                        "id": "pla_..."
                      },
                      "account": {
                        "id": "acc_..."
                      },
                      "nextAction": {
                        "type": "sign_with_wallet",
                        "payload": {
                          "signableHash": "0x25d3...005c"
                        }
                      },
                      "interactions": [
                        {
                          "functionName": "mint",
                          "value": "100000000000000",
                          "contract": "0x0576...1B57",
                          "functionArgs": [
                            "0x63B7...484f"
                          ]
                        }
                      ]
                    }
                  },
                  "Optimistic Transaction for custodial account": {
                    "value": {
                      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
                      "createdAt": 1689869074,
                      "object": "transactionIntent",
                      "userOperationHash": "0x25d3...005c",
                      "details": {
                        "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8",
                        "to": "0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc",
                        "gas": "0x5208",
                        "maxFeePerGas": "0x3b9aca00",
                        "maxPriorityFeePerGas": "0x3b9aca00",
                        "nonce": "0x0",
                        "data": "0x3c44...",
                        "paymaster": "0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc",
                        "paymasterInput": "0x3c44..."
                      },
                      "chainId": 300,
                      "abstractionType": "zkSync",
                      "updatedAt": 1689869074,
                      "policy": {
                        "id": "pol_..."
                      },
                      "player": {
                        "id": "pla_..."
                      },
                      "account": {
                        "id": "acc_..."
                      },
                      "interactions": [
                        {
                          "functionName": "mint",
                          "contract": "con_...",
                          "functionArgs": [
                            "0x63B7...484f"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "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 TransactionIntent.\n\nA pending TransactionIntent has the `response` attribute as undefined.\n\nAfter the TransactionIntent is created and broadcasted to the blockchain, `response` will be populated with the transaction hash and a status (1 success, 0 fail).\n\nWhen using a non-custodial account, a `nextAction` attribute is returned with the `userOperationHash` that must be signed by the owner of the account.",
        "summary": "Create a transaction intent object",
        "tags": [
          "Transaction Intents"
        ],
        "security": [
          {
            "sk": [
              "transactions:write"
            ]
          },
          {
            "pk_third_party": []
          },
          {
            "pk_access_token": []
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "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/CreateTransactionIntentRequest"
              }
            }
          }
        }
      }
    },
    "/v1/transaction_intents/{id}": {
      "get": {
        "operationId": "GetTransactionIntent",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionIntentResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
                      "createdAt": 1689869074,
                      "object": "transactionIntent",
                      "finalCost": "0.42",
                      "details": {
                        "userOperationHash": "0x25d3...005c",
                        "userOperation": {
                          "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
                          "nonce": "0x2",
                          "initCode": "0x",
                          "callData": "0xb61d...0000",
                          "callGasLimit": "0x27863",
                          "verificationGasLimit": "0x16001",
                          "preVerificationGas": "0xb818",
                          "maxFeePerGas": "0x62590091",
                          "maxPriorityFeePerGas": "0x62590091",
                          "paymasterAndData": "0x3210...b51c",
                          "signature": "0x6202...3d1b"
                        }
                      },
                      "chainId": 80002,
                      "abstractionType": "accountAbstractionV6",
                      "updatedAt": 1689869074,
                      "policy": {
                        "id": "pol_..."
                      },
                      "player": {
                        "id": "pla_..."
                      },
                      "account": {
                        "id": "acc_..."
                      },
                      "response": {
                        "createdAt": 1689869074,
                        "logs": [
                          {
                            "removed": false,
                            "transactionIndex": 0,
                            "blockNumber": 44904492,
                            "transactionHash": "0x25d3...005c",
                            "address": "0x5FF1...2789",
                            "topics": [
                              "0xbb47...f972"
                            ],
                            "data": "0x",
                            "logIndex": 0,
                            "blockHash": "0x8a69...6d59"
                          }
                        ],
                        "blockNumber": 8789286,
                        "transactionHash": "0x25d3...005c",
                        "to": "0x0576...1B57",
                        "gasUsed": "336730",
                        "status": 1
                      },
                      "interactions": [
                        {
                          "functionName": "mint",
                          "contract": "con_...",
                          "functionArgs": [
                            "0x63B7...484f"
                          ]
                        }
                      ],
                      "transitions": [
                        {
                          "fromStatus": "none",
                          "toStatus": "new",
                          "at": 1750154762
                        },
                        {
                          "fromStatus": "new",
                          "toStatus": "sent",
                          "at": 1750154762
                        },
                        {
                          "fromStatus": "sent",
                          "toStatus": "indexed",
                          "at": 1750154762
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestErrorResponse"
                }
              }
            }
          }
        },
        "description": "Retrieves the details of a TransactionIntent that has previously been created.",
        "summary": "Get a transaction intent object",
        "tags": [
          "Transaction Intents"
        ],
        "security": [
          {
            "sk": [
              "transactions:read"
            ]
          },
          {
            "pk_third_party": []
          },
          {
            "pk_access_token": []
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique transaction intent 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/TransactionIntentResponseExpandable"
              },
              "example": [
                "players"
              ]
            },
            "example": [
              "players"
            ]
          }
        ]
      }
    },
    "/v1/transaction_intents/estimate_gas_cost": {
      "post": {
        "operationId": "EstimateTransactionIntentCost",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateTransactionIntentGasResult"
                },
                "examples": {
                  "Gas estimation": {
                    "value": {
                      "estimatedTXGas": "444793",
                      "estimatedTXGasFee": "1162163748854053",
                      "estimatedTXGasFeeUSD": "0.01",
                      "gasPrice": "2612819331"
                    }
                  },
                  "Gas estimation with token policy": {
                    "value": {
                      "estimatedTXGas": "444793",
                      "estimatedTXGasFee": "1162163748854053",
                      "estimatedTXGasFeeUSD": "0.01",
                      "gasPrice": "2612819331",
                      "estimatedTXGasFeeToken": "200"
                    }
                  }
                }
              }
            }
          },
          "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": "Estimate the gas cost of broadcasting a TransactionIntent.\n\nThis is a simulation, it does not send the transaction on-chain.\n\nIf a Policy ID is used that includes payment of gas in ERC-20 tokens, an extra field `estimatedTXGasFeeToken` is returned with the estimated amount of tokens that will be used.",
        "summary": "Estimate gas cost of creating a transaction",
        "tags": [
          "Transaction Intents"
        ],
        "security": [
          {
            "sk": [
              "transactions:write"
            ]
          },
          {
            "pk_third_party": []
          },
          {
            "pk_access_token": []
          },
          {
            "auth_token": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTransactionIntentRequest"
              }
            }
          }
        }
      }
    },
    "/v1/transaction_intents/{id}/signature": {
      "post": {
        "operationId": "Signature",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionIntentResponse"
                },
                "examples": {
                  "Example 1": {
                    "value": {
                      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
                      "createdAt": 1689869074,
                      "object": "transactionIntent",
                      "finalCost": "0.42",
                      "details": {
                        "userOperationHash": "0x25d3...005c",
                        "userOperation": {
                          "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
                          "nonce": "0x2",
                          "initCode": "0x",
                          "callData": "0xb61d...0000",
                          "callGasLimit": "0x27863",
                          "verificationGasLimit": "0x16001",
                          "preVerificationGas": "0xb818",
                          "maxFeePerGas": "0x62590091",
                          "maxPriorityFeePerGas": "0x62590091",
                          "paymasterAndData": "0x3210...b51c",
                          "signature": "0x6202...3d1b"
                        }
                      },
                      "chainId": 80002,
                      "abstractionType": "accountAbstractionV6",
                      "updatedAt": 1689869074,
                      "policy": {
                        "id": "pol_..."
                      },
                      "player": {
                        "id": "pla_..."
                      },
                      "account": {
                        "id": "acc_..."
                      },
                      "response": {
                        "createdAt": 1689869074,
                        "logs": [
                          {
                            "removed": false,
                            "transactionIndex": 0,
                            "blockNumber": 44904492,
                            "transactionHash": "0x25d3...005c",
                            "address": "0x5FF1...2789",
                            "topics": [
                              "0xbb47...f972"
                            ],
                            "data": "0x",
                            "logIndex": 0,
                            "blockHash": "0x8a69...6d59"
                          }
                        ],
                        "blockNumber": 8789286,
                        "transactionHash": "0x25d3...005c",
                        "to": "0x0576...1B57",
                        "gasUsed": "336730",
                        "status": 1
                      },
                      "interactions": [
                        {
                          "functionName": "mint",
                          "contract": "con_...",
                          "functionArgs": [
                            "0x63B7...484f"
                          ]
                        }
                      ],
                      "transitions": [
                        {
                          "fromStatus": "none",
                          "toStatus": "new",
                          "at": 1750154762
                        },
                        {
                          "fromStatus": "new",
                          "toStatus": "sent",
                          "at": 1750154762
                        },
                        {
                          "fromStatus": "sent",
                          "toStatus": "indexed",
                          "at": 1750154762
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "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": "Broadcasts a signed TransactionIntent to the blockchain.\n\nUse this endpoint to send the signed `signableHash`. Openfort will then put it on-chain.",
        "summary": "Send a signed transaction signableHash",
        "tags": [
          "Transaction Intents"
        ],
        "security": [
          {
            "pk": []
          },
          {
            "sk": [
              "transactions:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Specifies the unique transaction intent 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/SignatureRequest"
              }
            }
          }
        }
      }
    },
    "/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 or externalId must be provided."
          },
          "404": {
            "description": "Solana transaction not found."
          }
        },
        "description": "Get the status of a Solana transaction by either its internal id or the\ncaller-supplied externalId attached when the transaction was signed.\n\nExactly one of `id` or `externalId` must be provided. Lookups are scoped to\nthe authenticated project.",
        "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"
            }
          }
        ]
      }
    },
    "/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": [
          {
            "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": [
          {
            "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",
                      "url": "http://localhost:3000",
                      "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 account pre-generated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PregenerateAccountResponse"
                }
              }
            }
          },
          "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 an embedded account before they authenticate.\nCreates a user record and an embedded account using the provided SSS key shares.\nWhen the user later authenticates (via email, OAuth, third-party auth, etc.)\nwith the same identifier, they will be linked to this pre-generated account.\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 an embedded account",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "sk": [
              "users:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PregenerateUserRequestV2"
              }
            }
          }
        }
      }
    },
    "/v2/policies": {
      "get": {
        "operationId": "ListPolicies",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyV2ListResponse"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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": [
          {
            "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"
                }
              }
            }
          },
          "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": [
          {
            "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"
                }
              }
            }
          },
          "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": [
          {
            "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"
                }
              }
            }
          },
          "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"
                }
              }
            }
          },
          "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",
          "zkSync",
          "standard"
        ],
        "type": "string",
        "x-enum-varnames": [
          "AAV6",
          "AAV8",
          "AAV9",
          "ZKSYNC",
          "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
      },
      "ZKSyncDetails": {
        "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"
          },
          "paymaster": {
            "type": "string",
            "description": "Address of the paymaster account that will pay the fees.",
            "example": "0x8ab66318aCC6b29A27e74e534bfe3ecf81C50387"
          },
          "paymasterInput": {
            "type": "string",
            "description": "Input data to the paymaster",
            "example": "0x8c5a..."
          },
          "value": {
            "type": "string",
            "description": "Value in wei sent with this transaction.",
            "example": "1000000000000000000"
          }
        },
        "required": [
          "from",
          "to",
          "nonce",
          "gas",
          "maxFeePerGas",
          "maxPriorityFeePerGas"
        ],
        "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/ZKSyncDetails"
              },
              {
                "$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"
          }
        },
        "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"
          },
          "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"
        ],
        "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"
        ]
      },
      "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"
          },
          "updatedAt": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "id",
          "object",
          "createdAt",
          "target",
          "type",
          "subscription"
        ],
        "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."
          }
        },
        "required": [
          "id",
          "externalId",
          "txSignature",
          "status",
          "errorMessage"
        ],
        "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/ZKSyncDetails"
              },
              {
                "$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"
          },
          "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"
          },
          "paymentMethod": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "subdivision": {
            "type": "string"
          }
        },
        "required": [
          "sourceCurrency",
          "destinationCurrency",
          "destinationNetwork",
          "sourceAmount"
        ],
        "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, ZKSyncUpgradeableV2). 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
      },
      "PregenerateAccountResponse": {
        "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 the user's embedded signer.\nThis should be stored securely and provided to the user for account recovery."
          },
          "user": {
            "type": "string",
            "description": "User uuid"
          }
        },
        "required": [
          "id",
          "wallet",
          "accountType",
          "address",
          "chainType",
          "createdAt",
          "updatedAt",
          "custody",
          "recoveryShare",
          "user"
        ],
        "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"
        ]
      },
      "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"
          },
          "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 \"Smart Account\".",
            "example": "Smart 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
      },
      "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
      },
      "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.",
            "example": "con_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "tokenContractAmount": {
            "type": "string",
            "description": "Token amount for charge_custom_tokens or fixed_rate schemas.",
            "example": "1000000000000000000"
          },
          "dynamicExchangeRate": {
            "type": "boolean",
            "description": "Whether the exchange rate is computed dynamically from cached prices.\nTrue when tokenContractAmount was not provided at creation time.",
            "example": true
          },
          "splTokens": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "SPL mint addresses accepted for fee payment on Solana\ncharge_custom_tokens policies.",
            "example": [
              "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
            ]
          }
        },
        "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
      },
      "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
      },
      "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.",
            "example": "con_48eeba57-2cd5-4159-a2cb-057a23a35e65"
          },
          "tokenContractAmount": {
            "type": "string",
            "description": "Token amount for charge_custom_tokens or fixed_rate schemas.",
            "example": "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 / tokenContractAmount.",
            "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
      },
      "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
      },
      "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"
          }
        },
        "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
      },
      "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
      },
      "EntityType.SMTP_CONFIG": {
        "enum": [
          "smtpConfig"
        ],
        "type": "string",
        "x-enum-varnames": [
          "SMTP_CONFIG"
        ]
      },
      "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
      },
      "CreateSMTPConfigResponse": {
        "$ref": "#/components/schemas/SMTPConfigResponse"
      },
      "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
      },
      "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": [
        "Transaction Intents",
        "Contracts",
        "Solana Transactions"
      ]
    },
    {
      "name": "Sponsorship & Policies",
      "tags": [
        "Fee Sponsorship",
        "Policies"
      ]
    }
  ]
}