{
  "openapi": "3.1.0",
  "info": {
    "version": "1.0.0",
    "title": "DualOrg API",
    "description": "DualOrg API documentation",
    "termsOfService": "https://www.dual.network/terms",
    "contact": {
      "name": "DualOrg Support",
      "url": "https://www.dual.network/support"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "servers": [
    {
      "url": "https://api-testnet.dual.network/",
      "description": "Testnet server for development and testing purposes."
    }
  ],
  "paths": {
    "/payments/deposits": {
      "get": {
        "tags": [
          "payments"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "List all deposits",
        "description": "Fetch a list of all deposits.",
        "operationId": "ListDeposits",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/org-id"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "tx_hash",
            "in": "query",
            "description": "Transaction hash of the deposit.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "in": "query",
            "description": "Token used for the deposit.",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/DepositToken"
            }
          },
          {
            "name": "token_address",
            "in": "query",
            "description": "Token address for the deposit.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter objects created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter objects created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter objects created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the list of deposits.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDepositsOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/request-access": {
      "post": {
        "tags": [
          "support"
        ],
        "security": [],
        "summary": "Request access to a feature or service",
        "description": "This endpoint allows users to request access to a specific feature or service within the application.",
        "operationId": "RequestAccess",
        "requestBody": {
          "description": "The request body should contain the details of the access request, including the feature or service name and any additional information required.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestAccessIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/support": {
      "get": {
        "tags": [
          "support"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a list of support messages",
        "description": "Fetch a list of support messages with optional filters like prefix, public, unpublished, and pagination using limit and next token.",
        "operationId": "ListSupportMessages",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/org-id"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "wallet_id",
            "in": "query",
            "description": "Filter support messages by wallet ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter messages created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter messages created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter messages created on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "description": "Filter messages created on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of support and the next pagination token.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMessagesOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "post": {
        "tags": [
          "support"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Send a support message",
        "description": "Send a support message to the system. The message should include the wallet ID, title, and content.",
        "operationId": "SendSupportMessage",
        "requestBody": {
          "description": "The support message to be sent.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/support-message"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/support/{messageId}": {
      "get": {
        "tags": [
          "support"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a specific support message",
        "description": "Fetch the details of a specific support by providing its unique ID.",
        "operationId": "GetSupportMessage",
        "parameters": [
          {
            "$ref": "#/components/parameters/message-id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the support details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/support-message"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations": {
      "get": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "List organizations",
        "description": "Retrieve a paginated list of organizations accessible to the authenticated user. This endpoint\nsupports filtering by various criteria including organization ID, name, role assignments, and\nsupports autocomplete functionality for search operations.\n",
        "operationId": "ListOrganizations",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "role_name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter organizations by role name."
          }
        ],
        "responses": {
          "200": {
            "description": "list of organizations",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListOrganizationsOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "post": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Create an organization",
        "description": "Create a new organization with the specified details. This endpoint allows authenticated users\nto establish new organizational structures with custom names, descriptions, and initial settings.\nThe creator automatically becomes the owner of the new organization.\n",
        "operationId": "CreateOrganization",
        "requestBody": {
          "description": "organization details",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/organization-create"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/switch": {
      "post": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Switch organization",
        "description": "Switch the context to a different organization for the authenticated user. This endpoint\nallows users to change their active organization, affecting subsequent API requests and\noperations within the new organizational context.\n",
        "operationId": "SwitchOrganization",
        "requestBody": {
          "description": "The organization switch request payload containing the target organization ID.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrganizationSwitch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Organization switched successfully",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationSwitchOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/wallets": {
      "post": {
        "tags": [
          "organizations"
        ],
        "security": [],
        "summary": "Register wallet for organization",
        "description": "Register a new wallet for an organization. This endpoint allows organizations to create a wallet account\nwith basic information such as email, phone number, and password. Upon successful registration,\nthe system returns authentication tokens for immediate access to the platform.\n",
        "operationId": "RegisterOrganizationWallet",
        "requestBody": {
          "description": "Register payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/wallet-create"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful registration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/{organizationId}": {
      "get": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a specific organization",
        "description": "Fetch the details of a specific organization by providing its unique ID.",
        "operationId": "GetOrganization",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the organization details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/organization"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "patch": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Update an existing organization",
        "description": "Modify the properties of an existing organization by providing its unique ID and updated details.",
        "operationId": "UpdateOrganization",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          }
        ],
        "requestBody": {
          "description": "The updated details for the organization.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/organization-update"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "delete": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Delete an organization",
        "description": "Remove an organization from the system by providing its unique ID.",
        "operationId": "DeleteOrganization",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/{organizationId}/balance": {
      "get": {
        "tags": [
          "ebus"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve the balance of an organization",
        "description": "Fetch the current balance of an organization by providing its unique ID. This endpoint returns the total balance available for the organization.",
        "operationId": "GetOrganizationBalance",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the organization details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/balance-out"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/{organizationId}/balance/history": {
      "get": {
        "tags": [
          "ebus"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve the balance history of an organization",
        "description": "Fetch the balance history of an organization by providing its unique ID. This endpoint returns the historical balance changes for the organization.",
        "operationId": "GetOrganizationBalanceHistory",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          },
          {
            "$ref": "#/components/parameters/interval"
          },
          {
            "$ref": "#/components/parameters/time-range"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the organization balance history.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalanceHistoryOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/{organizationId}/invite": {
      "get": {
        "tags": [
          "organizations"
        ],
        "security": [],
        "summary": "Confirm an organization invite",
        "description": "Confirm an organization invite by providing the organization ID and the invite token.",
        "operationId": "ConfirmInvite",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          },
          {
            "name": "token",
            "in": "query",
            "description": "The invite token.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "member_id",
            "in": "query",
            "description": "The member ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the organization details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/confirm-invite-out"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/{organizationId}/members": {
      "get": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "List members",
        "description": "Retrieve a paginated list of members belonging to a specific organization. This endpoint\nprovides access to member information including roles, invitation status, and contact\ndetails. Members can be filtered by various criteria and sorted by different attributes.\n",
        "operationId": "ListMembers",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "status",
            "in": "query",
            "description": "filter by invite status",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "list of members",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMembersOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "post": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Create an member",
        "description": "Invite a new member to join the organization. This endpoint allows organization owners\nand administrators to send invitations to potential members with specified roles and\npermissions. The invited member will receive notification of the invitation.\n",
        "operationId": "CreateMember",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          }
        ],
        "requestBody": {
          "description": "member details",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/member-create"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/{organizationId}/members/{memberId}": {
      "get": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a specific member",
        "description": "Fetch the details of a specific member by providing its unique ID.",
        "operationId": "GetMember",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          },
          {
            "$ref": "#/components/parameters/memberId"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the member details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/member"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "patch": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Update an existing member",
        "description": "Modify the properties of an existing member by providing its unique ID and updated details.",
        "operationId": "UpdateMember",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          },
          {
            "$ref": "#/components/parameters/memberId"
          }
        ],
        "requestBody": {
          "description": "The updated details for the member.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/member-update"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "delete": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Delete an member",
        "description": "Remove an member from the system by providing its unique ID.",
        "operationId": "DeleteMember",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          },
          {
            "$ref": "#/components/parameters/memberId"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/{organizationId}/roles": {
      "get": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "List roles",
        "description": "Retrieve a paginated list of roles defined within a specific organization. This endpoint\nprovides access to role information including permissions, member assignments, and\nrole hierarchy. Roles can be filtered and sorted by various criteria.\n",
        "operationId": "ListRoles",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          }
        ],
        "responses": {
          "200": {
            "description": "list of roles",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListRolesOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "post": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Create an role",
        "description": "Create a new role within the organization with specified permissions and settings.\nThis endpoint allows organization administrators to define custom roles with specific\naccess levels and capabilities for member management.\n",
        "operationId": "CreateRole",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          }
        ],
        "requestBody": {
          "description": "role details",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoleCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/{organizationId}/roles/default": {
      "get": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a default role",
        "description": "Retrieve the default role configuration for the organization. This endpoint returns\nthe role that is automatically assigned to new members when they join the organization.\n",
        "operationId": "GetDefaultRole",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the role details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/{organizationId}/roles/{roleId}": {
      "get": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a specific role",
        "description": "Fetch the details of a specific role by providing its unique ID.",
        "operationId": "GetRole",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          },
          {
            "$ref": "#/components/parameters/roleId"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the role details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "patch": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Update an existing role",
        "description": "Modify the properties of an existing role by providing its unique ID and updated details.",
        "operationId": "UpdateRole",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          },
          {
            "$ref": "#/components/parameters/roleId"
          }
        ],
        "requestBody": {
          "description": "The updated details for the role.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoleUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "delete": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Delete an role",
        "description": "Remove an role from the system by providing its unique ID.",
        "operationId": "DeleteRole",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          },
          {
            "$ref": "#/components/parameters/roleId"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/organizations/{organizationId}/myrole": {
      "get": {
        "tags": [
          "organizations"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a specific member role",
        "description": "Fetch the role details of a specific member by providing its unique ID.",
        "operationId": "GetMemberRole",
        "parameters": [
          {
            "$ref": "#/components/parameters/organizationId"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the member role details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/auth/login": {
      "post": {
        "tags": [
          "wallets"
        ],
        "security": [],
        "summary": "Login",
        "description": "Authenticate a user with their credentials and return access tokens. This endpoint accepts\nemail/phone and password combinations to verify user identity. Upon successful authentication,\nthe system returns both access and refresh tokens for secure API access.\n",
        "operationId": "LoginWallet",
        "requestBody": {
          "description": "Login payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/login-in"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful login",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/auth/otp": {
      "post": {
        "tags": [
          "wallets"
        ],
        "security": [],
        "summary": "Request OTP code",
        "description": "Request a one-time password (OTP) code to be sent to the user's email or phone number.\nThis endpoint is used for multi-factor authentication and account security verification.\n",
        "operationId": "RequestOTPCode",
        "requestBody": {
          "description": "Request OTP code payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestOTPCodeIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/auth/verify": {
      "post": {
        "tags": [
          "wallets"
        ],
        "security": [],
        "summary": "Verify wallet",
        "description": "Verify a wallet account using a verification code sent to the user's email or phone number.\nThis endpoint is used to confirm account ownership and activate the wallet for full platform access.\n",
        "operationId": "VerifyWallet",
        "requestBody": {
          "description": "Verify payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/auth/password": {
      "post": {
        "tags": [
          "wallets"
        ],
        "security": [],
        "summary": "Request password reset",
        "description": "request password reset",
        "operationId": "ResetPassword",
        "requestBody": {
          "description": "new password payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetPasswordIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/auth/set-password": {
      "post": {
        "tags": [
          "wallets"
        ],
        "security": [],
        "summary": "Set new password",
        "description": "Set a new password for the user account using a security token. This endpoint allows users\nto reset their password when they have forgotten it, using a token received via email or SMS.\n",
        "operationId": "SetNewPassword",
        "requestBody": {
          "description": "New password payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetNewPasswordIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/auth/verification-code": {
      "post": {
        "tags": [
          "wallets"
        ],
        "security": [],
        "summary": "Request verification code",
        "description": "Request a verification code to be sent to the user's email or phone number. This endpoint\ninitiates the account verification process by generating and delivering a secure code for\nwallet activation.\n",
        "operationId": "RequestVerificationCode",
        "requestBody": {
          "description": "Request verification code payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetCodeIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/auth/refresh-token": {
      "post": {
        "tags": [
          "wallets"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Refresh access token",
        "description": "refresh access token",
        "operationId": "RefreshToken",
        "responses": {
          "200": {
            "description": "access token response",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefreshTokenOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/wallets": {
      "post": {
        "tags": [
          "wallets"
        ],
        "summary": "Register a new wallet",
        "description": "Register a new wallet in the system. This endpoint allows users to create a new wallet account\nwith basic information such as email, phone number, and password. Upon successful registration,\nthe system returns authentication tokens for immediate access to the platform.\n",
        "security": [],
        "operationId": "RegisterWallet",
        "requestBody": {
          "description": "Register payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/wallet-create"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful registration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/wallets/me": {
      "get": {
        "tags": [
          "wallets"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get current wallet",
        "description": "Retrieve the current authenticated user's wallet information. This endpoint returns detailed\nwallet data including profile information, account status, and associated metadata.\nAuthentication is required via bearer token or API key.\n",
        "operationId": "GetWallet",
        "responses": {
          "200": {
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "description": "Successful retrieval of wallet information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/wallet"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "patch": {
        "tags": [
          "wallets"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Update wallet",
        "description": "Update the current authenticated user's wallet information. This endpoint allows users to\nmodify their profile details, contact information, and account preferences. Only the\nauthenticated user can update their own wallet data.\n",
        "operationId": "UpdateWallet",
        "requestBody": {
          "description": "Update payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/wallet-update"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "delete": {
        "tags": [
          "wallets"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Delete current wallet",
        "description": "Delete the current wallet",
        "operationId": "DeleteWallet",
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/api-keys": {
      "get": {
        "tags": [
          "apikeys"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "List API keys",
        "description": "Retrieve a list of API keys with the option to limit the number of keys returned and paginate the results.",
        "operationId": "ListApiKeys",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter the list of keys by name."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Maximum number of keys to return in the response."
          },
          {
            "name": "next",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Pagination token to retrieve the next page of keys."
          }
        ],
        "responses": {
          "200": {
            "description": "A list of keys and the next pagination token.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListApiKeysOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "post": {
        "tags": [
          "apikeys"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Create a new API key",
        "description": "Create and configure a new API key by providing the necessary details in the request body.",
        "operationId": "CreateApiKey",
        "requestBody": {
          "description": "The details of the API key to create.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The ID of the newly created API key.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyCreateOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/api-keys/{keyId}": {
      "delete": {
        "tags": [
          "apikeys"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Delete an API key",
        "description": "Remove an API key from the system by providing its unique ID.",
        "operationId": "DeleteApiKey",
        "parameters": [
          {
            "$ref": "#/components/parameters/api-key-id"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/templates": {
      "get": {
        "tags": [
          "templates"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a list of templates",
        "description": "Fetch a list of templates with optional filters like prefix, public, unpublished, and pagination using limit and next token.",
        "operationId": "ListTemplates",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/org-id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "prefix",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter templates by a prefix for their name or identifier."
          },
          {
            "name": "fqdn",
            "in": "query",
            "description": "Filter templates by fully qualified domain name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter templates created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter templates created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter templates created on or after this date and time",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of templates and the next pagination token.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTemplatesOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "post": {
        "tags": [
          "templates"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Create a new template",
        "description": "Create and configure a new template by providing the necessary details in the request body.",
        "operationId": "CreateTemplate",
        "requestBody": {
          "description": "The details of the template to create.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/template-create"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/templates/{templateId}": {
      "get": {
        "tags": [
          "templates"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a specific template",
        "description": "Fetch the details of a specific template by providing its unique ID.",
        "operationId": "GetTemplate",
        "parameters": [
          {
            "$ref": "#/components/parameters/template-id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the template details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/template"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "patch": {
        "tags": [
          "templates"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Update an existing template",
        "description": "Modify the properties of an existing template by providing its unique ID and updated details.",
        "operationId": "UpdateTemplate",
        "parameters": [
          {
            "$ref": "#/components/parameters/template-id"
          }
        ],
        "requestBody": {
          "description": "The updated details for the template.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/template-update"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "delete": {
        "tags": [
          "templates"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Delete a template",
        "description": "Remove a template from the system by providing its unique ID.",
        "operationId": "DeleteTemplate",
        "parameters": [
          {
            "$ref": "#/components/parameters/template-id"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/objects": {
      "get": {
        "tags": [
          "objects"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "List objects",
        "description": "Retrieve a paginated list of smart objects accessible to the authenticated user. This endpoint\nsupports comprehensive filtering by various criteria including object type, ownership, location,\ntemplate associations, and temporal ranges. Objects can be filtered by faces, actions, ownership,\ngeographical location, and creation/modification timestamps.\n",
        "operationId": "ListObjects",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/org-id"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "faces",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Optional flag for face objects"
          },
          {
            "name": "actions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Optional flag for action objects"
          },
          {
            "name": "owner",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by the owner's address"
          },
          {
            "name": "fqdn",
            "in": "query",
            "description": "Filter objects by fully qualified domain name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dropped",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Optional flag for dropped items"
          },
          {
            "name": "geo_hash",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Geographical hash for location-based filtering"
          },
          {
            "name": "template_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by the collection ID"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter objects created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter objects created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter objects created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "list of objects",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSmartObjectsOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/objects/{objectId}": {
      "get": {
        "tags": [
          "objects"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get object",
        "description": "Retrieve detailed information about a specific smart object by its unique identifier.\nThis endpoint returns comprehensive object data including faces, actions, metadata,\nand current state information.\n",
        "operationId": "GetObjectById",
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "object by id",
            "headers": {
              "X-Request-Id": {
                "description": "Unique identifier for tracking the request.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/smart-object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/objects/{objectId}/state-changes": {
      "get": {
        "tags": [
          "objects",
          "explorer"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "List state changes",
        "description": "Retrieve a paginated list of state changes for a specific smart object. This endpoint\nprovides access to the complete history of state modifications including action types,\nwallet interactions, nonce values, and state root transitions. State changes can be\nfiltered by various criteria including wallet ID, action ID, change type, and temporal ranges.\n",
        "operationId": "ListStateChanges",
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/org-id"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "wallet_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "action_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "batch_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "change_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "action_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "nonce[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "nonce[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "prev_state_root",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "next_state_root",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of state changes",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListStateChangesOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/faces": {
      "get": {
        "tags": [
          "faces"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a list of faces",
        "description": "Retrieve a list of face definitions, with optional filters for template type, language, limit, and pagination.",
        "operationId": "ListFaces",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/org-id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter faces created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter faces created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter faces created on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "description": "Filter faces created on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of face objects along with the pagination token for the next set of results, if available.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListFacesOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "post": {
        "tags": [
          "faces"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Create a new face",
        "description": "Create a new face definition by providing necessary configuration details.",
        "operationId": "CreateFace",
        "requestBody": {
          "description": "JSON object containing the configuration details of the new face.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/face-create"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/faces/{faceId}": {
      "get": {
        "tags": [
          "faces"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a specific face",
        "description": "Retrieve detailed information for a specific face by providing its unique ID.",
        "operationId": "GetFace",
        "parameters": [
          {
            "$ref": "#/components/parameters/face-id"
          }
        ],
        "responses": {
          "200": {
            "description": "Face details successfully retrieved.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/face"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "patch": {
        "tags": [
          "faces"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Update face details",
        "description": "Update the attributes of an existing face by specifying its unique ID along with the updated data.",
        "operationId": "UpdateFace",
        "parameters": [
          {
            "$ref": "#/components/parameters/face-id"
          }
        ],
        "requestBody": {
          "description": "JSON object containing the updated details for the face.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/face-update"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "delete": {
        "tags": [
          "faces"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Delete a face",
        "description": "Permanently remove a face from the system by providing its unique ID.",
        "operationId": "DeleteFace",
        "parameters": [
          {
            "$ref": "#/components/parameters/face-id"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/faces/{faceId}/preview": {
      "get": {
        "tags": [
          "faces"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Preview a face",
        "description": "Retrieve a preview of a specific face as a page.",
        "operationId": "GetFacePreview",
        "parameters": [
          {
            "$ref": "#/components/parameters/face-id"
          }
        ],
        "responses": {
          "200": {
            "description": "Face details successfully retrieved.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string",
                  "format": "html",
                  "description": "HTML representation of the face details."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/assets": {
      "get": {
        "tags": [
          "storage"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get assets",
        "description": "Get a list of assets",
        "operationId": "ListAssets",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "folder",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of assets",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAssetsOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "post": {
        "tags": [
          "storage"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Upload an asset to the storage service",
        "description": "Upload a new asset to the storage service. This endpoint accepts multipart form data\ncontaining the file to be uploaded along with metadata such as name, type, and folder\nlocation. The uploaded asset will be processed and made available for download.\n",
        "operationId": "CreateAsset",
        "requestBody": {
          "description": "Upload details",
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/storage-asset-create"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Upload response",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/storage-asset"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          },
          "default": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/assets/{assetId}": {
      "get": {
        "tags": [
          "storage"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get asset",
        "description": "Retrieve detailed information about a specific asset by its unique identifier.\nThis endpoint returns asset metadata including name, type, URL, hash, and\ncreation timestamp.\n",
        "operationId": "GetAsset",
        "parameters": [
          {
            "$ref": "#/components/parameters/asset-id"
          }
        ],
        "responses": {
          "200": {
            "description": "Asset URL",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/storage-asset"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "delete": {
        "tags": [
          "storage"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Delete asset",
        "description": "Permanently remove an asset from the storage system by its unique identifier.\nThis operation cannot be undone and will remove all associated metadata and\nfile content from the platform.\n",
        "operationId": "DeleteAsset",
        "parameters": [
          {
            "$ref": "#/components/parameters/asset-id"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/assets/{assetId}/download": {
      "get": {
        "tags": [
          "storage"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Download asset",
        "description": "Download a specific asset by its unique identifier. This endpoint provides direct\naccess to the asset file content, either through a redirect to the asset URL or\nby returning the asset URL directly based on the noRedirect parameter.\n",
        "operationId": "DownloadAsset",
        "parameters": [
          {
            "$ref": "#/components/parameters/asset-id"
          },
          {
            "name": "noRedirect",
            "in": "query",
            "description": "If true, returns the asset URL instead of redirecting to it",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Asset URL",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetURL"
                }
              }
            }
          },
          "307": {
            "description": "Redirect to asset"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/ebus/execute": {
      "post": {
        "tags": [
          "ebus"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Execute an action",
        "description": "Call an action by providing the action name and the necessary details in the request body.",
        "operationId": "ExecuteAction",
        "requestBody": {
          "description": "The details of the action to call.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/execute-request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The result of the action execution.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/execute-result"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/ebus/action-logs": {
      "get": {
        "tags": [
          "ebus",
          "explorer"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "List action logs",
        "description": "Retrieve a paginated list of blockchain action execution logs. This endpoint provides\naccess to detailed information about action processing including status, wallet interactions,\nbatch associations, and execution timestamps. Action logs can be filtered by various\ncriteria including action ID, batch ID, wallet ID, object ID, signer, and status.\n",
        "operationId": "ListActionLogs",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/org-id"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "action_id",
            "in": "query",
            "description": "Filter logs by action ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hash",
            "in": "query",
            "description": "Filter logs by transaction hash",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "batch_id",
            "in": "query",
            "description": "Filter logs by batch ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "wallet_id",
            "in": "query",
            "description": "Filter logs by wallet ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "object_id",
            "in": "query",
            "description": "Filter logs by object ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signer",
            "in": "query",
            "description": "Filter logs by signer address",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter logs by execution status",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter logs created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter logs created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter logs created on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "description": "Filter logs created on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of action logs",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListActionLogsOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/stats/wallets": {
      "get": {
        "tags": [
          "wallets",
          "explorer"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get users statistics",
        "description": "Retrieve comprehensive statistics about user wallets and account activity. This endpoint\nprovides aggregate data including total user counts, registration trends, and activity\nmetrics over specified time ranges for analytics and reporting purposes.\n",
        "operationId": "GetWalletsStats",
        "parameters": [
          {
            "$ref": "#/components/parameters/time-range"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User statistics",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/wallets-stats-out"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/stats/wallets/total": {
      "get": {
        "tags": [
          "wallets",
          "explorer"
        ],
        "security": [],
        "summary": "Get users statistics over time",
        "description": "Retrieve comprehensive statistics about user wallets and account activity over time. This endpoint\nprovides aggregate data including total user counts, registration trends, and activity\nmetrics over specified time ranges for analytics and reporting purposes.\n",
        "operationId": "GetWalletsTotalStats",
        "parameters": [
          {
            "$ref": "#/components/parameters/interval"
          },
          {
            "$ref": "#/components/parameters/time-range"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User registration statistics",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/wallets-total-stats-out"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/stats/wallets/registration": {
      "get": {
        "tags": [
          "wallets",
          "explorer"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get users registration statistics over time",
        "description": "Retrieve time-series data about user registration patterns and trends. This endpoint\nprovides detailed analytics on user sign-ups over time, including activation rates,\nregistration velocity, and temporal distribution of new account creation.\n",
        "operationId": "GetWalletsRegistrationStats",
        "parameters": [
          {
            "$ref": "#/components/parameters/interval"
          },
          {
            "$ref": "#/components/parameters/time-range"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "name": "activated",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Filter statistics by activation status"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User registration statistics",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/wallets-registration-stats-out"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/stats/objects": {
      "get": {
        "tags": [
          "objects",
          "explorer"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get object statistics",
        "description": "Retrieve comprehensive statistics about smart objects and their usage patterns. This endpoint\nprovides aggregate data including total object counts, creation trends, template distribution,\nand ownership analytics over specified time ranges for platform insights and reporting.\n",
        "operationId": "GetObjectStats",
        "parameters": [
          {
            "$ref": "#/components/parameters/time-range"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "template_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter statistics by template ID"
          },
          {
            "name": "wallet_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter statistics by wallet ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Object statistics",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/objects-stats-out"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/stats/objects/creation": {
      "get": {
        "tags": [
          "objects",
          "explorer"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get object creation statistics over time",
        "description": "Retrieve time-series data about smart object creation patterns and trends. This endpoint\nprovides detailed analytics on object instantiation over time, including creation velocity,\ntemplate popularity, and temporal distribution of new object generation.\n",
        "operationId": "GetObjectCreationStats",
        "parameters": [
          {
            "$ref": "#/components/parameters/interval"
          },
          {
            "$ref": "#/components/parameters/time-range"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "template_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter statistics by template ID"
          },
          {
            "name": "signer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter statistics by signer account name"
          }
        ],
        "responses": {
          "200": {
            "description": "Object creation statistics",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/objects-creation-stats-out"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/stats/actions": {
      "get": {
        "tags": [
          "ebus",
          "explorer"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get actions statistics",
        "description": "Retrieve comprehensive statistics about blockchain actions and their execution patterns.\nThis endpoint provides aggregate data including total action counts, execution trends,\naction type distribution, and wallet activity analytics over specified time ranges.\n",
        "operationId": "GetActionsStats",
        "parameters": [
          {
            "$ref": "#/components/parameters/time-range"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "action_name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter statistics by action name"
          },
          {
            "name": "signer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter statistics by signer account name"
          }
        ],
        "responses": {
          "200": {
            "description": "Action statistics",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/actions-stats-out"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/stats/actions/execution": {
      "get": {
        "tags": [
          "ebus",
          "explorer"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get action execution statistics over time",
        "description": "Retrieve time-series data about blockchain action execution patterns and trends. This endpoint\nprovides detailed analytics on action processing over time, including execution velocity,\naction type popularity, and temporal distribution of blockchain transactions.\n",
        "operationId": "GetActionExecutionStats",
        "parameters": [
          {
            "$ref": "#/components/parameters/interval"
          },
          {
            "$ref": "#/components/parameters/time-range"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "action_name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter statistics by action name"
          },
          {
            "name": "signer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter statistics by signer account name"
          }
        ],
        "responses": {
          "200": {
            "description": "Action execution statistics",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/actions-execution-stats-out"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/stats/actions/fees": {
      "get": {
        "tags": [
          "ebus",
          "explorer"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Get action fees statistics over time",
        "description": "Retrieve time-series data about blockchain action fee patterns and trends. This endpoint\nprovides detailed analytics on transaction costs over time, including fee distribution,\ncost trends by action type, and temporal analysis of blockchain transaction expenses.\n",
        "operationId": "GetActionFeesStats",
        "parameters": [
          {
            "$ref": "#/components/parameters/interval"
          },
          {
            "$ref": "#/components/parameters/time-range"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "action_name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter statistics by action name"
          },
          {
            "name": "signer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter statistics by signer account name"
          }
        ],
        "responses": {
          "200": {
            "description": "Action fee statistics over time",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/actions-stats-fees-out"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/messages": {
      "get": {
        "tags": [
          "notifications"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a list of message",
        "description": "Fetch a list of messages with optional filters like prefix, public, unpublished, and pagination using limit and next token.",
        "operationId": "ListMessages",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "template_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter messages by template ID."
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter messages by recipient."
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/language"
            },
            "description": "language of the message"
          },
          {
            "name": "system",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/system"
            },
            "description": "Filter messages that are publicly accessible."
          },
          {
            "name": "action_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter type of messages."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/message-status"
            },
            "description": "Filter messages by status."
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of templates and the next pagination token.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListNotificationsOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/messages/send": {
      "post": {
        "tags": [
          "notifications"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Send a new message",
        "description": "Send a new message by providing the necessary details in the request body.",
        "operationId": "SendMessage",
        "requestBody": {
          "description": "The details of the message to send.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/message-create"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/messages/templates": {
      "get": {
        "tags": [
          "notifications"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a list of templates",
        "description": "Fetch a list of templates with optional filters like prefix, public, unpublished, and pagination using limit and next token.",
        "operationId": "ListMessagesTemplates",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/language"
            },
            "description": "language of the template"
          },
          {
            "name": "system",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/system"
            },
            "description": "Filter templates that are publicly accessible."
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter unpublished templates."
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of templates and the next pagination token.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMessageTemplatesOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "post": {
        "tags": [
          "notifications"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Create a new template",
        "description": "Create and configure a new template by providing the necessary details in the request body.",
        "operationId": "CreateMessagesTemplate",
        "requestBody": {
          "description": "The details of the template to create.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/template-message-create"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/messages/templates/{templateId}": {
      "get": {
        "tags": [
          "notifications"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a specific template",
        "description": "Fetch the details of a specific template by providing its unique ID.",
        "operationId": "GetMessagesTemplate",
        "parameters": [
          {
            "$ref": "#/components/parameters/template-id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the template details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/template-message"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "patch": {
        "tags": [
          "notifications"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Update an existing template",
        "description": "Modify the properties of an existing template by providing its unique ID and updated details.",
        "operationId": "UpdateMessagesTemplate",
        "parameters": [
          {
            "$ref": "#/components/parameters/template-id"
          }
        ],
        "requestBody": {
          "description": "The updated details for the template.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/template-message-update"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "delete": {
        "tags": [
          "notifications"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Delete a template",
        "description": "Remove a template from the system by providing its unique ID.",
        "operationId": "DeleteMessagesTemplate",
        "parameters": [
          {
            "$ref": "#/components/parameters/template-id"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/webhooks": {
      "get": {
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve all webhooks",
        "description": "Get a list of registered webhooks.",
        "operationId": "ListWebhooks",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "type",
            "in": "query",
            "description": "Filter webhooks by their type",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/webhook-type"
            }
          },
          {
            "name": "template_id",
            "in": "query",
            "description": "Filter webhooks by template ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "action",
            "in": "query",
            "description": "Filter webhooks by action name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "in": "query",
            "description": "Filter webhooks by blockchain address",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "is_active",
            "in": "query",
            "description": "Filter webhooks by their active status",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "wallet_id",
            "in": "query",
            "description": "Filter webhooks by wallet ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter webhooks created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter webhooks created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter webhooks created on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "description": "Filter webhooks created on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of webhooks.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWebhooksOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "post": {
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Create a new webhook",
        "description": "Register a new webhook with the system.",
        "operationId": "CreateWebhook",
        "requestBody": {
          "description": "Webhook configuration details.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/webhook-create"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/id"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/webhooks/{webhookId}": {
      "get": {
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve a specific webhook",
        "description": "Get details of a registered webhook by ID.",
        "operationId": "GetWebhook",
        "parameters": [
          {
            "$ref": "#/components/parameters/webhook-id"
          }
        ],
        "responses": {
          "200": {
            "description": "Webhook details retrieved.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/webhook"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "patch": {
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Update a webhook",
        "description": "Modify webhook configuration.",
        "operationId": "UpdateWebhook",
        "parameters": [
          {
            "$ref": "#/components/parameters/webhook-id"
          }
        ],
        "requestBody": {
          "description": "Webhook update details.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/webhook-update"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      },
      "delete": {
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Delete a webhook",
        "description": "Remove a registered webhook by ID.",
        "operationId": "DeleteWebhook",
        "parameters": [
          {
            "$ref": "#/components/parameters/webhook-id"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/empty"
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/webhooks/{webhookId}/events": {
      "get": {
        "tags": [
          "webhooks"
        ],
        "security": [
          {
            "bearer-auth": []
          },
          {
            "api-key-auth": []
          }
        ],
        "summary": "Retrieve all webhooks events",
        "description": "Get a list of registered webhooks events.",
        "operationId": "ListWebhookEvents",
        "parameters": [
          {
            "$ref": "#/components/parameters/webhook-id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "webhook_id",
            "in": "query",
            "description": "Filter events by webhook ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "org_id",
            "in": "query",
            "description": "Filter events by organization ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Filter events by webhook type",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/webhook-type"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter events by their status",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter events created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter events created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter events created on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "description": "Filter events created on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of webhooks events.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWebhookEventsOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/batches": {
      "get": {
        "tags": [
          "sequencer",
          "explorer"
        ],
        "security": [],
        "summary": "List batches",
        "description": "Retrieve a paginated list of transaction batches processed by the sequencer. This endpoint\nprovides access to batch information including status, signatures, and associated actions.\nBatches can be filtered by various criteria including action ID, batch ID, hash, status,\nsigner, and creation timestamps.\n",
        "operationId": "ListBatches",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/org-id"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "sequence",
            "in": "query",
            "description": "Filter batches by sequencer ID",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "uint64"
            }
          },
          {
            "name": "action_id",
            "in": "query",
            "description": "Filter batches by action ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "batch_id",
            "in": "query",
            "description": "Filter batches by batch ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hash",
            "in": "query",
            "description": "Filter batches by transaction hash",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter batches by processing status",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signer",
            "in": "query",
            "description": "Filter batches by signer address",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter batches created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter batches created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter batches created on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "description": "Filter batches created on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$gt]",
            "in": "query",
            "description": "Filter batches modified after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$lt]",
            "in": "query",
            "description": "Filter batches modified before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$gte]",
            "in": "query",
            "description": "Filter batches modified on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$lte]",
            "in": "query",
            "description": "Filter batches modified on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of batches",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBatchesOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/batches/{batchId}": {
      "get": {
        "tags": [
          "sequencer",
          "explorer"
        ],
        "security": [],
        "summary": "Retrieve a specific batch",
        "description": "Retrieve detailed information about a specific transaction batch by its unique identifier.\nThis endpoint returns comprehensive batch data including status, signatures, actions,\nand processing details for blockchain transaction management.\n",
        "operationId": "GetBatch",
        "parameters": [
          {
            "$ref": "#/components/parameters/batch-id"
          }
        ],
        "responses": {
          "200": {
            "description": "Batch details successfully retrieved.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/batch"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/checkpoints": {
      "get": {
        "tags": [
          "sequencer",
          "explorer"
        ],
        "security": [],
        "summary": "List checkpoints",
        "description": "Retrieve a paginated list of transaction checkpoints processed by the sequencer. This endpoint\nprovides access to checkpoint information including status, signatures, and associated actions.\nCheckpoints can be filtered by various criteria including action ID, checkpoint ID, hash, status,\nsigner, and creation timestamps.\n",
        "operationId": "ListCheckpoints",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/org-id"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "hash",
            "in": "query",
            "description": "Filter checkpoints by transaction hash",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter checkpoints by processing status",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signer",
            "in": "query",
            "description": "Filter checkpoints by signer address",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter checkpoints created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter checkpoints created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter checkpoints created on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "description": "Filter checkpoints created on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$gt]",
            "in": "query",
            "description": "Filter checkpoints modified after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$lt]",
            "in": "query",
            "description": "Filter checkpoints modified before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$gte]",
            "in": "query",
            "description": "Filter checkpoints modified on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$lte]",
            "in": "query",
            "description": "Filter checkpoints modified on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of checkpoints",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListCheckpointsOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/checkpoints/{checkpointId}": {
      "get": {
        "tags": [
          "sequencer",
          "explorer"
        ],
        "security": [],
        "summary": "Retrieve a specific checkpoint",
        "description": "Retrieve detailed information about a specific transaction checkpoint by its unique identifier.\nThis endpoint returns comprehensive checkpoint data including status, signatures, actions,\nand processing details for blockchain transaction management.\n",
        "operationId": "GetCheckpoint",
        "parameters": [
          {
            "$ref": "#/components/parameters/checkpoint-id"
          }
        ],
        "responses": {
          "200": {
            "description": "Checkpoint details successfully retrieved.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/checkpoint"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/network": {
      "get": {
        "tags": [
          "indexer",
          "explorer"
        ],
        "security": [],
        "summary": "Get network information",
        "description": "Retrieve detailed information about the eBus network, including current fees,\nnetwork status, and other relevant metrics.\n",
        "operationId": "GetNetworkInfo",
        "responses": {
          "200": {
            "description": "Network information",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/network-info"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/network/fees": {
      "get": {
        "tags": [
          "ebus",
          "explorer"
        ],
        "security": [],
        "summary": "Get network fees information",
        "description": "Retrieve detailed information about the eBus network fees, including current fees,\nnetwork status, and other relevant metrics.\n",
        "operationId": "GetNetworkFees",
        "responses": {
          "200": {
            "description": "Network fees information",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/network-fees"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/network/config": {
      "get": {
        "tags": [
          "indexer",
          "explorer"
        ],
        "security": [],
        "summary": "Get network configuration",
        "description": "Retrieve the network configuration associated with the eBus network, including\ntheir types, statuses, and other relevant information.\n",
        "operationId": "GetNetworkConfig",
        "responses": {
          "200": {
            "description": "Network configuration",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/network-config"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/network/staking": {
      "get": {
        "tags": [
          "indexer",
          "explorer"
        ],
        "security": [],
        "summary": "Get network staking information",
        "description": "Retrieve detailed information about the eBus network staking, including current fees,\nnetwork status, and other relevant metrics.\n",
        "operationId": "GetNetworkStakingInfo",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "description": "Filter by specific address involved in staking (optional).",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Network staking information",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/network-staking"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/network/staking/operations": {
      "get": {
        "tags": [
          "indexer",
          "explorer"
        ],
        "security": [],
        "summary": "List all staking operations",
        "description": "Fetch a list of all staking operations.",
        "operationId": "ListStakingOperations",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "address",
            "in": "query",
            "description": "Address involved in the staking operation.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tx_hash",
            "in": "query",
            "description": "Transaction hash of the deposit.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Type of staking operation.",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/StakingOperationType"
            }
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter objects created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter objects created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter objects created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the list of staking operations.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListStakingOperationsOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/network/staking/operations/stats": {
      "get": {
        "tags": [
          "indexer",
          "explorer"
        ],
        "security": [],
        "summary": "Get staking operations statistics",
        "description": "Retrieve statistics about staking operations, including total counts, trends over time,\nand other relevant metrics to analyze staking activity on the eBus network.\n",
        "operationId": "GetStakingOperationsStats",
        "parameters": [
          {
            "$ref": "#/components/parameters/interval"
          },
          {
            "$ref": "#/components/parameters/time-range"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Staking operations statistics",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/staking-operations-stats"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/network/token/market-data": {
      "get": {
        "tags": [
          "indexer",
          "explorer"
        ],
        "security": [],
        "summary": "Get network token market data",
        "description": "Retrieve detailed information about the network token, including current fees,\nnetwork status, and other relevant metrics.\n",
        "operationId": "GetNetworkTokenMarketData",
        "responses": {
          "200": {
            "description": "Network token market data",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/network-token-market-data"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/network/token/price-history": {
      "get": {
        "tags": [
          "indexer",
          "explorer"
        ],
        "security": [],
        "summary": "Get network token price history",
        "description": "Retrieve detailed information about the eBus network token, including current fees,\nnetwork status, and other relevant metrics.\n",
        "operationId": "GetNetworkTokenPriceHistory",
        "parameters": [
          {
            "$ref": "#/components/parameters/time-range"
          }
        ],
        "responses": {
          "200": {
            "description": "Network token ticker information",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/network-token-price-history"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/templates": {
      "get": {
        "tags": [
          "templates",
          "explorer"
        ],
        "security": [],
        "summary": "List Templates Public",
        "description": "Retrieve a list of public templates available for use. This endpoint allows filtering by various criteria such as ID, name, and creation date.\n",
        "operationId": "ListTemplatesPublic",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter templates created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter templates created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter templates created on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "description": "Filter templates created on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of templates and the next pagination token.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPublicTemplatesOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/templates/{templateId}": {
      "get": {
        "tags": [
          "templates",
          "explorer"
        ],
        "security": [],
        "summary": "Fetch Template Public",
        "description": "Retrieve the details of a specific template by providing its unique ID. This endpoint allows users\nto access comprehensive information about a template, including its properties, creation date,\nand associated metadata. It is useful for understanding the structure and content of templates\nused in the system.\n",
        "operationId": "GetTemplatePublic",
        "parameters": [
          {
            "$ref": "#/components/parameters/template-id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the template details.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/public-template"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/objects": {
      "get": {
        "tags": [
          "objects",
          "explorer"
        ],
        "security": [],
        "summary": "List Objects Public",
        "description": "Retrieve a paginated list of smart objects accessible to the public. This endpoint\nsupports comprehensive filtering by various criteria including object type, ownership, location,\ntemplate associations, and temporal ranges. Objects can be filtered by faces, actions, ownership,\ngeographical location, and creation/modification timestamps.\n",
        "operationId": "ListObjectsPublic",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/autocomplete"
          },
          {
            "$ref": "#/components/parameters/next"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/sortBy"
          },
          {
            "name": "faces",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Optional flag for face objects"
          },
          {
            "name": "actions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Optional flag for action objects"
          },
          {
            "name": "owner",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by the owner's address"
          },
          {
            "name": "dropped",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Optional flag for dropped items"
          },
          {
            "name": "geo_hash",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Geographical hash for location-based filtering"
          },
          {
            "name": "template_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by the collection ID"
          },
          {
            "name": "when_created[$gt]",
            "in": "query",
            "description": "Filter objects created after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lt]",
            "in": "query",
            "description": "Filter objects created before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$gte]",
            "in": "query",
            "description": "Filter objects created on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_created[$lte]",
            "in": "query",
            "description": "Filter objects created on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$gt]",
            "in": "query",
            "description": "Filter objects modified after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$lt]",
            "in": "query",
            "description": "Filter objects modified before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$gte]",
            "in": "query",
            "description": "Filter objects modified on or after this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "when_modified[$lte]",
            "in": "query",
            "description": "Filter objects modified on or before this date and time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "list of objects",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/request-id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPublicSmartObjectsOut"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/objects/{objectId}": {
      "get": {
        "tags": [
          "objects",
          "explorer"
        ],
        "security": [],
        "summary": "Get Object by ID Public",
        "description": "Retrieve detailed information about a specific smart object by its unique identifier.\nThis endpoint returns comprehensive object data including faces, actions, metadata,\nand current state information.\n",
        "operationId": "GetObjectByIdPublic",
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "object by id",
            "headers": {
              "X-Request-Id": {
                "description": "Unique identifier for tracking the request.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/public-smart-object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/metadata/{objectId}": {
      "get": {
        "tags": [
          "objects",
          "explorer"
        ],
        "security": [],
        "summary": "Get Object Metadata by ID Public",
        "description": "Retrieve metadata information about a specific smart object by its unique identifier.\nThis endpoint returns metadata details including creation timestamps, versioning,\nand other relevant metadata attributes.\n",
        "operationId": "GetObjectMetadataByIdPublic",
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "object by id",
            "headers": {
              "X-Request-Id": {
                "description": "Unique identifier for tracking the request.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/public-smart-object-metadata"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    },
    "/public/render/{objectId}": {
      "get": {
        "tags": [
          "objects",
          "explorer"
        ],
        "security": [],
        "summary": "Render Object View by ID Public",
        "description": "Render a view of a specific smart object by its unique identifier.\nThis endpoint generates a visual representation of the smart object, which can be used for display purposes in user interfaces or for sharing. The rendered view may include the object's metadata, attributes, and any associated media or visual elements.\n",
        "operationId": "RenderObjectViewByIdPublic",
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "object by id",
            "headers": {
              "X-Request-Id": {
                "description": "Unique identifier for tracking the request.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/public-smart-object-metadata"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badrequest"
          },
          "404": {
            "$ref": "#/components/responses/notfound"
          },
          "500": {
            "$ref": "#/components/responses/internal"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearer-auth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "api-key-auth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "API key needed to access the API."
      }
    },
    "parameters": {
      "id": {
        "name": "id",
        "in": "query",
        "description": "Filter resources by their unique identifier",
        "required": false,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "omitempty,mongodb"
        }
      },
      "org-id": {
        "name": "org_id",
        "in": "query",
        "description": "Filter resources by the organization they belong to",
        "required": false,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "omitempty,mongodb"
        }
      },
      "limit": {
        "name": "limit",
        "in": "query",
        "description": "How many items to return at one time (max 100)",
        "required": false,
        "schema": {
          "type": "integer",
          "format": "int64"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "omitempty,number,gte=1,lte=100"
        }
      },
      "next": {
        "name": "next",
        "in": "query",
        "description": "Pagination token for retrieving the next page of results",
        "required": false,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "omitempty,alphanum,max=255"
        }
      },
      "order": {
        "name": "order",
        "in": "query",
        "description": "Sort order for the results (ascending or descending)",
        "required": false,
        "schema": {
          "type": "string",
          "enum": [
            "asc",
            "desc"
          ]
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "omitempty,oneof=asc desc"
        }
      },
      "sortBy": {
        "name": "sortBy",
        "in": "query",
        "description": "Field name to sort the results by",
        "required": false,
        "schema": {
          "type": "string"
        }
      },
      "message-id": {
        "name": "messageId",
        "in": "path",
        "description": "Unique identifier of the message",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "required,mongodb"
        }
      },
      "name": {
        "name": "name",
        "in": "query",
        "description": "Filter resources by their name or title",
        "required": false,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "omitempty,alphanum,max=255"
        }
      },
      "autocomplete": {
        "name": "autocomplete",
        "in": "query",
        "description": "Search term for autocomplete functionality",
        "required": false,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "omitempty,alphanum"
        }
      },
      "organizationId": {
        "name": "organizationId",
        "in": "path",
        "description": "Unique identifier of the organization",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "required,mongodb"
        }
      },
      "interval": {
        "name": "interval",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string",
          "enum": [
            "hour",
            "day",
            "week",
            "month",
            "year"
          ],
          "default": "week"
        },
        "description": "Time interval for grouping time-series statistics and analytics data",
        "x-oapi-codegen-extra-tags": {
          "validate": "omitempty,oneof=hour day week month year"
        }
      },
      "time-range": {
        "name": "time_range",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string",
          "enum": [
            "all",
            "today",
            "week",
            "month",
            "year"
          ],
          "default": "all"
        },
        "description": "Time range for filtering statistics and analytics data",
        "x-oapi-codegen-extra-tags": {
          "validate": "omitempty,oneof=all today week month year"
        }
      },
      "memberId": {
        "name": "memberId",
        "in": "path",
        "description": "Unique identifier of the organization member",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "required,mongodb"
        }
      },
      "roleId": {
        "name": "roleId",
        "in": "path",
        "description": "Unique identifier of the organization role",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "required,mongodb"
        }
      },
      "api-key-id": {
        "name": "keyId",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "The unique identifier of the API key to retrieve."
      },
      "template-id": {
        "name": "templateId",
        "in": "path",
        "description": "Unique identifier of the template",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "required,mongodb"
        }
      },
      "face-id": {
        "name": "faceId",
        "in": "path",
        "description": "Unique identifier of the face",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "required,mongodb"
        }
      },
      "asset-id": {
        "name": "assetId",
        "in": "path",
        "description": "Unique identifier of the asset",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "required,mongodb"
        }
      },
      "webhook-id": {
        "name": "webhookId",
        "in": "path",
        "description": "Unique identifier of the webhook",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "required,mongodb"
        }
      },
      "batch-id": {
        "name": "batchId",
        "in": "path",
        "description": "Unique identifier of the transaction batch",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "required,mongodb"
        }
      },
      "checkpoint-id": {
        "name": "checkpointId",
        "in": "path",
        "description": "Unique identifier of the transaction checkpoint",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-oapi-codegen-extra-tags": {
          "validate": "required,mongodb"
        }
      }
    },
    "schemas": {
      "DepositToken": {
        "type": "string",
        "enum": [
          "dual"
        ]
      },
      "network": {
        "type": "string",
        "enum": [
          "ethereum",
          "polygon",
          "binance-smart-chain",
          "avalanche",
          "fantom",
          "optimism",
          "arbitrum",
          "blockv"
        ],
        "x-oapi-codegen-extra-tags": {
          "bson": "network"
        }
      },
      "DepositStatus": {
        "type": "string",
        "enum": [
          "pending",
          "completed",
          "failed"
        ]
      },
      "deposit": {
        "type": "object",
        "required": [
          "id",
          "org_id",
          "sender",
          "amount",
          "token",
          "token_address",
          "network",
          "tx_hash",
          "block_num",
          "status",
          "when_created",
          "when_modified"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the deposit",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "org_id": {
            "type": "string",
            "description": "Organization identifier associated with the deposit",
            "x-oapi-codegen-extra-tags": {
              "bson": "org_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "sender": {
            "type": "string",
            "description": "Identifier of the user who initiated the deposit.",
            "x-oapi-codegen-extra-tags": {
              "bson": "sender"
            }
          },
          "amount": {
            "type": "string",
            "description": "Amount of the deposit.",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "amount"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "token": {
            "$ref": "#/components/schemas/DepositToken"
          },
          "token_address": {
            "type": "string",
            "description": "Token address for the deposit.",
            "x-oapi-codegen-extra-tags": {
              "bson": "token_address"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "network": {
            "$ref": "#/components/schemas/network"
          },
          "tx_hash": {
            "type": "string",
            "description": "Transaction hash for the deposit.",
            "x-oapi-codegen-extra-tags": {
              "bson": "tx_hash"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "block_num": {
            "type": "integer",
            "description": "Block number for the deposit.",
            "x-oapi-codegen-extra-tags": {
              "bson": "block_num"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "status": {
            "$ref": "#/components/schemas/DepositStatus"
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the deposit was created.",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of the last modification to the deposit.",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified"
            }
          }
        }
      },
      "ListDepositsOut": {
        "type": "object",
        "required": [
          "deposits"
        ],
        "properties": {
          "deposits": {
            "type": "array",
            "description": "Array of deposits.",
            "items": {
              "$ref": "#/components/schemas/deposit"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "error": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          },
          "details": {
            "type": "object"
          }
        }
      },
      "RequestAccessIn": {
        "type": "object",
        "required": [
          "full_name",
          "email",
          "project_description"
        ],
        "properties": {
          "full_name": {
            "type": "string",
            "description": "Full name of the user requesting access."
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Email address of the user requesting access."
          },
          "project_description": {
            "type": "string",
            "description": "Description of the project or reason for requesting access."
          },
          "additional_info": {
            "type": "string",
            "description": "Any additional information that may be relevant to the access request."
          }
        }
      },
      "asset": {
        "type": "object",
        "description": "Represents a file or media asset stored in the platform",
        "required": [
          "id",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the asset",
            "x-oapi-codegen-extra-tags": {
              "bson": "id,omitempty"
            }
          },
          "name": {
            "type": "string",
            "description": "Human-readable name of the asset",
            "x-oapi-codegen-extra-tags": {
              "bson": "name,omitempty"
            }
          },
          "type": {
            "type": "string",
            "description": "MIME type of the asset (e.g., image/jpeg, application/pdf)",
            "x-oapi-codegen-extra-tags": {
              "bson": "type,omitempty"
            }
          },
          "url": {
            "type": "string",
            "description": "Public URL where the asset can be accessed",
            "x-oapi-codegen-extra-tags": {
              "bson": "url,omitempty"
            }
          },
          "hash": {
            "type": "string",
            "description": "Cryptographic hash of the asset content for integrity verification",
            "x-oapi-codegen-extra-tags": {
              "bson": "hash,omitempty"
            }
          },
          "is_public": {
            "type": "boolean",
            "description": "Whether the asset is publicly accessible without authentication",
            "x-oapi-codegen-extra-tags": {
              "bson": "is_public,omitempty"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the asset was uploaded",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            }
          }
        }
      },
      "support-message": {
        "type": "object",
        "description": "Support message entity containing user inquiries and support requests",
        "required": [
          "id",
          "wallet_id",
          "title",
          "content",
          "when_modified",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the support message",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "wallet_id": {
            "type": "string",
            "description": "Identifier of the wallet/user who created the support message",
            "x-oapi-codegen-extra-tags": {
              "bson": "wallet_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "content": {
            "type": "string",
            "description": "Main content body of the support message",
            "x-oapi-codegen-extra-tags": {
              "bson": "content,omitempty"
            }
          },
          "assets": {
            "type": "array",
            "description": "Optional attachments or assets associated with the support message",
            "items": {
              "$ref": "#/components/schemas/asset"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "assets,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the support message was last modified",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified,omitempty"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the support message was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            }
          }
        }
      },
      "ListMessagesOut": {
        "type": "object",
        "required": [
          "messages"
        ],
        "properties": {
          "messages": {
            "type": "array",
            "description": "Array of support message objects.",
            "items": {
              "$ref": "#/components/schemas/support-message"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "member": {
        "type": "object",
        "required": [
          "id",
          "email",
          "role_name",
          "invite_status",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "json": "id,omitempty",
              "bson": "_id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "wallet_id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "wallet_id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "email": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "email,omitempty"
            }
          },
          "invite_status": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "invite_status,omitempty"
            },
            "enum": [
              "pending",
              "accepted",
              "declined"
            ],
            "x-go-type-skip-optional-pointer": true
          },
          "role_name": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "role_name,omitempty"
            }
          },
          "when_created": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            },
            "format": "date-time"
          },
          "when_modified": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified,omitempty"
            },
            "format": "date-time",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "crud": {
        "type": "object",
        "x-oapi-codegen-extra-tags": {
          "bson": "crud,omitempty"
        },
        "required": [
          "read",
          "create",
          "update",
          "delete"
        ],
        "properties": {
          "read": {
            "type": "boolean",
            "x-oapi-codegen-extra-tags": {
              "bson": "read,omitempty"
            }
          },
          "create": {
            "type": "boolean",
            "x-oapi-codegen-extra-tags": {
              "bson": "create,omitempty"
            }
          },
          "update": {
            "type": "boolean",
            "x-oapi-codegen-extra-tags": {
              "bson": "update,omitempty"
            }
          },
          "delete": {
            "type": "boolean",
            "x-oapi-codegen-extra-tags": {
              "bson": "delete,omitempty"
            }
          }
        }
      },
      "permission": {
        "type": "object",
        "required": [
          "resource",
          "crud"
        ],
        "properties": {
          "resource": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "resource,omitempty"
            },
            "enum": [
              "api-keys",
              "ebus.actions",
              "ebus.action-logs",
              "faces",
              "faces.pages",
              "faces.assistant",
              "indexer",
              "notifications.templates",
              "notifications.messages",
              "objects",
              "objects.state-changes",
              "organizations",
              "organizations.members",
              "organizations.roles",
              "sequencer.batches",
              "stats.wallets",
              "stats.objects",
              "stats.actions",
              "storage",
              "templates",
              "wallets",
              "webhooks"
            ]
          },
          "crud": {
            "$ref": "#/components/schemas/crud"
          }
        }
      },
      "Role": {
        "type": "object",
        "required": [
          "id",
          "name",
          "permissions",
          "when_created",
          "when_modified"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the role",
            "x-oapi-codegen-extra-tags": {
              "json": "id,omitempty",
              "bson": "_id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "name": {
            "type": "string",
            "description": "Human-readable name of the role",
            "x-oapi-codegen-extra-tags": {
              "bson": "name,omitempty"
            }
          },
          "description": {
            "type": "string",
            "description": "Optional detailed description of the role's purpose and scope",
            "x-oapi-codegen-extra-tags": {
              "bson": "description,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "permissions": {
            "type": "array",
            "description": "List of permissions assigned to this role",
            "x-oapi-codegen-extra-tags": {
              "bson": "permissions,omitempty"
            },
            "items": {
              "$ref": "#/components/schemas/permission"
            }
          },
          "when_created": {
            "type": "string",
            "description": "Timestamp when the role was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            },
            "format": "date-time"
          },
          "when_modified": {
            "type": "string",
            "description": "Timestamp when the role was last modified",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified,omitempty"
            },
            "format": "date-time"
          }
        }
      },
      "account": {
        "type": "object",
        "required": [
          "address",
          "public_key",
          "type"
        ],
        "properties": {
          "address": {
            "type": "string",
            "description": "The public address of the account."
          },
          "public_key": {
            "type": "string",
            "description": "The public key of the account."
          },
          "type": {
            "type": "string",
            "description": "The type of the account.",
            "enum": [
              "ED25519",
              "SECP256K1"
            ]
          }
        }
      },
      "organization": {
        "type": "object",
        "description": "Organization entity representing a business or group structure within the platform",
        "required": [
          "id",
          "name",
          "fqdn",
          "fqdn",
          "account",
          "when_created",
          "when_modified"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the organization",
            "x-oapi-codegen-extra-tags": {
              "json": "id,omitempty",
              "bson": "_id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "fqdn": {
            "type": "string",
            "description": "Fully Qualified Domain Name associated with the organization",
            "x-oapi-codegen-extra-tags": {
              "bson": "fqdn,omitempty"
            }
          },
          "name": {
            "type": "string",
            "description": "Human-readable name of the organization",
            "x-oapi-codegen-extra-tags": {
              "bson": "name,omitempty"
            }
          },
          "image": {
            "$ref": "#/components/schemas/asset",
            "description": "Organization's logo or profile image"
          },
          "members": {
            "type": "array",
            "description": "List of members belonging to this organization",
            "x-oapi-codegen-extra-tags": {
              "bson": "members,omitempty"
            },
            "items": {
              "$ref": "#/components/schemas/member"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "roles": {
            "type": "array",
            "description": "List of roles defined within this organization",
            "x-oapi-codegen-extra-tags": {
              "bson": "roles,omitempty"
            },
            "items": {
              "$ref": "#/components/schemas/Role"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "description": {
            "type": "string",
            "description": "Optional detailed description of the organization's purpose and activities",
            "x-oapi-codegen-extra-tags": {
              "bson": "description,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "account": {
            "$ref": "#/components/schemas/account",
            "description": "Blockchain account information associated with the organization",
            "x-oapi-codegen-extra-tags": {
              "bson": "account,omitempty"
            }
          },
          "when_created": {
            "type": "string",
            "description": "Timestamp when the organization was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            },
            "format": "date-time"
          },
          "when_modified": {
            "type": "string",
            "description": "Timestamp when the organization was last modified",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified,omitempty"
            },
            "format": "date-time"
          }
        }
      },
      "ListOrganizationsOut": {
        "type": "object",
        "required": [
          "organizations"
        ],
        "properties": {
          "next": {
            "type": "string",
            "description": "Pagination token for retrieving the next set of organizations",
            "x-go-type-skip-optional-pointer": true
          },
          "organizations": {
            "type": "array",
            "description": "List of organization entities returned in the response",
            "items": {
              "$ref": "#/components/schemas/organization"
            }
          }
        }
      },
      "organization-create": {
        "type": "object",
        "description": "Request payload for creating a new organization",
        "required": [
          "name",
          "fqdn"
        ],
        "properties": {
          "fqdn": {
            "type": "string",
            "description": "Fully Qualified Domain Name for the new organization",
            "x-oapi-codegen-extra-tags": {
              "validate": "required,max=255",
              "form": "fqdn"
            }
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for the new organization",
            "x-oapi-codegen-extra-tags": {
              "validate": "required,max=255",
              "form": "name"
            }
          },
          "image": {
            "$ref": "#/components/schemas/asset",
            "description": "Optional logo or profile image for the organization"
          },
          "description": {
            "type": "string",
            "description": "Optional detailed description of the organization's purpose and activities",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,max=255",
              "form": "description"
            }
          }
        }
      },
      "OrganizationSwitch": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the organization to switch to",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          }
        }
      },
      "OrganizationSwitchOut": {
        "type": "object",
        "required": [
          "access_token",
          "organization"
        ],
        "properties": {
          "access_token": {
            "type": "string",
            "description": "JSON Web Token (JWT) for authenticating subsequent API requests in the context of the switched organization"
          },
          "organization": {
            "$ref": "#/components/schemas/organization"
          }
        }
      },
      "language": {
        "type": "string",
        "enum": [
          "en",
          "es",
          "fr",
          "de",
          "it",
          "pt",
          "ru"
        ],
        "x-oapi-codegen-extra-tags": {
          "bson": "language,omitempty",
          "form": "language",
          "validate": "omitempty,oneof=en es fr de it pt ru"
        }
      },
      "wallet-create": {
        "type": "object",
        "properties": {
          "organization_id": {
            "type": "string",
            "description": "Organization ID to associate the wallet",
            "x-oapi-codegen-extra-tags": {
              "form": "organization_id"
            }
          },
          "nickname": {
            "type": "string",
            "description": "User's preferred display name or alias, limited to alphanumeric characters with maximum length of 255 characters",
            "x-oapi-codegen-extra-tags": {
              "form": "nickname",
              "validate": "omitempty,max=255,alphanum"
            }
          },
          "email": {
            "type": "string",
            "description": "User's email address for authentication and communications, must be a valid email format",
            "x-oapi-codegen-extra-tags": {
              "form": "email",
              "validate": "omitempty,email"
            }
          },
          "phone_number": {
            "type": "string",
            "description": "User's phone number in E.164 international format (e.g., +12125551234) for verification or notifications",
            "x-oapi-codegen-extra-tags": {
              "form": "phone_number",
              "validate": "omitempty,e164"
            }
          },
          "language": {
            "$ref": "#/components/schemas/language",
            "description": "User's preferred language setting for the application interface and communications"
          },
          "avatar": {
            "$ref": "#/components/schemas/asset",
            "description": "User's profile picture or avatar image asset"
          },
          "password": {
            "type": "string",
            "description": "User's account password, will be securely hashed and never returned in responses",
            "x-oapi-codegen-extra-tags": {
              "form": "password"
            }
          }
        }
      },
      "wallet": {
        "type": "object",
        "required": [
          "id",
          "fqdn",
          "language",
          "activated",
          "disabled",
          "account",
          "when_created",
          "when_modified"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the user/account"
          },
          "nickname": {
            "type": "string",
            "description": "User's preferred display name or alias",
            "x-go-type-skip-optional-pointer": true
          },
          "email": {
            "type": "string",
            "description": "User's email address for communications and account recovery",
            "x-go-type-skip-optional-pointer": true
          },
          "phone_number": {
            "type": "string",
            "description": "User's contact phone number, may be used for SMS verification or notifications",
            "x-go-type-skip-optional-pointer": true
          },
          "avatar": {
            "$ref": "#/components/schemas/asset"
          },
          "language": {
            "$ref": "#/components/schemas/language",
            "description": "User's preferred language for the interface and communications"
          },
          "fqdn": {
            "type": "string",
            "description": "Fully Qualified Domain Name associated with the user account"
          },
          "activated": {
            "type": "boolean",
            "description": "Indicates whether the user has completed the activation process"
          },
          "disabled": {
            "type": "boolean",
            "description": "Indicates whether the account has been disabled by an administrator or automated process"
          },
          "account": {
            "$ref": "#/components/schemas/account",
            "description": "Reference to the user's account wallet information"
          },
          "onboarding": {
            "type": "boolean",
            "description": "Indicates whether the user is in the onboarding process",
            "x-go-type-skip-optional-pointer": true
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the user account was initially created"
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the user account was last modified"
          }
        }
      },
      "LoginOut": {
        "type": "object",
        "required": [
          "wallet",
          "access_token",
          "refresh_token"
        ],
        "properties": {
          "wallet": {
            "$ref": "#/components/schemas/wallet",
            "description": "User's wallet information returned after successful authentication"
          },
          "access_token": {
            "type": "string",
            "description": "JWT token used for authenticating subsequent API requests"
          },
          "refresh_token": {
            "type": "string",
            "description": "Long-lived token used to obtain new access tokens without re-authentication"
          }
        }
      },
      "organization-update": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "form": "name",
              "bson": "name",
              "validate": "omitempty,alphanum,max=256"
            }
          },
          "description": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "form": "description",
              "bson": "description",
              "validate": "omitempty,max=256"
            }
          },
          "image": {
            "$ref": "#/components/schemas/asset"
          }
        }
      },
      "balance-out": {
        "type": "object",
        "required": [
          "amount"
        ],
        "properties": {
          "amount": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "balance,omitempty"
            },
            "description": "The current balance of the organization in the smallest currency unit (e.g., cents)"
          }
        }
      },
      "balance-history-out": {
        "type": "object",
        "required": [
          "when",
          "amount"
        ],
        "properties": {
          "when": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp when the balance change occurred.",
            "x-oapi-codegen-extra-tags": {
              "bson": "when"
            }
          },
          "amount": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "balance,omitempty"
            },
            "description": "The current balance of the organization in the smallest currency unit (e.g., cents)"
          }
        }
      },
      "BalanceHistoryOut": {
        "required": [
          "history"
        ],
        "properties": {
          "history": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/balance-history-out"
            }
          }
        }
      },
      "confirm-invite-out": {
        "type": "object",
        "required": [
          "access_token",
          "refresh_token"
        ],
        "properties": {
          "access_token": {
            "type": "string"
          },
          "refresh_token": {
            "type": "string"
          }
        }
      },
      "ListMembersOut": {
        "type": "object",
        "required": [
          "members",
          "count"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "Total number of members in the organization"
          },
          "next": {
            "type": "string",
            "description": "Pagination token for retrieving the next set of members",
            "x-oapi-codegen-extra-tags": {
              "bson": "next,omitempty"
            }
          },
          "members": {
            "type": "array",
            "description": "List of organization members returned in the response",
            "x-oapi-codegen-extra-tags": {
              "bson": "members,omitempty"
            },
            "items": {
              "$ref": "#/components/schemas/member"
            }
          }
        }
      },
      "member-create": {
        "type": "object",
        "required": [
          "email",
          "role_name"
        ],
        "properties": {
          "email": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "email,omitempty",
              "validate": "required,email"
            }
          },
          "role_name": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "role_name,omitempty",
              "validate": "required,max=255"
            }
          }
        }
      },
      "member-update": {
        "type": "object",
        "required": [
          "role_name"
        ],
        "properties": {
          "role_name": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "role_name,omitempty",
              "validate": "required"
            }
          }
        }
      },
      "ListRolesOut": {
        "type": "object",
        "required": [
          "roles"
        ],
        "properties": {
          "next": {
            "type": "string",
            "description": "Pagination token for retrieving the next set of roles",
            "x-go-type-skip-optional-pointer": true
          },
          "roles": {
            "type": "array",
            "description": "List of role entities returned in the response",
            "items": {
              "$ref": "#/components/schemas/Role"
            }
          }
        }
      },
      "RoleCreate": {
        "type": "object",
        "required": [
          "name",
          "permissions"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Name for the new role",
            "x-oapi-codegen-extra-tags": {
              "bson": "name,omitempty",
              "validate": "required"
            }
          },
          "description": {
            "type": "string",
            "description": "Optional description explaining the purpose of the role",
            "x-oapi-codegen-extra-tags": {
              "bson": "description,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "permissions": {
            "type": "array",
            "description": "List of permissions to be assigned to the role",
            "x-oapi-codegen-extra-tags": {
              "bson": "permissions,omitempty"
            },
            "items": {
              "$ref": "#/components/schemas/permission"
            }
          }
        }
      },
      "RoleUpdate": {
        "type": "object",
        "required": [
          "permissions"
        ],
        "properties": {
          "description": {
            "type": "string",
            "description": "Updated description for the role",
            "x-oapi-codegen-extra-tags": {
              "bson": "description,omitempty"
            }
          },
          "permissions": {
            "type": "array",
            "description": "Updated list of permissions for the role",
            "items": {
              "$ref": "#/components/schemas/permission"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "permissions,omitempty"
            }
          }
        }
      },
      "login-in": {
        "type": "object",
        "properties": {
          "organization_id": {
            "type": "string",
            "description": "Optional organization ID for scoping the login request, if applicable"
          },
          "email": {
            "type": "string",
            "description": "User's email address for authentication, must be a valid email format",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,email"
            }
          },
          "phone_number": {
            "type": "string",
            "format": "phone",
            "description": "User's phone number in E.164 international format (e.g., +12125551234) as an alternative authentication identifier",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,e164"
            }
          },
          "password": {
            "type": "string",
            "format": "password",
            "description": "User's account password for standard authentication",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty"
            }
          },
          "otp": {
            "type": "string",
            "description": "One-time password or verification code for multi-factor authentication or passwordless login",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty"
            }
          }
        }
      },
      "RequestOTPCodeIn": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address to receive the one-time password",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,email",
              "form": "email",
              "query": "email"
            }
          },
          "phone_number": {
            "type": "string",
            "format": "phone",
            "description": "Phone number in E.164 format to receive the one-time password",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,e164",
              "form": "phone_number",
              "query": "phone_number"
            }
          },
          "org_id": {
            "type": "string",
            "description": "Organization ID is requested (if applicable)",
            "x-oapi-codegen-extra-tags": {
              "form": "org_id",
              "query": "org_id"
            }
          }
        }
      },
      "VerifyIn": {
        "type": "object",
        "required": [
          "code"
        ],
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address associated with the account being verified",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,email"
            }
          },
          "phone_number": {
            "type": "string",
            "format": "phone",
            "description": "Phone number in E.164 format associated with the account being verified",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,e164"
            }
          },
          "code": {
            "type": "string",
            "description": "Verification code sent to the user's email or phone",
            "x-oapi-codegen-extra-tags": {
              "validate": "required,max=64"
            }
          }
        }
      },
      "ResetPasswordIn": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address associated with the account for password reset",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,email",
              "form": "email"
            }
          },
          "phone_number": {
            "type": "string",
            "format": "phone",
            "description": "Phone number in E.164 format associated with the account for password reset",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,e164",
              "form": "phone_number"
            }
          },
          "org_id": {
            "type": "string",
            "description": "Organization ID is requested (if applicable)",
            "x-oapi-codegen-extra-tags": {
              "form": "org_id"
            }
          }
        }
      },
      "SetNewPasswordIn": {
        "type": "object",
        "required": [
          "token",
          "new_password"
        ],
        "properties": {
          "token": {
            "type": "string",
            "description": "Security token received via email or SMS that authorizes the password change",
            "x-oapi-codegen-extra-tags": {
              "validate": "required,max=64"
            }
          },
          "new_password": {
            "type": "string",
            "description": "New password for the user account",
            "x-oapi-codegen-extra-tags": {
              "validate": "required,max=255"
            }
          }
        }
      },
      "ResetCodeIn": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address to receive password reset code",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,email"
            }
          },
          "phone_number": {
            "type": "string",
            "format": "phone",
            "description": "Phone number in E.164 format to receive password reset code",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,e164"
            }
          },
          "org_id": {
            "type": "string",
            "description": "Organization ID is requested (if applicable)",
            "x-oapi-codegen-extra-tags": {
              "form": "org_id"
            }
          }
        }
      },
      "RefreshTokenOut": {
        "type": "object",
        "required": [
          "access_token"
        ],
        "properties": {
          "access_token": {
            "type": "string",
            "description": "New JWT access token generated from a valid refresh token"
          }
        }
      },
      "wallet-update": {
        "type": "object",
        "properties": {
          "nickname": {
            "type": "string",
            "description": "User's preferred display name or alias",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,alphanum,max=256",
              "form": "nickname"
            }
          },
          "email": {
            "type": "string",
            "description": "User's email address for authentication and communications",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,email",
              "form": "email"
            }
          },
          "phone_number": {
            "type": "string",
            "description": "User's phone number in E.164 international format for verification or notifications",
            "x-oapi-codegen-extra-tags": {
              "validate": "omitempty,e164",
              "form": "phone_number"
            }
          },
          "language": {
            "$ref": "#/components/schemas/language",
            "description": "User's preferred language setting for the interface and communications"
          },
          "password": {
            "type": "string",
            "format": "password",
            "description": "User's account password (stored securely and never returned in responses)",
            "x-oapi-codegen-extra-tags": {
              "form": "password"
            }
          },
          "avatar": {
            "$ref": "#/components/schemas/asset"
          },
          "onboarding": {
            "type": "boolean",
            "description": "Indicates whether the user is in the onboarding process"
          }
        }
      },
      "api-key": {
        "type": "object",
        "description": "Represents an API key.",
        "required": [
          "id",
          "wallet_id",
          "org_id",
          "fqdn",
          "name",
          "key",
          "expires_at",
          "permissions",
          "when_created",
          "when_modified"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the API key.",
            "x-oapi-codegen-extra-tags": {
              "json": "id,omitempty",
              "bson": "_id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "name": {
            "type": "string",
            "description": "Descriptive name of the API key.",
            "x-oapi-codegen-extra-tags": {
              "json": "name,omitempty",
              "bson": "name,omitempty"
            }
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "description": "Expiration timestamp of the API key, if applicable.",
            "x-oapi-codegen-extra-tags": {
              "json": "expires_at,omitempty",
              "bson": "expires_at,omitempty"
            }
          },
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/permission"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "permissions"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the API key was created.",
            "x-oapi-codegen-extra-tags": {
              "json": "when_created,omitempty",
              "bson": "when_created,omitempty"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the API key was last modified.",
            "x-oapi-codegen-extra-tags": {
              "json": "when_modified,omitempty",
              "bson": "when_modified,omitempty"
            }
          }
        }
      },
      "ListApiKeysOut": {
        "type": "object",
        "required": [
          "keys"
        ],
        "properties": {
          "keys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/api-key"
            },
            "description": "List of API keys."
          },
          "next": {
            "type": "string",
            "description": "Pagination token to retrieve the next page of keys.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "ApiKeyCreate": {
        "type": "object",
        "required": [
          "name",
          "permissions"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Descriptive name of the API key.",
            "x-oapi-codegen-extra-tags": {
              "validate": "required,max=256"
            }
          },
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/permission"
            },
            "x-oapi-codegen-extra-tags": {
              "validate": "required,min=1"
            }
          }
        }
      },
      "ApiKeyCreateOut": {
        "type": "object",
        "required": [
          "id",
          "secret"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the API key."
          },
          "secret": {
            "type": "string",
            "description": "The secret key value."
          }
        }
      },
      "metadata": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "name,omitempty"
            }
          },
          "description": {
            "type": "string",
            "description": "Description of the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "description,omitempty"
            }
          },
          "category": {
            "type": "string",
            "description": "Category of the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "category,omitempty"
            }
          },
          "image": {
            "$ref": "#/components/schemas/asset"
          },
          "edition": {
            "type": "integer",
            "description": "Edition number of the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "edition,omitempty"
            }
          }
        },
        "x-oapi-codegen-extra-tags": {
          "bson": "metadata,omitempty"
        }
      },
      "template-object": {
        "type": "object",
        "required": [
          "metadata"
        ],
        "properties": {
          "custom": {
            "type": "object",
            "description": "Custom properties of the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "custom,omitempty"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/metadata"
          },
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/asset"
            },
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "assets,omitempty"
            }
          }
        }
      },
      "factory": {
        "type": "object",
        "required": [
          "max_supply",
          "minted_count"
        ],
        "properties": {
          "max_supply": {
            "type": "integer",
            "x-oapi-codegen-extra-tags": {
              "bson": "max_supply"
            }
          },
          "minted_count": {
            "type": "integer",
            "default": 0,
            "x-oapi-codegen-extra-tags": {
              "bson": "minted_count"
            }
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "x-oapi-codegen-extra-tags": {
              "bson": "start_time"
            }
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "x-oapi-codegen-extra-tags": {
              "bson": "end_time"
            }
          },
          "whitelist": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "whitelist"
            }
          }
        },
        "x-oapi-codegen-extra-tags": {
          "bson": "factory"
        }
      },
      "public-access": {
        "type": "object",
        "description": "Public access configuration for the template",
        "x-oapi-codegen-extra-tags": {
          "bson": "public_access"
        },
        "properties": {
          "custom": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "custom"
            },
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "action-access": {
        "type": "object",
        "description": "Access control for the action",
        "x-oapi-codegen-extra-tags": {
          "bson": "access"
        },
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of access",
            "enum": [
              "public",
              "private",
              "whitelist",
              "token"
            ],
            "x-oapi-codegen-extra-tags": {
              "bson": "type",
              "validate": "required"
            }
          },
          "tokens": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int64"
            },
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "tokens"
            }
          }
        }
      },
      "validators": {
        "type": "object",
        "description": "Access validator",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of validator",
            "enum": [
              "http"
            ],
            "x-oapi-codegen-extra-tags": {
              "bson": "type",
              "validate": "required"
            }
          },
          "url": {
            "type": "string",
            "description": "URL of the validator",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "url"
            }
          }
        }
      },
      "template-action": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the action",
            "enum": [
              "mint",
              "burn",
              "transfer",
              "drop",
              "pickup",
              "update",
              "redeem",
              "bridgeNFT",
              "connect",
              "remote"
            ],
            "x-oapi-codegen-extra-tags": {
              "bson": "name",
              "validate": "required"
            }
          },
          "alias": {
            "type": "string",
            "description": "Optional alias for the action",
            "x-oapi-codegen-extra-tags": {
              "bson": "alias"
            }
          },
          "access": {
            "$ref": "#/components/schemas/action-access"
          },
          "validators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/validators"
            },
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "validators"
            }
          },
          "config": {
            "type": "object",
            "description": "Configuration for the action",
            "x-oapi-codegen-extra-tags": {
              "bson": "config"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "url": {
            "type": "string",
            "description": "URL for the action, if applicable",
            "x-oapi-codegen-extra-tags": {
              "bson": "url"
            },
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "Actions": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/template-action"
        },
        "description": "Array of actions that can be performed on the template.",
        "x-oapi-codegen-extra-tags": {
          "bson": "actions"
        }
      },
      "template": {
        "type": "object",
        "description": "Template entity defining the structure and behavior for creating smart objects",
        "required": [
          "id",
          "name",
          "fqdn",
          "object",
          "actions",
          "when_created",
          "when_modified"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the template",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "name": {
            "type": "string",
            "description": "Name of the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "name",
              "validate": "required,max=255"
            }
          },
          "fqdn": {
            "type": "string",
            "description": "Fully Qualified Domain Name (FQDN) of the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "fqdn"
            }
          },
          "object": {
            "$ref": "#/components/schemas/template-object",
            "description": "Reference to the object schema",
            "x-oapi-codegen-extra-tags": {
              "bson": "object"
            }
          },
          "factory": {
            "$ref": "#/components/schemas/factory",
            "description": "Reference to the factory schema",
            "x-oapi-codegen-extra-tags": {
              "bson": "factory"
            }
          },
          "public_access": {
            "$ref": "#/components/schemas/public-access"
          },
          "actions": {
            "$ref": "#/components/schemas/Actions",
            "description": "Available actions that can be performed on objects created from this template"
          },
          "face_id": {
            "type": "string",
            "description": "Face identifier for the visual representation of objects created from this template",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "face_id"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the object was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the object was last modified",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified"
            }
          }
        }
      },
      "ListTemplatesOut": {
        "type": "object",
        "required": [
          "templates"
        ],
        "properties": {
          "templates": {
            "type": "array",
            "description": "Array of template objects.",
            "items": {
              "$ref": "#/components/schemas/template"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "template-create": {
        "type": "object",
        "required": [
          "name",
          "object",
          "actions"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the object",
            "x-oapi-codegen-extra-tags": {
              "validate": "required,max=255"
            }
          },
          "object": {
            "$ref": "#/components/schemas/template-object",
            "description": "Reference to the object schema"
          },
          "factory": {
            "$ref": "#/components/schemas/factory",
            "description": "Reference to the factory schema"
          },
          "actions": {
            "$ref": "#/components/schemas/Actions"
          },
          "public_access": {
            "$ref": "#/components/schemas/public-access"
          },
          "face_id": {
            "type": "string",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "face_id"
            }
          }
        }
      },
      "template-object-update": {
        "type": "object",
        "properties": {
          "custom": {
            "type": "object",
            "description": "Custom properties of the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "custom,omitempty"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/metadata"
          },
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/asset"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "assets,omitempty"
            }
          }
        }
      },
      "factory-update": {
        "type": "object",
        "properties": {
          "max_supply": {
            "type": "integer",
            "x-oapi-codegen-extra-tags": {
              "bson": "max_supply,omitempty"
            }
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "x-oapi-codegen-extra-tags": {
              "bson": "start_time,omitempty"
            }
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "x-oapi-codegen-extra-tags": {
              "bson": "end_time,omitempty"
            }
          },
          "whitelist": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "whitelist,omitempty"
            }
          }
        },
        "x-oapi-codegen-extra-tags": {
          "bson": "factory,omitempty"
        }
      },
      "template-update": {
        "type": "object",
        "properties": {
          "object": {
            "$ref": "#/components/schemas/template-object-update"
          },
          "factory": {
            "$ref": "#/components/schemas/factory-update"
          },
          "actions": {
            "$ref": "#/components/schemas/Actions"
          },
          "public_access": {
            "$ref": "#/components/schemas/public-access"
          },
          "face_id": {
            "type": "string",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "face_id"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the object was last modified",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified"
            }
          }
        }
      },
      "chain": {
        "type": "object",
        "x-oapi-codegen-extra-tags": {
          "bson": "chain"
        },
        "required": [
          "ownership_claimed"
        ],
        "description": "Details of the blockchain chain.",
        "properties": {
          "ownership_claimed": {
            "type": "boolean",
            "description": "Indicates whether ownership has been claimed on the chain."
          }
        }
      },
      "location": {
        "type": "object",
        "description": "Represents a geographical location with coordinates and geohash",
        "x-oapi-codegen-extra-tags": {
          "bson": "location"
        },
        "required": [
          "latitude",
          "longitude",
          "geo_hash"
        ],
        "properties": {
          "latitude": {
            "type": "number",
            "format": "double",
            "description": "Latitude coordinate in decimal degrees",
            "x-oapi-codegen-extra-tags": {
              "bson": "latitude"
            }
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "description": "Longitude coordinate in decimal degrees",
            "x-oapi-codegen-extra-tags": {
              "bson": "longitude"
            }
          },
          "geo_hash": {
            "type": "string",
            "description": "Geohash string for efficient location-based queries",
            "x-oapi-codegen-extra-tags": {
              "bson": "geo_hash"
            }
          }
        }
      },
      "smart-object": {
        "type": "object",
        "description": "Smart object entity representing a blockchain-based digital asset with metadata and state management",
        "required": [
          "id",
          "org_id",
          "template_id",
          "metadata",
          "owner",
          "state_hash",
          "content_hash",
          "integrity_hash",
          "prev_integrity_hash",
          "nonce",
          "version",
          "when_modified",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the smart object",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "org_id": {
            "type": "string",
            "description": "Organization identifier that owns this smart object",
            "x-oapi-codegen-extra-tags": {
              "bson": "org_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "chain": {
            "$ref": "#/components/schemas/chain",
            "description": "Reference to the chain information",
            "x-oapi-codegen-extra-tags": {
              "bson": "chain"
            }
          },
          "custom": {
            "type": "object",
            "description": "Custom properties of the object",
            "x-go-type": "map[string]interface{}",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "custom"
            }
          },
          "custom_hash": {
            "type": "string",
            "description": "Custom hash for the object",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "custom_hash,omitempty"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/metadata",
            "description": "Metadata information for the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "metadata"
            }
          },
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/asset"
            },
            "description": "List of assets associated with the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "assets"
            }
          },
          "owner": {
            "type": "string",
            "description": "ID of the owner of the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "owner"
            },
            "x-go-type": "types.Address",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "template_id": {
            "type": "string",
            "description": "Template identifier that defines the structure and behavior of this smart object",
            "x-oapi-codegen-extra-tags": {
              "bson": "template_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "location": {
            "$ref": "#/components/schemas/location",
            "description": "Location information for the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "location"
            }
          },
          "nonce": {
            "type": "integer",
            "format": "uint64",
            "description": "Nonce value for the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "nonce"
            }
          },
          "version": {
            "type": "integer",
            "format": "uint32",
            "description": "Version of the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "version"
            }
          },
          "state_hash": {
            "type": "string",
            "description": "state root of the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "state_hash"
            },
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "content_hash": {
            "type": "string",
            "description": "object content hash - metadata, assets, location, custom",
            "x-oapi-codegen-extra-tags": {
              "bson": "content_hash"
            },
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "integrity_hash": {
            "type": "string",
            "description": "Hash of the integrity data",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "integrity_hash"
            },
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "prev_integrity_hash": {
            "type": "string",
            "description": "Hash of the previous integrity hash",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_integrity_root"
            },
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the object was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of the last modification",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified"
            }
          }
        }
      },
      "object-faces": {
        "type": "object",
        "required": [
          "template_id",
          "face"
        ],
        "properties": {
          "template_id": {
            "type": "string",
            "description": "The ID of the template"
          },
          "face": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The ID of the face"
              },
              "url": {
                "type": "string",
                "description": "The URL of the face image"
              },
              "config": {
                "type": "object",
                "description": "Additional data associated with the face"
              },
              "content": {
                "type": "string",
                "description": "The content of the face"
              }
            }
          }
        }
      },
      "object-actions": {
        "type": "object",
        "required": [
          "template_id",
          "actions"
        ],
        "properties": {
          "template_id": {
            "type": "string",
            "description": "The ID of the template"
          },
          "actions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of actions associated with the template"
          }
        }
      },
      "ListSmartObjectsOut": {
        "type": "object",
        "required": [
          "objects"
        ],
        "properties": {
          "objects": {
            "type": "array",
            "description": "Array of objects.",
            "items": {
              "$ref": "#/components/schemas/smart-object"
            }
          },
          "faces": {
            "type": "array",
            "description": "Array of object faces.",
            "items": {
              "$ref": "#/components/schemas/object-faces"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "actions": {
            "type": "array",
            "description": "Array of object actions.",
            "items": {
              "$ref": "#/components/schemas/object-actions"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "ChangeType": {
        "type": "string",
        "enum": [
          "create",
          "update",
          "delete"
        ],
        "x-oapi-codegen-extra-tags": {
          "bson": "change_type"
        }
      },
      "state-change": {
        "type": "object",
        "required": [
          "id",
          "action_id",
          "action_name",
          "object_id",
          "change_type",
          "prev_content_hash",
          "next_content_hash",
          "prev_owner",
          "current_owner",
          "prev_state_hash",
          "next_state_hash",
          "prev_integrity_hash",
          "next_integrity_hash",
          "prev_nonce",
          "next_nonce",
          "merkle_proof",
          "batch_id",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "wallet_id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "wallet_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "object_id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "object_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "action_id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "action_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "action_name": {
            "type": "string",
            "description": "The name of the action",
            "x-oapi-codegen-extra-tags": {
              "bson": "action_name"
            }
          },
          "change_type": {
            "$ref": "#/components/schemas/ChangeType"
          },
          "prev_state_hash": {
            "type": "string",
            "description": "The previous state",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_state_hash"
            }
          },
          "next_state_hash": {
            "type": "string",
            "description": "The new state",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "next_state_hash"
            }
          },
          "prev_integrity_hash": {
            "type": "string",
            "description": "The previous integrity hash",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_integrity_hash"
            }
          },
          "next_integrity_hash": {
            "type": "string",
            "description": "The new integrity hash",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "next_integrity_hash"
            }
          },
          "prev_nonce": {
            "type": "integer",
            "format": "uint64",
            "description": "The previous nonce",
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_nonce"
            }
          },
          "next_nonce": {
            "type": "integer",
            "format": "uint64",
            "description": "The next nonce",
            "x-oapi-codegen-extra-tags": {
              "bson": "next_nonce"
            }
          },
          "prev_content_hash": {
            "type": "string",
            "description": "previous object content hash - metadata, assets, location, custom",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_content_hash"
            }
          },
          "next_content_hash": {
            "type": "string",
            "description": "object content hash - metadata, assets, location, custom",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "next_content_hash"
            }
          },
          "prev_owner": {
            "type": "string",
            "description": "The previous owner ID",
            "x-go-type": "types.Address",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_owner"
            }
          },
          "current_owner": {
            "type": "string",
            "description": "The new owner ID",
            "x-go-type": "types.Address",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "current_owner"
            }
          },
          "merkle_proof": {
            "type": "array",
            "description": "Merkle proof for the object's data integrity",
            "items": {
              "type": "string",
              "x-go-type": "types.Hash",
              "x-go-type-import": {
                "path": "github.com/vlabsio/smarttoken/pkg/types"
              }
            },
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "merkle_proof"
            }
          },
          "batch_id": {
            "type": "string",
            "description": "ID of the batch this state change is part of",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "batch_id"
            }
          },
          "l1_tx_hash": {
            "type": "string",
            "description": "L1 transaction hash associated with this state change",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "l1_tx_hash"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "The time the change was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          }
        }
      },
      "ListStateChangesOut": {
        "type": "object",
        "required": [
          "state_changes"
        ],
        "properties": {
          "state_changes": {
            "type": "array",
            "description": "Array of state changes.",
            "items": {
              "$ref": "#/components/schemas/state-change"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "face": {
        "type": "object",
        "description": "Face entity representing a visual interface or template for smart objects",
        "required": [
          "id",
          "name",
          "when_created",
          "when_modified"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the face",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "name": {
            "type": "string",
            "description": "Name of the face.",
            "x-oapi-codegen-extra-tags": {
              "bson": "name",
              "validate": "required,max=255"
            }
          },
          "url": {
            "type": "string",
            "description": "URL of the face, typically pointing to an image or resource.",
            "x-oapi-codegen-extra-tags": {
              "bson": "url,omitempty"
            }
          },
          "content": {
            "type": "string",
            "description": "Content of the face.",
            "x-oapi-codegen-extra-tags": {
              "bson": "content,omitempty"
            }
          },
          "config": {
            "type": "object",
            "description": "Optional configuration data for customizing the face.",
            "additionalProperties": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "config"
            }
          },
          "assets": {
            "type": "array",
            "description": "List of resources required or utilized by the face.",
            "items": {
              "$ref": "#/components/schemas/asset"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "assets"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the face was created.",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of the last modification to the face.",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified"
            }
          }
        }
      },
      "ListFacesOut": {
        "type": "object",
        "required": [
          "faces"
        ],
        "properties": {
          "faces": {
            "type": "array",
            "description": "Array of face objects.",
            "items": {
              "$ref": "#/components/schemas/face"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "face-create": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the face.",
            "x-oapi-codegen-extra-tags": {
              "bson": "name",
              "validate": "required,max=255"
            }
          },
          "url": {
            "type": "string",
            "description": "URL of the face, typically pointing to an image or resource.",
            "x-oapi-codegen-extra-tags": {
              "bson": "url,omitempty"
            }
          },
          "content": {
            "type": "string",
            "description": "Content of the face.",
            "x-oapi-codegen-extra-tags": {
              "bson": "content,omitempty"
            }
          },
          "config": {
            "type": "object",
            "description": "Optional configuration data for customizing the face.",
            "additionalProperties": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "config"
            }
          },
          "assets": {
            "type": "array",
            "description": "List of resources required or utilized by the face.",
            "items": {
              "$ref": "#/components/schemas/asset"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "assets"
            },
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "face-update": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the face.",
            "x-oapi-codegen-extra-tags": {
              "bson": "name,omitempty",
              "validate": "omitempty,max=255"
            }
          },
          "url": {
            "type": "string",
            "description": "URL of the face, typically pointing to an image or resource.",
            "x-oapi-codegen-extra-tags": {
              "bson": "url,omitempty"
            }
          },
          "content": {
            "type": "string",
            "description": "Content of the face.",
            "x-oapi-codegen-extra-tags": {
              "bson": "content,omitempty"
            }
          },
          "config": {
            "type": "object",
            "description": "Optional configuration data for customizing the face.",
            "additionalProperties": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "config,omitempty"
            }
          },
          "assets": {
            "type": "array",
            "description": "List of resources required or utilized by the face.",
            "items": {
              "$ref": "#/components/schemas/asset"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "assets,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of the last modification to the face.",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified,omitempty"
            }
          }
        }
      },
      "provider-type": {
        "type": "string",
        "enum": [
          "ipfs",
          "s3",
          "gcs"
        ],
        "x-oapi-codegen-extra-tags": {
          "bson": "provider,omitempty",
          "form": "provider"
        }
      },
      "folder-type": {
        "type": "string",
        "enum": [
          "avatars",
          "assets",
          "support"
        ],
        "x-oapi-codegen-extra-tags": {
          "form": "folder",
          "bson": "folder"
        }
      },
      "storage-asset": {
        "type": "object",
        "required": [
          "id",
          "name",
          "tag",
          "provider",
          "folder",
          "org_id",
          "wallet_id",
          "url",
          "path",
          "size",
          "type",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the API key.",
            "x-oapi-codegen-extra-tags": {
              "json": "id,omitempty",
              "bson": "_id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "wallet_id": {
            "type": "string",
            "description": "Unique identifier for the API key.",
            "x-oapi-codegen-extra-tags": {
              "bson": "wallet_id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "name": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "name,omitempty"
            }
          },
          "tag": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "tag,omitempty"
            }
          },
          "url": {
            "type": "string",
            "format": "url",
            "x-oapi-codegen-extra-tags": {
              "bson": "url,omitempty"
            }
          },
          "path": {
            "type": "string",
            "format": "url",
            "x-oapi-codegen-extra-tags": {
              "bson": "path,omitempty"
            }
          },
          "size": {
            "type": "integer",
            "x-oapi-codegen-extra-tags": {
              "bson": "size,omitempty"
            }
          },
          "provider": {
            "$ref": "#/components/schemas/provider-type"
          },
          "folder": {
            "$ref": "#/components/schemas/folder-type"
          },
          "is_public": {
            "type": "boolean",
            "x-oapi-codegen-extra-tags": {
              "bson": "is_public,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "type": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "type,omitempty"
            }
          },
          "hash": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "hash,omitempty"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            }
          }
        }
      },
      "ListAssetsOut": {
        "type": "object",
        "required": [
          "assets"
        ],
        "properties": {
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/storage-asset"
            }
          },
          "next": {
            "type": "string",
            "description": "The next page token. If not present, there are no more pages.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "storage-asset-create": {
        "type": "object",
        "required": [
          "provider",
          "folder",
          "key",
          "file"
        ],
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/provider-type"
          },
          "folder": {
            "$ref": "#/components/schemas/folder-type"
          },
          "key": {
            "type": "string",
            "description": "The key of the asset in the storage provider.",
            "x-oapi-codegen-extra-tags": {
              "form": "key"
            }
          },
          "is_public": {
            "type": "boolean",
            "description": "Whether the asset is public or not.",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "form": "is_public"
            }
          },
          "tag": {
            "type": "string",
            "description": "The tag of the asset.",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "form": "tag"
            }
          },
          "file": {
            "type": "string",
            "format": "binary",
            "x-oapi-codegen-extra-tags": {
              "form": "file"
            }
          }
        }
      },
      "AssetURL": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string"
          }
        }
      },
      "mint": {
        "type": "object",
        "required": [
          "template_id",
          "num"
        ],
        "properties": {
          "template_id": {
            "type": "string",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "validate": "required",
              "bson": "template_id"
            }
          },
          "num": {
            "type": "integer",
            "format": "uint32",
            "x-oapi-codegen-extra-tags": {
              "validate": "required,min=1"
            }
          },
          "to": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "to"
            }
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "x-go-type": "map[string]any",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "data"
            }
          }
        }
      },
      "transfer": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "to": {
            "type": "string",
            "x-go-type-skip-optional-pointer": true
          },
          "secret": {
            "type": "string",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "drop": {
        "type": "object",
        "required": [
          "id",
          "latitude",
          "longitude"
        ],
        "description": "Represents a drop location for an action in the E-Bus system.",
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "description": "Latitude of the drop location.",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "description": "Longitude of the drop location.",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          }
        }
      },
      "pickup": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          }
        }
      },
      "redeem": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "template_id": {
            "type": "string",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "template_id"
            }
          }
        }
      },
      "burn": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          }
        }
      },
      "update": {
        "type": "object",
        "required": [
          "id",
          "custom"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "x-go-type": "map[string]any",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "data"
            }
          },
          "secret": {
            "type": "string",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "secret"
            }
          }
        }
      },
      "claim-ownership": {
        "type": "object",
        "required": [
          "id",
          "chain"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required",
              "bson": "id"
            }
          }
        }
      },
      "connect": {
        "type": "object",
        "required": [
          "id",
          "to"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "to": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          }
        }
      },
      "disconnect": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          }
        }
      },
      "remote": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "x-go-type": "map[string]any",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "data"
            }
          }
        }
      },
      "permit": {
        "type": "object",
        "required": [
          "id",
          "scope"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "scope": {
            "type": "string",
            "enum": [
              "transfer",
              "update"
            ],
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "secret": {
            "type": "string",
            "x-go-type-skip-optional-pointer": true
          },
          "nonce": {
            "type": "integer",
            "format": "uint64",
            "x-go-type-skip-optional-pointer": true
          },
          "recipient": {
            "type": "string",
            "x-go-type-skip-optional-pointer": true
          },
          "deadline": {
            "type": "string",
            "format": "date-time",
            "x-go-type-skip-optional-pointer": true
          },
          "signature": {
            "type": "string",
            "x-go-type-skip-optional-pointer": true
          },
          "reuse": {
            "type": "boolean",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "actions-request": {
        "type": "object",
        "properties": {
          "alias": {
            "type": "string"
          },
          "mint": {
            "$ref": "#/components/schemas/mint"
          },
          "transfer": {
            "$ref": "#/components/schemas/transfer"
          },
          "drop": {
            "$ref": "#/components/schemas/drop"
          },
          "pickup": {
            "$ref": "#/components/schemas/pickup"
          },
          "redeem": {
            "$ref": "#/components/schemas/redeem"
          },
          "burn": {
            "$ref": "#/components/schemas/burn"
          },
          "update": {
            "$ref": "#/components/schemas/update"
          },
          "claim_ownership": {
            "$ref": "#/components/schemas/claim-ownership"
          },
          "connect": {
            "$ref": "#/components/schemas/connect"
          },
          "disconnect": {
            "$ref": "#/components/schemas/disconnect"
          },
          "remote": {
            "$ref": "#/components/schemas/remote"
          },
          "permit": {
            "$ref": "#/components/schemas/permit"
          }
        }
      },
      "execute-request": {
        "type": "object",
        "description": "Request payload for executing blockchain actions through the event bus system",
        "properties": {
          "action": {
            "$ref": "#/components/schemas/actions-request",
            "description": "The blockchain action to be executed"
          },
          "nonce": {
            "type": "integer",
            "format": "uint64",
            "description": "A unique number to prevent replay attacks for the action execution",
            "x-go-type-skip-optional-pointer": true
          },
          "signature": {
            "type": "string",
            "description": "Cryptographic signature of the request for authentication and integrity verification",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "step-out": {
        "type": "object",
        "required": [
          "action"
        ],
        "properties": {
          "action": {
            "type": "string"
          },
          "error": {
            "type": "string",
            "x-go-type-skip-optional-pointer": true
          },
          "output": {
            "type": "object",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "execute-result": {
        "type": "object",
        "description": "Result of executing a blockchain action, containing the action ID and execution steps",
        "required": [
          "action_id",
          "steps"
        ],
        "properties": {
          "action_id": {
            "type": "string",
            "description": "Unique identifier of the executed action"
          },
          "steps": {
            "type": "array",
            "description": "Array of execution steps performed during the action processing",
            "items": {
              "$ref": "#/components/schemas/step-out"
            }
          }
        }
      },
      "action-params": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "id"
            }
          },
          "template_id": {
            "type": "string",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "template_id"
            }
          },
          "num": {
            "type": "integer",
            "format": "uint32",
            "x-oapi-codegen-extra-tags": {
              "bson": "num"
            }
          },
          "to": {
            "type": "string",
            "x-go-type": "types.Address",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "to"
            }
          },
          "data_hash": {
            "type": "string",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "data_hash"
            }
          }
        }
      },
      "affected-object": {
        "type": "object",
        "required": [
          "id",
          "template_id",
          "prev_state_hash",
          "next_state_hash",
          "prev_integrity_hash",
          "integrity_hash",
          "state_change_id",
          "change_type"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "id"
            }
          },
          "template_id": {
            "type": "string",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "template_id"
            }
          },
          "prev_state_hash": {
            "type": "string",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_state_hash"
            }
          },
          "next_state_hash": {
            "type": "string",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "next_state_hash"
            }
          },
          "prev_integrity_hash": {
            "type": "string",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_integrity_hash"
            }
          },
          "integrity_hash": {
            "type": "string",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "next_integrity_hash"
            }
          },
          "state_change_id": {
            "type": "string",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "state_change_id"
            }
          },
          "change_type": {
            "type": "string",
            "description": "Type of change applied to the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "change_type"
            }
          }
        }
      },
      "action-log-status": {
        "type": "string",
        "enum": [
          "pending",
          "completed",
          "failed"
        ],
        "example": "pending",
        "x-oapi-codegen-extra-tags": {
          "bson": "status"
        }
      },
      "action-permit": {
        "type": "object",
        "required": [
          "commitment",
          "scope",
          "nonce",
          "signature"
        ],
        "properties": {
          "commitment": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "commitment"
            }
          },
          "scope": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "scope"
            }
          },
          "nonce": {
            "type": "integer",
            "format": "uint64",
            "x-oapi-codegen-extra-tags": {
              "bson": "nonce"
            }
          },
          "recipient": {
            "type": "string",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "recipient"
            }
          },
          "deadline": {
            "type": "integer",
            "format": "uint64",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "deadline"
            }
          },
          "signature": {
            "type": "string",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "signature"
            }
          }
        }
      },
      "action-access-2": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of access control for the action",
            "enum": [
              "public",
              "private",
              "whitelist",
              "token"
            ],
            "x-oapi-codegen-extra-tags": {
              "bson": "type",
              "validate": "required"
            }
          },
          "whitelist": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of addresses allowed to perform the action (for whitelist access type)",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "whitelist"
            }
          },
          "token": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Tokens required to perform the action (for token access type)",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "token"
            }
          },
          "object_id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "object_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "merkle_root": {
            "type": "string",
            "description": "Merkle root for the access control",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "merkle_root"
            }
          },
          "merkle_proof": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Merkle proof for the access control",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "merkle_proof"
            }
          }
        }
      },
      "action-log": {
        "type": "object",
        "required": [
          "id",
          "params",
          "name",
          "message_hash",
          "signer",
          "signature",
          "hash",
          "affected_objects",
          "status",
          "base_fee",
          "base_fee_wei",
          "dynamic_fee",
          "dynamic_fee_wei",
          "token_price",
          "total_fee",
          "total_fee_wei",
          "nonce",
          "version",
          "when_modified",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "batch_id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "batch_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "wallet_id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "wallet_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "name": {
            "type": "string",
            "description": "The name of the action",
            "x-oapi-codegen-extra-tags": {
              "bson": "name"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "alias": {
            "type": "string",
            "description": "The alias of the action",
            "x-oapi-codegen-extra-tags": {
              "bson": "alias,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "params": {
            "$ref": "#/components/schemas/action-params"
          },
          "message_hash": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "message_hash"
            },
            "x-go-type-skip-optional-pointer": true,
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "signer": {
            "type": "string",
            "x-go-type": "types.Address",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "signer"
            }
          },
          "public_key": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "public_key"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "signature": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "signature"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "hash": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "hash"
            },
            "x-go-type-skip-optional-pointer": true,
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "affected_objects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/affected-object"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "affected_objects"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "status": {
            "$ref": "#/components/schemas/action-log-status"
          },
          "base_fee": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "base_fee"
            }
          },
          "base_fee_wei": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "base_fee_wei"
            }
          },
          "dynamic_fee": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "dynamic_fee"
            }
          },
          "dynamic_fee_wei": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "dynamic_fee_wei"
            }
          },
          "token_price": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "token_price"
            }
          },
          "total_fee": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "total_fee"
            }
          },
          "total_fee_wei": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "total_fee_wei"
            }
          },
          "nonce": {
            "type": "integer",
            "format": "uint64",
            "x-oapi-codegen-extra-tags": {
              "bson": "nonce"
            }
          },
          "permit": {
            "$ref": "#/components/schemas/action-permit"
          },
          "access": {
            "$ref": "#/components/schemas/action-access-2"
          },
          "version": {
            "type": "integer",
            "format": "uint32",
            "x-oapi-codegen-extra-tags": {
              "bson": "version"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          }
        }
      },
      "ListActionLogsOut": {
        "type": "object",
        "description": "Response containing a list of action logs with pagination support",
        "required": [
          "action_logs"
        ],
        "properties": {
          "action_logs": {
            "type": "array",
            "description": "Array of action log entries returned in the response",
            "items": {
              "$ref": "#/components/schemas/action-log"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for retrieving the next set of action logs",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "wallets-stats-out": {
        "type": "object",
        "required": [
          "total",
          "active"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of users"
          },
          "active": {
            "type": "integer",
            "format": "int64",
            "description": "Number of active users in the specified time range"
          }
        }
      },
      "time-series-data-point": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "id",
              "json": "id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "key": {
            "type": "string",
            "description": "Key for this data point",
            "x-oapi-codegen-extra-tags": {
              "bson": "key",
              "json": "key,omitempty"
            }
          },
          "when": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for this data point",
            "x-oapi-codegen-extra-tags": {
              "bson": "when"
            }
          },
          "count": {
            "type": "integer",
            "format": "int64",
            "description": "Count value for this data point",
            "x-oapi-codegen-extra-tags": {
              "bson": "count"
            }
          },
          "amount": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "amount"
            }
          }
        }
      },
      "wallets-total-stats-out": {
        "type": "object",
        "required": [
          "total",
          "data"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of users"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/time-series-data-point"
            },
            "description": "List of statistics over time"
          }
        }
      },
      "wallets-registration-stats-out": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/time-series-data-point"
            },
            "description": "List of registration statistics over time"
          }
        }
      },
      "objects-stats-out": {
        "type": "object",
        "required": [
          "total",
          "by_template"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of objects"
          },
          "by_template": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Objects broken down by template"
          }
        }
      },
      "objects-creation-stats-out": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/time-series-data-point"
            },
            "description": "List of object creation statistics over time"
          }
        }
      },
      "actions-stats-out": {
        "type": "object",
        "required": [
          "total"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of action calls"
          },
          "by_name": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            },
            "description": "Action calls broken down by action name"
          }
        }
      },
      "actions-execution-stats-out": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/time-series-data-point"
            },
            "description": "List of action execution statistics over time"
          }
        }
      },
      "fees-time-data": {
        "type": "object",
        "required": [
          "key",
          "when",
          "total_fee_wei",
          "total_fee",
          "base_fee_wei",
          "base_fee",
          "dynamic_fee_wei",
          "dynamic_fee",
          "count"
        ],
        "description": "Fee statistics broken down by action name",
        "properties": {
          "key": {
            "type": "string",
            "description": "The key for the fee statistic, e.g., action name or time interval.",
            "x-oapi-codegen-extra-tags": {
              "bson": "key"
            }
          },
          "when": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp for this fee statistic",
            "x-oapi-codegen-extra-tags": {
              "bson": "when"
            }
          },
          "total_fee_wei": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "total_fee_wei"
            }
          },
          "total_fee": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "total_fee"
            }
          },
          "base_fee_wei": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "base_fee_wei"
            }
          },
          "base_fee": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "base_fee"
            }
          },
          "dynamic_fee_wei": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "dynamic_fee_wei"
            }
          },
          "dynamic_fee": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "dynamic_fee"
            }
          },
          "count": {
            "type": "integer",
            "format": "int64",
            "description": "Count of actions for this fee statistic",
            "x-oapi-codegen-extra-tags": {
              "bson": "count"
            }
          }
        }
      },
      "actions-stats-fees-out": {
        "type": "object",
        "required": [
          "total_fee",
          "total_fee_wei",
          "base_fee",
          "base_fee_wei",
          "dynamic_fee",
          "dynamic_fee_wei"
        ],
        "properties": {
          "total_fee": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            }
          },
          "total_fee_wei": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            }
          },
          "base_fee": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            }
          },
          "base_fee_wei": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            }
          },
          "dynamic_fee": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            }
          },
          "dynamic_fee_wei": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            }
          },
          "by_name": {
            "type": "array",
            "x-skip-optional-pointer": true,
            "items": {
              "$ref": "#/components/schemas/fees-time-data"
            }
          }
        }
      },
      "system": {
        "type": "string",
        "enum": [
          "email",
          "sms",
          "push"
        ],
        "x-oapi-codegen-extra-tags": {
          "bson": "system,omitempty"
        }
      },
      "message-status": {
        "type": "string",
        "enum": [
          "pending",
          "delivered",
          "failed",
          "scheduled",
          "cancelled",
          "retrying"
        ],
        "x-oapi-codegen-extra-tags": {
          "bson": "status",
          "json": "status"
        }
      },
      "action-type": {
        "type": "string",
        "enum": [
          "register",
          "login",
          "reset",
          "verify",
          "otp",
          "org_invite",
          "custom",
          "internal"
        ],
        "x-oapi-codegen-extra-tags": {
          "bson": "action_type,omitempty",
          "validate": "omitempty"
        }
      },
      "general-error": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          },
          "details": {
            "type": "object",
            "x-go-type": "any",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "message": {
        "type": "object",
        "description": "Notification message entity for sending communications to users through various channels",
        "required": [
          "id",
          "to",
          "system",
          "language",
          "action_type",
          "status",
          "when_modified",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the notification message",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "template_id": {
            "type": "string",
            "description": "Template identifier used to format the message content",
            "x-oapi-codegen-extra-tags": {
              "bson": "template_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "action_type": {
            "$ref": "#/components/schemas/action-type",
            "description": "Type of action that triggered this notification"
          },
          "to": {
            "type": "string",
            "description": "Recipient address (email, phone number, etc.) for the notification",
            "x-oapi-codegen-extra-tags": {
              "bson": "to,omitempty"
            }
          },
          "system": {
            "$ref": "#/components/schemas/system",
            "description": "Notification system/channel to be used for delivery"
          },
          "language": {
            "$ref": "#/components/schemas/language",
            "description": "Language preference for the notification content"
          },
          "status": {
            "$ref": "#/components/schemas/message-status",
            "description": "Current delivery status of the notification message"
          },
          "scheduled_at": {
            "type": "string",
            "format": "date-time",
            "description": "The time at which the message should be sent.",
            "x-oapi-codegen-extra-tags": {
              "bson": "scheduled_at,omitempty"
            }
          },
          "error": {
            "$ref": "#/components/schemas/general-error",
            "description": "Error information if message delivery failed"
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the message was last modified",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the message was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "ListNotificationsOut": {
        "type": "object",
        "required": [
          "messages"
        ],
        "properties": {
          "messages": {
            "type": "array",
            "description": "Array of messages.",
            "items": {
              "$ref": "#/components/schemas/message"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "content-type": {
        "type": "string",
        "enum": [
          "text",
          "html"
        ],
        "x-oapi-codegen-extra-tags": {
          "bson": "content_type,omitempty"
        }
      },
      "message-create": {
        "type": "object",
        "required": [
          "to",
          "action_type"
        ],
        "properties": {
          "org_id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "org_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "template_id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "template_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "action_type": {
            "$ref": "#/components/schemas/action-type"
          },
          "to": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "to,omitempty"
            }
          },
          "values": {
            "type": "object",
            "x-oapi-codegen-extra-tags": {
              "bson": "values,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "is_push": {
            "type": "boolean",
            "x-oapi-codegen-extra-tags": {
              "bson": "is_push,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "sync": {
            "type": "boolean",
            "x-oapi-codegen-extra-tags": {
              "bson": "sync,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "scheduled_at": {
            "type": "string",
            "format": "date-time",
            "description": "The time at which the message should be sent.",
            "x-oapi-codegen-extra-tags": {
              "bson": "scheduled_at,omitempty"
            }
          },
          "language": {
            "$ref": "#/components/schemas/language"
          },
          "title": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "title,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "content": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "content,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "content_type": {
            "$ref": "#/components/schemas/content-type"
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "template-message": {
        "type": "object",
        "required": [
          "id",
          "org_id",
          "name",
          "language",
          "system",
          "action_type",
          "content",
          "content_type",
          "when_modified",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "name": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "name"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "language": {
            "$ref": "#/components/schemas/language"
          },
          "system": {
            "$ref": "#/components/schemas/system"
          },
          "action_type": {
            "$ref": "#/components/schemas/action-type"
          },
          "title": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "title,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "project": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "project,omitempty"
            }
          },
          "content": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "content,omitempty"
            }
          },
          "content_type": {
            "$ref": "#/components/schemas/content-type"
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "values,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified,omitempty"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            }
          }
        }
      },
      "ListMessageTemplatesOut": {
        "type": "object",
        "required": [
          "templates"
        ],
        "properties": {
          "templates": {
            "type": "array",
            "description": "Array of template objects.",
            "items": {
              "$ref": "#/components/schemas/template-message"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "template-message-create": {
        "type": "object",
        "required": [
          "name",
          "system",
          "action_type",
          "title",
          "content",
          "content_type"
        ],
        "properties": {
          "name": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "name,omitempty",
              "validate": "required,max=256"
            }
          },
          "language": {
            "$ref": "#/components/schemas/language"
          },
          "system": {
            "$ref": "#/components/schemas/system"
          },
          "action_type": {
            "$ref": "#/components/schemas/action-type"
          },
          "title": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "title,omitempty"
            }
          },
          "project": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "project,omitempty"
            }
          },
          "content": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "content,omitempty",
              "validate": "required,max=4096"
            }
          },
          "content_type": {
            "x-oapi-codegen-extra-tags": {
              "bson": "content_type,omitempty",
              "validate": "required,oneof=text html"
            },
            "$ref": "#/components/schemas/content-type"
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "values,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "template-message-update": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "name,omitempty",
              "validate": "omitempty,max=256"
            }
          },
          "language": {
            "$ref": "#/components/schemas/language"
          },
          "system": {
            "$ref": "#/components/schemas/system"
          },
          "action_type": {
            "$ref": "#/components/schemas/action-type"
          },
          "title": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "title,omitempty"
            }
          },
          "project": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "project,omitempty"
            }
          },
          "content": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "content,omitempty"
            }
          },
          "content_type": {
            "$ref": "#/components/schemas/content-type"
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "values,omitempty"
            },
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "webhook-type": {
        "type": "string",
        "description": "Enum representing the available webhook types.",
        "enum": [
          "address_activity",
          "template_activity",
          "action_activity"
        ],
        "example": "template_activity"
      },
      "webhook": {
        "type": "object",
        "description": "Represents a webhook configuration.",
        "required": [
          "id",
          "name",
          "type",
          "url",
          "org_id",
          "wallet_id",
          "signing_key",
          "is_active",
          "when_modified",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique ID for the webhook.",
            "x-oapi-codegen-extra-tags": {
              "json": "id,omitempty",
              "bson": "_id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "name": {
            "type": "string",
            "description": "Descriptive name of the webhook.",
            "example": "My Webhook",
            "x-oapi-codegen-extra-tags": {
              "bson": "name,omitempty"
            }
          },
          "type": {
            "$ref": "#/components/schemas/webhook-type",
            "x-oapi-codegen-extra-tags": {
              "bson": "type,omitempty"
            }
          },
          "wallet_id": {
            "type": "string",
            "description": "Wallet ID that owns the webhook.",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "wallet_id,omitempty"
            }
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL endpoint where webhook events are sent.",
            "example": "https://webhook.site/example",
            "x-oapi-codegen-extra-tags": {
              "bson": "url,omitempty"
            }
          },
          "is_active": {
            "type": "boolean",
            "description": "Whether the webhook is active.",
            "example": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "is_active,omitempty"
            }
          },
          "addresses": {
            "type": "array",
            "description": "List of addresses being tracked, null if not an address activity webhook.",
            "items": {
              "type": "string",
              "example": "0x1234567890abcdef1234567890abcdef12345678"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "addresses"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "template_ids": {
            "type": "array",
            "description": "List of templates being tracked, null if not a template activity webhook.",
            "items": {
              "type": "string",
              "example": "tmpl_xxxx123456"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "template_ids"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "actions": {
            "type": "array",
            "description": "List of actions being tracked, null if not an action activity webhook.",
            "items": {
              "type": "string",
              "example": "action_xxxx123456"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "actions"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "When the webhook was created.",
            "example": "2021-01-01T00:00:00Z",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "When the webhook was last modified.",
            "example": "2021-01-01T00:00:00Z",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified,omitempty"
            }
          }
        }
      },
      "ListWebhooksOut": {
        "type": "object",
        "required": [
          "webhooks"
        ],
        "properties": {
          "webhooks": {
            "type": "array",
            "description": "Array of webhook configurations associated with the account or organization.",
            "items": {
              "$ref": "#/components/schemas/webhook"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for retrieving the next set of webhooks.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "webhook-create": {
        "type": "object",
        "description": "Represents a webhook configuration.",
        "required": [
          "name",
          "type",
          "url"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Descriptive name of the webhook.",
            "example": "My Webhook",
            "x-oapi-codegen-extra-tags": {
              "validate": "required,max=256"
            }
          },
          "type": {
            "$ref": "#/components/schemas/webhook-type"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL endpoint where webhook events are sent.",
            "example": "https://webhook.site/example",
            "x-oapi-codegen-extra-tags": {
              "validate": "required,url"
            }
          },
          "is_active": {
            "type": "boolean",
            "description": "Whether the webhook is active.",
            "example": true,
            "x-go-type-skip-optional-pointer": true
          },
          "addresses": {
            "type": "array",
            "description": "List of addresses being tracked, null if not an address activity webhook.",
            "items": {
              "type": "string",
              "example": "0x1234567890abcdef1234567890abcdef12345678"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "template_ids": {
            "type": "array",
            "description": "List of templates being tracked, null if not a template activity webhook.",
            "items": {
              "type": "string",
              "example": "tmpl_xxxx123456"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "actions": {
            "type": "array",
            "description": "List of actions being tracked, null if not an action activity webhook.",
            "items": {
              "type": "string"
            },
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "webhook-update": {
        "type": "object",
        "description": "Represents a webhook update configuration.",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL endpoint where webhook events are sent.",
            "example": "https://webhook.site/example",
            "x-oapi-codegen-extra-tags": {
              "bson": "url,omitempty",
              "validate": "omitempty,url"
            }
          },
          "is_active": {
            "type": "boolean",
            "description": "Whether the webhook is active.",
            "example": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "is_active,omitempty"
            }
          },
          "addresses": {
            "type": "array",
            "description": "List of addresses being tracked, null if not an address activity webhook.",
            "items": {
              "type": "string",
              "example": "0x1234567890abcdef1234567890abcdef12345678"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "addresses,omitempty"
            }
          },
          "template_ids": {
            "type": "array",
            "description": "List of templates being tracked, null if not a template activity webhook.",
            "items": {
              "type": "string",
              "example": "tmpl_xxxx123456"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "template_ids,omitempty"
            }
          },
          "actions": {
            "type": "array",
            "description": "List of actions being tracked, null if not an action activity webhook.",
            "items": {
              "type": "string"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "actions,omitempty"
            }
          }
        }
      },
      "WebhookEventStatus": {
        "type": "string",
        "description": "The current delivery status of the webhook event.",
        "enum": [
          "pending",
          "delivered",
          "failed",
          "retrying"
        ],
        "example": "delivered",
        "x-oapi-codegen-extra-tags": {
          "bson": "status,omitempty"
        }
      },
      "webhook-event": {
        "type": "object",
        "description": "Represents a webhook event notification.",
        "required": [
          "id",
          "webhook_id",
          "type",
          "payload",
          "signature",
          "url",
          "status",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique ID for the webhook.",
            "x-oapi-codegen-extra-tags": {
              "json": "id,omitempty",
              "bson": "_id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "webhook_id": {
            "type": "string",
            "description": "Unique identifier for the webhook.",
            "example": "wh_octjglnywaupz6th",
            "x-oapi-codegen-extra-tags": {
              "bson": "webhook_id,omitempty"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "type": {
            "$ref": "#/components/schemas/webhook-type"
          },
          "payload": {
            "type": "string",
            "description": "The actual event payload.",
            "x-oapi-codegen-extra-tags": {
              "bson": "event,omitempty"
            }
          },
          "signature": {
            "type": "string",
            "description": "The signature of the event.",
            "x-oapi-codegen-extra-tags": {
              "bson": "signature,omitempty"
            }
          },
          "url": {
            "type": "string",
            "description": "The URL that the event was sent to.",
            "example": "https://example.com/webhook",
            "x-oapi-codegen-extra-tags": {
              "bson": "url,omitempty"
            }
          },
          "status": {
            "$ref": "#/components/schemas/WebhookEventStatus"
          },
          "error": {
            "$ref": "#/components/schemas/general-error"
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the event was last modified.",
            "example": "2021-10-01T12:00:00Z",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified,omitempty"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the event was created.",
            "example": "2021-10-01T12:00:00Z",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created,omitempty"
            }
          }
        }
      },
      "ListWebhookEventsOut": {
        "type": "object",
        "required": [
          "events"
        ],
        "properties": {
          "events": {
            "type": "array",
            "description": "Array of webhook events showing delivery attempts and status.",
            "items": {
              "$ref": "#/components/schemas/webhook-event"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for retrieving the next set of webhook events.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "affected-action-log": {
        "type": "object",
        "required": [
          "id",
          "hash",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "id"
            }
          },
          "hash": {
            "type": "string",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "hash"
            }
          },
          "name": {
            "type": "string",
            "description": "Name of the affected action log",
            "x-oapi-codegen-extra-tags": {
              "bson": "name"
            }
          },
          "alias": {
            "type": "string",
            "description": "Alias of the affected action log",
            "x-oapi-codegen-extra-tags": {
              "bson": "alias"
            }
          }
        }
      },
      "BatchStatus": {
        "type": "string",
        "enum": [
          "building",
          "requesting",
          "proving",
          "storing",
          "anchoring",
          "nfts",
          "settling",
          "finalized",
          "failed"
        ],
        "description": "The status of the batch process.",
        "x-oapi-codegen-extra-tags": {
          "bson": "status",
          "json": "status"
        }
      },
      "Proof": {
        "type": "object",
        "description": "Cryptographic proof of the batch's validity",
        "x-oapi-codegen-extra-tags": {
          "bson": "proof"
        },
        "required": [
          "type",
          "value",
          "public_values",
          "vkey"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of proof (e.g., zk-SNARK)",
            "x-oapi-codegen-extra-tags": {
              "bson": "type"
            }
          },
          "value": {
            "type": "string",
            "description": "Encoded proof value",
            "x-oapi-codegen-extra-tags": {
              "bson": "value"
            }
          },
          "public_values": {
            "type": "string",
            "x-oapi-codegen-extra-tags": {
              "bson": "public_values"
            },
            "description": "Public values used in the proof"
          },
          "vkey": {
            "type": "string",
            "description": "Verification key for the proof",
            "x-oapi-codegen-extra-tags": {
              "bson": "vkey"
            }
          },
          "message": {
            "type": "string",
            "description": "Optional message associated with the proof",
            "x-oapi-codegen-extra-tags": {
              "bson": "message"
            }
          }
        }
      },
      "batch": {
        "type": "object",
        "description": "Batch entity representing a collection of blockchain transactions processed together",
        "required": [
          "id",
          "hash",
          "sequence",
          "sender",
          "commitment",
          "affected_actions",
          "actions_count",
          "actions_hash",
          "integrity_root",
          "prev_integrity_root",
          "version",
          "step",
          "status",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the batch",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "sequence": {
            "type": "integer",
            "format": "uint64",
            "description": "Sequence number of the batch in the processing order",
            "x-oapi-codegen-extra-tags": {
              "bson": "sequence"
            }
          },
          "hash": {
            "type": "string",
            "description": "Cryptographic hash of the batch content",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "hash"
            }
          },
          "prev_hash": {
            "type": "string",
            "description": "Hash of the previous batch in the sequence",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_hash"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "integrity_root": {
            "type": "string",
            "description": "SMT integrity root for the batch",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "integrity_root"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "prev_integrity_root": {
            "type": "string",
            "description": "Previous SMT integrity root for the batch",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_integrity_root"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "sender": {
            "type": "string",
            "description": "Blockchain address that submitted the batch",
            "x-go-type": "types.Address",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "sender"
            }
          },
          "l2_tx_hash": {
            "type": "string",
            "description": "Transaction hash of the batch on the blockchain",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "l2_tx_hash"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "l2_finalization_tx_hash": {
            "type": "string",
            "description": "Finalization transaction hash of the batch on the blockchain",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "l2_finalization_tx_hash"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "commitment": {
            "type": "string",
            "description": "Commitment hash for the batch",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "commitment"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "actions_hash": {
            "type": "string",
            "description": "Hash of all actions included in the batch",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "actions_hash"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "affected_actions": {
            "type": "array",
            "description": "List of action identifiers included in this batch",
            "items": {
              "$ref": "#/components/schemas/affected-action-log"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "affected_actions"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "actions_count": {
            "type": "integer",
            "format": "uint32",
            "description": "Total number of actions processed in this batch",
            "x-oapi-codegen-extra-tags": {
              "bson": "actions_count"
            }
          },
          "total_fee": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "total_fee"
            }
          },
          "total_fee_wei": {
            "type": "string",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "total_fee_wei"
            }
          },
          "version": {
            "type": "integer",
            "description": "Version number of the batch format",
            "x-oapi-codegen-extra-tags": {
              "bson": "version"
            }
          },
          "ipfs_url": {
            "type": "string",
            "description": "IPFS URL where the batch data is stored",
            "x-oapi-codegen-extra-tags": {
              "bson": "ipfs_url"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "status": {
            "$ref": "#/components/schemas/BatchStatus",
            "description": "Current processing status of the batch"
          },
          "proof": {
            "$ref": "#/components/schemas/Proof"
          },
          "proof_id": {
            "type": "string",
            "description": "Identifier of the proof for this batch",
            "x-oapi-codegen-extra-tags": {
              "bson": "proof_id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "error": {
            "type": "string",
            "description": "Error message if batch processing failed",
            "x-oapi-codegen-extra-tags": {
              "bson": "error"
            }
          },
          "challenge_window_end": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the challenge window ends for this batch",
            "x-oapi-codegen-extra-tags": {
              "bson": "challenge_window_end"
            }
          },
          "when_completed": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the batch processing was completed",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_completed"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the batch was last modified",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the batch was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          }
        }
      },
      "ListBatchesOut": {
        "type": "object",
        "required": [
          "batches"
        ],
        "properties": {
          "batches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/batch"
            }
          },
          "next": {
            "type": "string",
            "description": "The next page token. This will be empty if there are no more pages."
          }
        }
      },
      "CheckpointStatus": {
        "type": "string",
        "enum": [
          "building",
          "requesting",
          "proving",
          "storing",
          "anchoring",
          "finalized",
          "failed"
        ],
        "description": "The status of the checkpoint process.",
        "x-oapi-codegen-extra-tags": {
          "bson": "status",
          "json": "status"
        }
      },
      "affected-batch": {
        "type": "object",
        "required": [
          "id",
          "sequence",
          "hash"
        ],
        "x-oapi-codegen-extra-tags": {
          "bson": "affected_batch"
        },
        "properties": {
          "id": {
            "type": "string",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "id"
            }
          },
          "sequence": {
            "type": "integer",
            "format": "uint64",
            "x-oapi-codegen-extra-tags": {
              "bson": "sequence"
            }
          },
          "hash": {
            "type": "string",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "hash"
            }
          }
        }
      },
      "checkpoint": {
        "type": "object",
        "description": "Checkpoint entity representing a verified state of the sequencer at a specific point in time",
        "required": [
          "id",
          "hash",
          "sequence",
          "start_hash",
          "start_sequence",
          "end_sequence",
          "end_hash",
          "sender",
          "step",
          "status",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the checkpoint",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "hash": {
            "type": "string",
            "description": "Cryptographic hash of the checkpoint content",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "hash"
            }
          },
          "sequence": {
            "type": "integer",
            "format": "uint64",
            "description": "Sequence number of the checkpoint in the processing order",
            "x-oapi-codegen-extra-tags": {
              "bson": "sequence"
            }
          },
          "start_hash": {
            "type": "string",
            "description": "Hash of the starting batch in the checkpoint",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "start_hash"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "start_sequence": {
            "type": "integer",
            "format": "uint64",
            "description": "Sequence number of the starting batch in the checkpoint",
            "x-oapi-codegen-extra-tags": {
              "bson": "start_sequence"
            }
          },
          "end_sequence": {
            "type": "integer",
            "format": "uint64",
            "description": "Sequence number of the ending batch in the checkpoint",
            "x-oapi-codegen-extra-tags": {
              "bson": "end_sequence"
            }
          },
          "end_hash": {
            "type": "string",
            "description": "Hash of the ending batch in the checkpoint",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "end_hash"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "sender": {
            "type": "string",
            "description": "Address of the entity that created the checkpoint",
            "x-go-type": "types.Address",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "sender"
            }
          },
          "l2_tx_hash": {
            "type": "string",
            "description": "Hash of the Layer 2 transaction associated with the checkpoint",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "l2_tx_hash"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "ipfs_url": {
            "type": "string",
            "description": "IPFS URL where the batch data is stored",
            "x-oapi-codegen-extra-tags": {
              "bson": "ipfs_url"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "status": {
            "$ref": "#/components/schemas/CheckpointStatus",
            "description": "Current processing status of the checkpoint"
          },
          "proof": {
            "$ref": "#/components/schemas/Proof"
          },
          "proof_id": {
            "type": "string",
            "description": "Identifier of the proof for this batch",
            "x-oapi-codegen-extra-tags": {
              "bson": "proof_id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "error": {
            "type": "string",
            "description": "Error message if the checkpoint processing failed",
            "x-oapi-codegen-extra-tags": {
              "bson": "error"
            }
          },
          "affected_batches": {
            "type": "array",
            "description": "List of affected batches in this checkpoint",
            "x-go-type-skip-optional-pointer": true,
            "items": {
              "$ref": "#/components/schemas/affected-batch"
            }
          },
          "when_completed": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the checkpoint processing was completed",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_completed"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the checkpoint was last modified",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the checkpoint was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          }
        }
      },
      "ListCheckpointsOut": {
        "type": "object",
        "required": [
          "checkpoints"
        ],
        "properties": {
          "checkpoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/checkpoint"
            }
          },
          "next": {
            "type": "string",
            "description": "The next page token. This will be empty if there are no more pages."
          }
        }
      },
      "network-info": {
        "type": "object",
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "type": "string",
            "description": "The current status of the network (e.g., \"operational\", \"degraded\", \"maintenance\")."
          },
          "version": {
            "type": "string",
            "description": "The current version of the network protocol or software."
          },
          "uptime": {
            "type": "string",
            "description": "The duration for which the network has been operational without interruption."
          },
          "last_updated": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the last update to the network information."
          }
        }
      },
      "network-fees": {
        "type": "object",
        "required": [
          "base_fee",
          "base_fee_wei",
          "dynamic_fee",
          "dynamic_fee_wei",
          "token_price",
          "total_fee",
          "total_fee_wei"
        ],
        "properties": {
          "token_price": {
            "type": "string",
            "description": "Current price of the network token."
          },
          "base_fee": {
            "type": "string",
            "description": "Base fee for actions in the eBus system."
          },
          "base_fee_wei": {
            "type": "string",
            "description": "Base fee for ERC20 token actions in the eBus system."
          },
          "dynamic_fee": {
            "type": "string",
            "description": "Dynamic fee component based on current network conditions."
          },
          "dynamic_fee_wei": {
            "type": "string",
            "description": "Dynamic fee component for ERC20 token actions based on current network conditions."
          },
          "total_fee": {
            "type": "string",
            "description": "Total fee calculated as the sum of base and dynamic fees."
          },
          "total_fee_wei": {
            "type": "string",
            "description": "Total fee for ERC20 token actions calculated as the sum of base and dynamic fees"
          }
        }
      },
      "network-config": {
        "type": "object",
        "required": [
          "l2_rpc",
          "l2_explorer",
          "l3_explorer",
          "staking",
          "fees_dispatcher",
          "deposits",
          "batch_registry",
          "bridged_nfts",
          "dao"
        ],
        "properties": {
          "l2_rpc": {
            "type": "string",
            "description": "The L2 RPC endpoint URL for the network."
          },
          "l2_explorer": {
            "type": "string",
            "description": "The L2 explorer URL for the network."
          },
          "l3_explorer": {
            "type": "string",
            "description": "The L3 explorer URL for the network."
          },
          "staking": {
            "type": "string",
            "description": "The staking contract address on the network."
          },
          "deposits": {
            "type": "string",
            "description": "The deposits contract address on the network."
          },
          "batch_registry": {
            "type": "string",
            "description": "The batch registry contract address on the network."
          },
          "dao": {
            "type": "string",
            "description": "The DAO contract address on the network."
          },
          "bridged_nfts": {
            "type": "string",
            "description": "The bridged NFTs contract address on the network."
          },
          "fees_dispatcher": {
            "type": "string",
            "description": "The fee dispatcher contract address authorized to send fees on the network."
          }
        }
      },
      "network-staking": {
        "type": "object",
        "description": "Network-wide staking statistics and information.",
        "properties": {
          "contract_address": {
            "type": "string",
            "description": "Address of the staking contract.",
            "x-oapi-codegen-extra-tags": {
              "bson": "contract_address,omitempty"
            }
          },
          "total_staked": {
            "type": "string",
            "description": "Total amount of DUAL staked in the contract (wei).",
            "x-oapi-codegen-extra-tags": {
              "bson": "total_staked,omitempty"
            }
          },
          "total_fees_dispatched": {
            "type": "string",
            "description": "Lifetime fees dispatched to stakers (wei).",
            "x-oapi-codegen-extra-tags": {
              "bson": "total_fees_dispatched,omitempty"
            }
          },
          "total_rewards_claimed": {
            "type": "string",
            "description": "Lifetime rewards claimed by stakers (wei).",
            "x-oapi-codegen-extra-tags": {
              "bson": "total_rewards_claimed,omitempty"
            }
          },
          "reward_per_token": {
            "type": "string",
            "description": "Global cumulative fee rewards per xDUAL token.",
            "x-oapi-codegen-extra-tags": {
              "bson": "reward_per_token,omitempty"
            }
          },
          "is_paused": {
            "type": "boolean",
            "description": "Whether staking is currently paused.",
            "x-oapi-codegen-extra-tags": {
              "bson": "is_paused,omitempty"
            }
          }
        }
      },
      "StakingOperationType": {
        "type": "string",
        "description": "Type of staking operation.",
        "enum": [
          "stake",
          "unstake",
          "reward",
          "fee_dispatch",
          "other"
        ],
        "x-oapi-codegen-extra-tags": {
          "bson": "type"
        }
      },
      "staking-operation": {
        "type": "object",
        "description": "User-specific staking information and rewards.",
        "required": [
          "id",
          "address",
          "amount",
          "tx_hash",
          "type",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the deposit",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            }
          },
          "address": {
            "type": "string",
            "description": "Address of the staking user.",
            "x-oapi-codegen-extra-tags": {
              "bson": "user_address,omitempty"
            }
          },
          "amount": {
            "type": "string",
            "description": "Amount of DUAL staked by the user (wei).",
            "x-go-type": "decimal.Decimal",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/decimal"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "amount"
            }
          },
          "tx_hash": {
            "type": "string",
            "description": "Transaction hash of the staking operation.",
            "x-oapi-codegen-extra-tags": {
              "bson": "tx_hash"
            }
          },
          "type": {
            "$ref": "#/components/schemas/StakingOperationType"
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the deposit was created.",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          }
        }
      },
      "ListStakingOperationsOut": {
        "type": "object",
        "required": [
          "operations"
        ],
        "properties": {
          "operations": {
            "type": "array",
            "description": "Array of staking operations.",
            "items": {
              "$ref": "#/components/schemas/staking-operation"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "staking-operations-stats": {
        "type": "object",
        "required": [
          "total",
          "data"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of staking operations"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/time-series-data-point"
            },
            "description": "List of staking operations statistics over time"
          }
        }
      },
      "network-token-market-data": {
        "type": "object",
        "description": "Information about the network token.",
        "properties": {
          "current_price": {
            "type": "object",
            "description": "Current price of the network token in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "total_value_locked": {
            "description": "Total value locked."
          },
          "mcap_to_tvl_ratio": {
            "type": "number",
            "description": "Market cap to TVL ratio."
          },
          "fdv_to_tvl_ratio": {
            "type": "number",
            "description": "Fully diluted valuation to TVL ratio."
          },
          "roi": {
            "description": "Return on investment data."
          },
          "ath": {
            "type": "object",
            "description": "All-time high prices in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "ath_change_percentage": {
            "type": "object",
            "description": "All-time high change percentages in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "ath_date": {
            "type": "object",
            "description": "All-time high dates in various currencies.",
            "additionalProperties": {
              "type": "string"
            }
          },
          "atl": {
            "type": "object",
            "description": "All-time low prices in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "atl_change_percentage": {
            "type": "object",
            "description": "All-time low change percentages in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "atl_date": {
            "type": "object",
            "description": "All-time low dates in various currencies.",
            "additionalProperties": {
              "type": "string"
            }
          },
          "market_cap": {
            "type": "object",
            "description": "Market capitalization in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "market_cap_rank": {
            "type": "integer",
            "description": "Market capitalization rank."
          },
          "fully_diluted_valuation": {
            "type": "object",
            "description": "Fully diluted valuation in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "total_volume": {
            "type": "object",
            "description": "Total trading volume in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "high_24h": {
            "type": "object",
            "description": "Highest price in the last 24 hours in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "low_24h": {
            "type": "object",
            "description": "Lowest price in the last 24 hours in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "price_change_24h": {
            "type": "number",
            "description": "Price change in the last 24 hours."
          },
          "price_change_percentage_24h": {
            "type": "number",
            "description": "Price change percentage in the last 24 hours."
          },
          "price_change_percentage_7d": {
            "type": "number",
            "description": "Price change percentage in the last 7 days."
          },
          "price_change_percentage_14d": {
            "type": "number",
            "description": "Price change percentage in the last 14 days."
          },
          "price_change_percentage_30d": {
            "type": "number",
            "description": "Price change percentage in the last 30 days."
          },
          "price_change_percentage_60d": {
            "type": "number",
            "description": "Price change percentage in the last 60 days."
          },
          "price_change_percentage_200d": {
            "type": "number",
            "description": "Price change percentage in the last 200 days."
          },
          "price_change_percentage_1y": {
            "type": "number",
            "description": "Price change percentage in the last year."
          },
          "market_cap_change_24h": {
            "type": "number",
            "description": "Market cap change in the last 24 hours."
          },
          "market_cap_change_percentage_24h": {
            "type": "number",
            "description": "Market cap change percentage in the last 24 hours."
          },
          "price_change_24h_in_currency": {
            "type": "object",
            "description": "Price change in the last 24 hours in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "price_change_percentage_1h_in_currency": {
            "type": "object",
            "description": "Price change percentage in the last hour in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "price_change_percentage_24h_in_currency": {
            "type": "object",
            "description": "Price change percentage in the last 24 hours in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "price_change_percentage_7d_in_currency": {
            "type": "object",
            "description": "Price change percentage in the last 7 days in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "price_change_percentage_14d_in_currency": {
            "type": "object",
            "description": "Price change percentage in the last 14 days in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "price_change_percentage_30d_in_currency": {
            "type": "object",
            "description": "Price change percentage in the last 30 days in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "price_change_percentage_60d_in_currency": {
            "type": "object",
            "description": "Price change percentage in the last 60 days in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "price_change_percentage_200d_in_currency": {
            "type": "object",
            "description": "Price change percentage in the last 200 days in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "price_change_percentage_1y_in_currency": {
            "type": "object",
            "description": "Price change percentage in the last year in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "market_cap_change_24h_in_currency": {
            "type": "object",
            "description": "Market cap change in the last 24 hours in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "market_cap_change_percentage_24h_in_currency": {
            "type": "object",
            "description": "Market cap change percentage in the last 24 hours in various currencies.",
            "additionalProperties": {
              "type": "number"
            }
          },
          "total_supply": {
            "type": "number",
            "description": "Total supply of the network token."
          },
          "max_supply": {
            "type": "number",
            "description": "Maximum supply of the network token."
          },
          "circulating_supply": {
            "type": "number",
            "description": "Circulating supply of the network token."
          },
          "last_updated": {
            "type": "string",
            "description": "Last updated timestamp."
          }
        }
      },
      "network-token-price-history": {
        "type": "object",
        "description": "Information about the network token.",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "array",
            "description": "List of historical price data points for the network token.",
            "items": {
              "type": "object",
              "required": [
                "when",
                "price"
              ],
              "properties": {
                "when": {
                  "type": "string",
                  "format": "date-time",
                  "description": "The timestamp of the price data point."
                },
                "price": {
                  "type": "string",
                  "description": "The price of the network token at the given timestamp."
                }
              }
            }
          }
        }
      },
      "public-template-object": {
        "type": "object",
        "required": [
          "metadata"
        ],
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/metadata"
          },
          "custom": {
            "type": "object",
            "description": "Custom properties of the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "custom,omitempty"
            }
          }
        }
      },
      "public-template": {
        "type": "object",
        "description": "Template public entity defining the structure and behavior for creating smart objects",
        "required": [
          "id",
          "name",
          "object",
          "actions",
          "when_created",
          "when_modified"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the template",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "name": {
            "type": "string",
            "description": "Name of the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "name",
              "validate": "required,max=255"
            }
          },
          "object": {
            "$ref": "#/components/schemas/public-template-object",
            "description": "Reference to the object schema",
            "x-oapi-codegen-extra-tags": {
              "bson": "object"
            }
          },
          "factory": {
            "$ref": "#/components/schemas/factory",
            "description": "Reference to the factory schema",
            "x-oapi-codegen-extra-tags": {
              "bson": "factory"
            }
          },
          "actions": {
            "$ref": "#/components/schemas/Actions",
            "description": "Available actions that can be performed on objects created from this template"
          },
          "face_id": {
            "type": "string",
            "description": "Face identifier for the visual representation of objects created from this template",
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "face_id"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the object was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the object was last modified",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified"
            }
          }
        }
      },
      "ListPublicTemplatesOut": {
        "type": "object",
        "required": [
          "templates"
        ],
        "properties": {
          "templates": {
            "type": "array",
            "description": "Array of template objects.",
            "items": {
              "$ref": "#/components/schemas/public-template"
            }
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "public-smart-object": {
        "type": "object",
        "description": "Smart Object schema for public access",
        "required": [
          "id",
          "template_id",
          "metadata",
          "owner",
          "state_hash",
          "integrity_hash",
          "prev_integrity_hash",
          "content_hash",
          "nonce",
          "version",
          "when_modified",
          "when_created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the smart object",
            "x-oapi-codegen-extra-tags": {
              "bson": "_id",
              "json": "id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "chain": {
            "$ref": "#/components/schemas/chain",
            "description": "Reference to the chain information",
            "x-oapi-codegen-extra-tags": {
              "bson": "chain"
            }
          },
          "custom": {
            "type": "object",
            "description": "Custom properties of the object",
            "x-go-type": "map[string]interface{}",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "custom"
            }
          },
          "custom_hash": {
            "type": "string",
            "description": "Custom hash for the object",
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "custom_hash,omitempty"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/metadata",
            "description": "Metadata information for the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "metadata"
            }
          },
          "owner": {
            "type": "string",
            "description": "ID of the owner of the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "owner"
            },
            "x-go-type": "types.Address",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "template_id": {
            "type": "string",
            "description": "Template identifier that defines the structure and behavior of this smart object",
            "x-oapi-codegen-extra-tags": {
              "bson": "template_id"
            },
            "x-go-type": "id.ID",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types/id"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "location": {
            "$ref": "#/components/schemas/location",
            "description": "Location information for the object",
            "x-go-type-skip-optional-pointer": true,
            "x-oapi-codegen-extra-tags": {
              "bson": "location"
            }
          },
          "nonce": {
            "type": "integer",
            "format": "uint64",
            "description": "Nonce value for the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "nonce"
            }
          },
          "version": {
            "type": "integer",
            "format": "uint32",
            "description": "Version of the object",
            "x-oapi-codegen-extra-tags": {
              "bson": "version"
            }
          },
          "state_hash": {
            "type": "string",
            "description": "object state hash - ownership",
            "x-oapi-codegen-extra-tags": {
              "bson": "state_hash"
            },
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "content_hash": {
            "type": "string",
            "description": "object content hash - metadata, assets, location, custom",
            "x-oapi-codegen-extra-tags": {
              "bson": "content_hash"
            },
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "integrity_hash": {
            "type": "string",
            "description": "Merkle root of the integrity data",
            "x-oapi-codegen-extra-tags": {
              "bson": "integrity_hash"
            },
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "prev_integrity_hash": {
            "type": "string",
            "description": null,
            "x-oapi-codegen-extra-tags": {
              "bson": "prev_integrity_hash"
            },
            "x-go-type": "types.Hash",
            "x-go-type-import": {
              "path": "github.com/vlabsio/smarttoken/pkg/types"
            }
          },
          "when_created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the object was created",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_created"
            }
          },
          "when_modified": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of the last modification",
            "x-oapi-codegen-extra-tags": {
              "bson": "when_modified"
            }
          }
        }
      },
      "ListPublicSmartObjectsOut": {
        "type": "object",
        "required": [
          "objects"
        ],
        "properties": {
          "objects": {
            "type": "array",
            "description": "Array of objects.",
            "items": {
              "$ref": "#/components/schemas/public-smart-object"
            }
          },
          "faces": {
            "type": "array",
            "description": "Array of object faces.",
            "items": {
              "$ref": "#/components/schemas/object-faces"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "actions": {
            "type": "array",
            "description": "Array of object actions.",
            "items": {
              "$ref": "#/components/schemas/object-actions"
            },
            "x-go-type-skip-optional-pointer": true
          },
          "next": {
            "type": "string",
            "description": "Pagination token for the next set of results, if any.",
            "x-go-type-skip-optional-pointer": true
          }
        }
      },
      "public-smart-object-metadata": {
        "type": "object",
        "description": "Metadata information for a public smart object",
        "required": [
          "name",
          "description",
          "image",
          "attributes",
          "external_url"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the smart object",
            "x-oapi-codegen-extra-tags": {
              "bson": "name"
            }
          },
          "description": {
            "type": "string",
            "description": "Description of the smart object",
            "x-oapi-codegen-extra-tags": {
              "bson": "description"
            }
          },
          "image": {
            "type": "string",
            "description": "URL to the image representing the smart object",
            "x-oapi-codegen-extra-tags": {
              "bson": "image"
            }
          },
          "attributes": {
            "type": "array",
            "description": "List of attributes associated with the smart object",
            "items": {
              "type": "object",
              "properties": {
                "trait_type": {
                  "type": "string",
                  "description": "Type of the trait"
                },
                "value": {
                  "type": "string",
                  "description": "Value of the trait"
                }
              }
            },
            "x-oapi-codegen-extra-tags": {
              "bson": "attributes"
            }
          },
          "external_url": {
            "type": "string",
            "description": "External URL related to the smart object",
            "x-oapi-codegen-extra-tags": {
              "bson": "external_url"
            }
          }
        }
      }
    },
    "headers": {
      "request-id": {
        "description": "Unique identifier for tracking the request.",
        "schema": {
          "type": "string"
        }
      }
    },
    "responses": {
      "badrequest": {
        "description": "Bad request error - the request contains invalid parameters or malformed data",
        "headers": {
          "X-Request-Id": {
            "description": "Unique identifier for tracking the request.",
            "schema": {
              "type": "string"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            }
          }
        }
      },
      "internal": {
        "description": "Internal server error - an unexpected error occurred on the server",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/request-id"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            }
          }
        }
      },
      "empty": {
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/request-id"
          }
        },
        "description": "An empty response",
        "content": {
          "application/json": {
            "schema": {
              "type": "object"
            }
          }
        }
      },
      "id": {
        "description": "Successfully created resource with its unique identifier",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/request-id"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "id"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Unique identifier of the created resource"
                }
              }
            }
          }
        }
      },
      "notfound": {
        "description": "Resource not found - the requested resource does not exist",
        "headers": {
          "X-Request-Id": {
            "description": "Unique identifier for tracking the request.",
            "schema": {
              "type": "string"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            }
          }
        }
      }
    }
  }
}