openapi: 3.1.1 info: title: "REST API to TON Console" version: 0.0.1 contact: name: "Support" email: "contact@tonaps.org" servers: - url: "http://localhost:8888" tags: - name: admin description: 'Private endpoints.' - name: test description: 'Test endpoints.' - name: auth description: 'Endpoints for authentication and authorization.' - name: account description: 'Endpoints for account management and operations.' - name: project description: 'Endpoints for project management and operations.' - name: tonapi_service description: 'Endpoints for TonAPI service management and operations.' - name: messages_service description: 'Endpoints for Messages service management and operations.' - name: testnet_service description: 'Endpoints for Testnet service management and operations.' - name: stats_service description: 'Endpoints for Stats service management and operations.' - name: invoices_service description: 'Endpoints for Invoices service management and operations.' - name: cnft_service description: 'Endpoints for cNFT service management and operations.' - name: ton_sites_service description: 'Endpoints for Ton Sites service management and operations.' - name: minter_jetton_media description: 'Endpoints for managing and serving media related to Minter Jettons.' - name: mintless_jetton_service description: 'Endpoints for managing Mintless Jetton operations and interactions.' - name: utils description: 'Utility endpoints for common service operations and tools.' - name: airdrops description: 'Endpoints for working with airdrops.' paths: /ready: get: operationId: pingReadyGet tags: - system responses: '200': description: "Ok" '500': $ref: '#/components/responses/InternalError' head: operationId: pingReadyHead tags: - system responses: '200': description: "Ok" '500': $ref: '#/components/responses/InternalError' /alive: get: operationId: pingAliveGet tags: - system responses: '200': description: "Ok" '500': $ref: '#/components/responses/InternalError' head: operationId: pingAliveHead tags: - system responses: '200': description: "Ok" '500': $ref: '#/components/responses/InternalError' /api/v1/feedback: post: summary: "Send user feedback" operationId: feedback tags: - utils requestBody: $ref: "#/components/requestBodies/Feedback" responses: '201': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '500': $ref: '#/components/responses/InternalError' /api/v1/test/user: delete: summary: "Delete test user" operationId: testDeleteUser tags: - test responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/admin/messages/charge: post: summary: "Private method: Messages charge project" description: "Private method" operationId: adminMessagesChargeProject tags: - admin requestBody: $ref: "#/components/requestBodies/MessagesProjectCharge" responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/admin/sites: get: summary: "Private method: Get sites" description: "Private method" operationId: adminGetTonSites tags: - admin responses: '200': $ref: '#/components/responses/TonSitesReduced' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/auth/tg: post: summary: "Auth via telegram" description: > The token is recorded in the database and in the user's cookies. If the user logs in under different browsers, then each authorization will have its own token. operationId: authViaTG tags: - auth requestBody: $ref: "#/components/requestBodies/TgAuthExpected" responses: '200': $ref: '#/components/responses/AuthOk' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/auth/proof/payload: post: summary: "Generate payload for TON Connect" operationId: authGeneratePayload tags: - auth responses: '200': $ref: '#/components/responses/GeneratedPayload' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/auth/proof/check: post: summary: "Auth via TON Connect" description: > The token is recorded in the database and in the user's cookies. If the user logs in under different browsers, then each authorization will have its own token. operationId: authViaTonConnect tags: - auth requestBody: description: "Data that is expected" content: application/json: schema: $ref: '#/components/schemas/TonConnectProof' responses: '200': $ref: '#/components/responses/AuthOk' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/me: get: summary: "Get user info" operationId: getUserInfo tags: - account responses: '200': $ref: '#/components/responses/UserInfo' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/user/referrals: get: summary: "Get user referrals" operationId: getUserReferrals tags: - account responses: '200': $ref: '#/components/responses/UserReferrals' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/account/logout: post: summary: "Logout from the system" description: "After logout, the user's token is deleted" operationId: accountLogout tags: - account responses: '200': $ref: '#/components/responses/AuthOk' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/project: post: summary: "Create project" operationId: createProject tags: - project requestBody: $ref: "#/components/requestBodies/ProjectCreate" responses: '201': $ref: '#/components/responses/ProjectRes' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/projects: get: summary: "Get user's project" operationId: getProjects tags: - project responses: '200': $ref: '#/components/responses/Projects' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/project/{id}: patch: summary: "Update user project" description: "You need to pass only those fields that need to be changed." operationId: updateProject tags: - project parameters: - $ref: '#/components/parameters/projectID' requestBody: $ref: "#/components/requestBodies/ProjectUpdate" responses: '200': $ref: '#/components/responses/ProjectRes' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' delete: summary: "Delete user project" operationId: deleteProject tags: - project parameters: - $ref: '#/components/parameters/projectID' responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/project/{id}/deposit/address: get: summary: "Get project deposit address" operationId: getDepositAddress tags: - project parameters: - $ref: '#/components/parameters/projectID' responses: '200': $ref: '#/components/responses/DepositWallet' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/project/{id}/billing/history: get: summary: "Get project billing history" operationId: getProjectBillingHistory tags: - project parameters: - $ref: '#/components/parameters/projectID' - $ref: '#/components/parameters/beforeBillingTx' - $ref: '#/components/parameters/queryLimit' responses: '200': $ref: '#/components/responses/BillingHistory' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/project/{id}/promocode/{promo_code}: post: summary: "Crediting funds with a promo code" operationId: promoCodeDepositProject tags: - project parameters: - $ref: '#/components/parameters/projectID' - $ref: '#/components/parameters/promoCode' responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/project/{id}/payments/history: get: summary: "Get project payments history" operationId: projectPaymentsHistory deprecated: true tags: - project parameters: - $ref: '#/components/parameters/projectID' - $ref: '#/components/parameters/queryOffset' - $ref: '#/components/parameters/queryLimit' responses: '200': $ref: '#/components/responses/PaymentsHistory' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/project/{id}/participants: get: summary: "Get project participants" operationId: getProjectParticipants tags: - project parameters: - $ref: '#/components/parameters/projectID' responses: '200': $ref: '#/components/responses/Participants' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' post: summary: "Add a participant to the project" operationId: addProjectParticipant tags: - project parameters: - $ref: '#/components/parameters/projectID' requestBody: $ref: "#/components/requestBodies/NewParticipant" responses: '201': $ref: '#/components/responses/CreatedParticipant' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/project/{id}/participant/{user_id}: delete: summary: "Delete a participant from the project" operationId: deleteProjectParticipant tags: - project parameters: - $ref: '#/components/parameters/projectID' - $ref: '#/components/parameters/userID' responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/tokens: get: summary: "Get project TonAPI tokens" operationId: getProjectTonApiTokens tags: - tonapi_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/ProjectTonApiTokens' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/generate/token: post: summary: "Generate project TonAPI token" operationId: generateProjectTonApiToken tags: - tonapi_service requestBody: $ref: "#/components/requestBodies/ProjectTonApiTokenReq" parameters: - $ref: '#/components/parameters/queryProjectID' responses: '201': $ref: '#/components/responses/ProjectTonApiTokenRes' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/token/{id}: patch: summary: "Update project TonAPI token" operationId: updateProjectTonApiToken tags: - tonapi_service requestBody: $ref: "#/components/requestBodies/ProjectTonApiTokenReq" parameters: - $ref: '#/components/parameters/queryProjectID' - $ref: '#/components/parameters/tokenID' responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' delete: summary: "Delete project TonAPI token" operationId: deleteProjectTonApiToken tags: - tonapi_service parameters: - $ref: '#/components/parameters/queryProjectID' - $ref: '#/components/parameters/tokenID' responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/tier: get: summary: "Get project TonAPI tier" operationId: getProjectTonApiTier tags: - tonapi_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/ProjectTonApiTier' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' patch: summary: "Update project TonAPI tier" operationId: updateProjectTonApiTier tags: - tonapi_service parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/NewTier" responses: '200': $ref: '#/components/responses/ProjectTonApiTier' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/tier/valid/buy/{id}: get: summary: "Valid change TonAPI tier for project" operationId: validChangeTonApiTier tags: - tonapi_service parameters: - $ref: '#/components/parameters/tierID' - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/ValidChangeTier' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/tiers: get: summary: "Get active TonAPI tiers" operationId: getTonApiTiers tags: - tonapi_service responses: '200': $ref: '#/components/responses/TonApiTiers' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/stats: get: summary: "Get project TonAPI stats" operationId: getProjectTonApiStats description: "To filter the stats, are expected start and end query parameters in unix format, where end is the day closer to the current one, for example start=1675958400&end=1676908800," tags: - tonapi_service parameters: - $ref: '#/components/parameters/queryProjectID' - $ref: '#/components/parameters/queryStartDateRequired' - $ref: '#/components/parameters/queryEndDateRequired' - $ref: '#/components/parameters/queryStep' - $ref: '#/components/parameters/queryDetailed' - $ref: '#/components/parameters/queryGrafanaDashboard' responses: '200': $ref: '#/components/responses/ProjectTonApiStats' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/liteproxy/private_keys: get: summary: "Get private keys for the liteproxy server" operationId: adminGetLiteproxyPrivateKeys tags: - tonapi_service parameters: - $ref: '#/components/parameters/queryLiteproxyServer' responses: '200': $ref: '#/components/responses/LiteproxyPrivateKeys' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/liteproxy/keys: post: summary: "Create liteproxy keys" operationId: createLiteproxyKeys tags: - tonapi_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '201': $ref: '#/components/responses/LiteproxyKeys' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' get: summary: "Get keys for connecting to liteproxy servers" operationId: getLiteproxyKeys tags: - tonapi_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/LiteproxyKeys' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/liteproxy/tiers: get: summary: "Get list of active tiers for the liteproxy server" operationId: getLiteproxyTiers tags: - tonapi_service responses: '200': $ref: '#/components/responses/LiteproxyTiers' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/liteproxy/tier: get: summary: "Get the current tier for liteproxy server" operationId: getProjectLiteproxyTier tags: - tonapi_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/ProjectLiteproxyTier' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' patch: summary: "Switch to a new tier for liteproxy server" operationId: updateLiteproxyTier tags: - tonapi_service parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/NewTier" responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '409': $ref: '#/components/responses/InsufficientFunds' '500': $ref: '#/components/responses/InternalError' /api/v1/services/tonapi/liteproxy/tier/valid/buy/{id}: get: summary: "Valid change Liteserver tier for project" operationId: validChangeLiteproxyTier tags: - tonapi_service parameters: - $ref: '#/components/parameters/tierID' - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/ValidChangeTier' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/messages/packages: get: summary: "Get messages packages" operationId: getMessagesPackages tags: - messages_service responses: '200': $ref: '#/components/responses/MessagesPackages' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/messages/package: post: summary: "Buy messages package" operationId: buyMessagesPackage tags: - messages_service parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/ProjectMessagesBuyPackage" responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/messages/app: post: summary: "Create project messages app" operationId: createProjectMessagesApp tags: - messages_service parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/ProjectMessagesApp" responses: '200': $ref: '#/components/responses/ProjectMessagesApp' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' delete: summary: "Delete project messages app" operationId: deleteProjectMessagesApp tags: - messages_service parameters: - $ref: '#/components/parameters/queryAppID' responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/messages/app/verify: post: summary: "Verify project messages app" operationId: verifyProjectMessagesApp tags: - messages_service parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/ProjectMessagesAppVerify" responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/messages/apps: get: summary: "Get project messages apps" operationId: getProjectMessagesApps tags: - messages_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/ProjectMessagesApps' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/messages/balance: get: summary: "Get project messages balance" operationId: getProjectMessagesBalance tags: - messages_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/ProjectMessagesBalance' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/messages/token: get: summary: "Get project messages app token" operationId: getProjectMessagesAppToken tags: - messages_service parameters: - $ref: '#/components/parameters/queryAppID' responses: '200': $ref: '#/components/responses/ProjectMessagesAppToken' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' patch: summary: "Regenerate project messages app token" operationId: regenerateProjectMessagesAppToken tags: - messages_service parameters: - $ref: '#/components/parameters/queryAppID' responses: '200': $ref: '#/components/responses/ProjectMessagesAppToken' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/messages/stats: get: summary: "Get project messages stats" operationId: getProjectMessagesStats tags: - messages_service parameters: - $ref: '#/components/parameters/queryAppID' responses: '200': $ref: '#/components/responses/ProjectMessagesStats' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/messages/push: post: summary: "Send project messages push" operationId: sendProjectMessagesPush tags: - messages_service security: - BearerAuth: [ ] requestBody: $ref: "#/components/requestBodies/ProjectMessagesSendPush" responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/testnet/available: get: summary: "Check available coins" operationId: getTestnetAvailable tags: - testnet_service responses: '200': $ref: '#/components/responses/TestnetAvailable' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/testnet/buy/coins: post: summary: "Buy testnet coins" operationId: buyTestnetCoins parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/TestnetBuyCoins" tags: - testnet_service responses: '200': $ref: '#/components/responses/MessageHash' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/ddl: get: summary: "Get stats db ddl" operationId: getStatsDDL tags: - stats_service parameters: - $ref: '#/components/parameters/queryChain' responses: '200': $ref: '#/components/responses/StatsDDL' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/query/estimate: post: summary: "Estimate query" operationId: estimateStatsQuery tags: - stats_service parameters: - $ref: '#/components/parameters/queryChain' requestBody: $ref: "#/components/requestBodies/StatsQueryReq" responses: '200': $ref: '#/components/responses/StatsEstimateQuery' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/query: post: summary: "Send query to stats service" operationId: sendQueryToStats tags: - stats_service parameters: - $ref: '#/components/parameters/queryChain' requestBody: $ref: "#/components/requestBodies/StatsQueryReq" responses: '201': $ref: '#/components/responses/StatsQueryResult' '400': $ref: '#/components/responses/BadRequest' '402': $ref: '#/components/responses/PaymentRequiredError' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '409': $ref: '#/components/responses/InsufficientFunds' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/query/{id}: get: summary: "Get result by sql query id" operationId: getSqlResultFromStats tags: - stats_service parameters: - $ref: '#/components/parameters/queryID' responses: '200': $ref: '#/components/responses/StatsQueryResult' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' patch: summary: "Update query" operationId: updateStatsQuery tags: - stats_service parameters: - $ref: '#/components/parameters/queryID' - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/StatsQueryUpdate" responses: '200': $ref: '#/components/responses/StatsQuery' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/queries/history: get: summary: "Get sql history queries" operationId: getSqlHistoryFromStats tags: - stats_service parameters: - $ref: '#/components/parameters/queryProjectID' - $ref: '#/components/parameters/queryOffset' - $ref: '#/components/parameters/queryLimit' - $ref: '#/components/parameters/queryStatsType' - $ref: '#/components/parameters/queryStatsIsRepetitive' - $ref: '#/components/parameters/queryChain' responses: '200': $ref: '#/components/responses/StatsQueryHistory' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/cosmos/graph: post: summary: "Get an intersection between accounts" operationId: getGraphFromStats tags: - stats_service parameters: - $ref: '#/components/parameters/queryChain' - $ref: '#/components/parameters/queryAddresses' - $ref: '#/components/parameters/queryOnlyBetween' - $ref: '#/components/parameters/queryProjectID' - $ref: '#/components/parameters/queryRepeatInterval' responses: '200': $ref: '#/components/responses/StatsQueryResult' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '409': $ref: '#/components/responses/InsufficientFunds' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/gpt: post: summary: "Send request to ChatGPT" operationId: statsChatGptRequest tags: - stats_service parameters: - $ref: '#/components/parameters/queryProjectID' - $ref: '#/components/parameters/queryChain' requestBody: $ref: "#/components/requestBodies/StatsChatGpt" responses: '200': $ref: '#/components/responses/StatsChatGptAnswer' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/price/gpt: get: summary: "Price per request for ChatGPT" operationId: getStatsChatGptPrice tags: - stats_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/StatsChatGptPrice' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/dashboard: post: summary: "Create dashboard" operationId: createStatsDashboard tags: - stats_service parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/StatsDashboardReq" responses: '201': $ref: '#/components/responses/StatsDashboard' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/dashboard/{id}: get: summary: "Get dashboard" operationId: getStatsDashboard tags: - stats_service parameters: - $ref: '#/components/parameters/dashboardID' - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/StatsDashboard' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' patch: summary: "Update dashboard" operationId: updateStatsDashboard tags: - stats_service parameters: - $ref: '#/components/parameters/dashboardID' - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/StatsDashboardReq" responses: '200': $ref: '#/components/responses/StatsDashboard' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/stats/dashboards: get: summary: "Get dashboards" operationId: getStatsDashboards tags: - stats_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/StatsDashboards' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices/app: post: summary: "Create invoices app" operationId: createInvoicesApp tags: - invoices_service parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/NewInvoicesApp" responses: '201': $ref: '#/components/responses/InvoicesAppResp' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' get: summary: "Get invoices app by project" operationId: getInvoicesApp tags: - invoices_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/InvoicesAppResp' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices/app/{id}: patch: summary: "Update invoices app" operationId: updateInvoicesApp tags: - invoices_service parameters: - $ref: '#/components/parameters/appID' requestBody: $ref: "#/components/requestBodies/InvoicesAppUpdate" responses: '200': $ref: '#/components/responses/InvoicesAppResp' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' delete: summary: "Delete invoices app" operationId: deleteInvoicesApp tags: - invoices_service parameters: - $ref: '#/components/parameters/appID' responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices/app/{id}/webhook: post: summary: "Create webhook for app" operationId: createInvoicesAppWebhook tags: - invoices_service parameters: - $ref: '#/components/parameters/appID' requestBody: $ref: "#/components/requestBodies/InvoiceWebhook" responses: '200': $ref: '#/components/responses/InvoicesAppResp' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices/app/{id}/webhook/{webhook_id}: patch: summary: "Update webhook for app" operationId: updateInvoicesAppWebhook tags: - invoices_service parameters: - $ref: '#/components/parameters/appID' - $ref: '#/components/parameters/webhookID' requestBody: $ref: "#/components/requestBodies/InvoiceWebhook" responses: '200': $ref: '#/components/responses/InvoicesAppResp' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' delete: summary: "Delete webhook for app" operationId: deleteInvoicesAppWebhook tags: - invoices_service parameters: - $ref: '#/components/parameters/appID' - $ref: '#/components/parameters/webhookID' responses: '200': $ref: '#/components/responses/InvoicesAppResp' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices/token: get: summary: "Get invoices app token" operationId: getInvoicesAppToken tags: - invoices_service parameters: - $ref: '#/components/parameters/queryAppID' responses: '200': $ref: '#/components/responses/InvoicesAppToken' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' patch: summary: "Regenerate invoices app token" operationId: regenerateInvoicesAppToken tags: - invoices_service parameters: - $ref: '#/components/parameters/queryAppID' responses: '200': $ref: '#/components/responses/InvoicesAppToken' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices/invoice: post: summary: "Create invoice" operationId: createInvoicesInvoice tags: - invoices_service parameters: - description: App ID in: query name: app_id required: false schema: type: integer format: uint32 requestBody: $ref: "#/components/requestBodies/InvoiceCreate" responses: '201': $ref: '#/components/responses/InvoicesInvoiceResponse' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices: get: summary: "Get invoices" operationId: getInvoices tags: - invoices_service parameters: - $ref: '#/components/parameters/queryAppID' - $ref: '#/components/parameters/queryLimit' - $ref: '#/components/parameters/queryOffset' - $ref: '#/components/parameters/queryFieldOrder' - $ref: '#/components/parameters/queryTypeOrder' - $ref: '#/components/parameters/queryInvoicesSearchID' - $ref: '#/components/parameters/queryFilterStatus' - $ref: '#/components/parameters/queryCryptoCurrency' - $ref: '#/components/parameters/queryFilterOverpayment' - $ref: '#/components/parameters/queryStartDate' - $ref: '#/components/parameters/queryEndDate' responses: '200': $ref: '#/components/responses/Invoices' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices/{id}: get: summary: "Get invoice" operationId: getInvoicesInvoice tags: - invoices_service parameters: - $ref: '#/components/parameters/invoiceID' - description: App ID in: query name: app_id required: false schema: type: integer format: uint32 responses: '200': $ref: '#/components/responses/InvoicesInvoiceResponse' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' patch: summary: "Update invoice" operationId: updateInvoicesInvoice tags: - invoices_service parameters: - $ref: '#/components/parameters/invoiceID' - $ref: '#/components/parameters/queryAppID' requestBody: $ref: "#/components/requestBodies/InvoiceChange" responses: '200': $ref: '#/components/responses/InvoicesInvoiceResponse' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices/{id}/cancel: patch: summary: "Cancel invoice" operationId: cancelInvoicesInvoice tags: - invoices_service parameters: - $ref: '#/components/parameters/invoiceID' - $ref: '#/components/parameters/queryAppID' responses: '200': $ref: '#/components/responses/InvoicesInvoiceResponse' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices/stats: get: summary: "Get invoices stats" operationId: getInvoicesStats parameters: - $ref: '#/components/parameters/queryAppID' - $ref: '#/components/parameters/queryCryptoCurrency' tags: - invoices_service responses: '200': $ref: '#/components/responses/InvoicesStats' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/invoices/export: get: summary: "Export invoices to csv file" operationId: exportInvoicesCsv parameters: - $ref: '#/components/parameters/queryAppID' - $ref: '#/components/parameters/queryFieldOrder' - $ref: '#/components/parameters/queryTypeOrder' - $ref: '#/components/parameters/queryInvoicesSearchID' - $ref: '#/components/parameters/queryFilterStatus' - $ref: '#/components/parameters/queryFilterOverpayment' - $ref: '#/components/parameters/queryStartDate' - $ref: '#/components/parameters/queryEndDate' - $ref: '#/components/parameters/queryCryptoCurrency' tags: - invoices_service responses: '200': $ref: '#/components/responses/InvoicesExport' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/cnft/config: get: summary: "Get cNFT config" operationId: getCNftConfig tags: - cnft_service responses: '200': $ref: '#/components/responses/CnftCollectionConfig' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/cnft/collection/{account}: get: summary: "Get info about cNFT collection account" operationId: getInfoCNftCollectionAccount tags: - cnft_service parameters: - $ref: '#/components/parameters/account' responses: '200': $ref: '#/components/responses/CnftCollectionInfo' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/cnft/indexing: post: summary: "Indexing cNFTs" operationId: indexingCNftCollection tags: - cnft_service parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/CnftIndexing" responses: '200': $ref: '#/components/responses/CnftCollectionInfo' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/cnft/paid: get: summary: "Get paid cNFT collections" operationId: getPaidCNftCollections tags: - cnft_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/CnftCollections' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/mintless/config: get: summary: "Get mintless jetton config" operationId: getMintlessJettonConfig tags: - mintless_jetton_service responses: '200': $ref: '#/components/responses/MintlessJettonConfig' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/mintless/paid: get: summary: "Get paid mintless jettons" operationId: getPaidMintlessJettons tags: - mintless_jetton_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/MintlessJettons' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/mintless/{account}: get: summary: "Check if a mintless jetton exists" operationId: checkExistsMintlessJetton tags: - mintless_jetton_service parameters: - $ref: '#/components/parameters/account' responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/minter/owner/jettons: get: summary: "Get jettons by owner" operationId: getJettonsByOwner tags: - minter_jetton_media parameters: - $ref: '#/components/parameters/queryAddress' responses: '200': $ref: '#/components/responses/Accounts' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/minter/jetton/media: post: summary: "Upload jetton media" operationId: uploadMinterJettonMedia tags: - minter_jetton_media requestBody: $ref: "#/components/requestBodies/JettonMedia" responses: '201': $ref: '#/components/responses/URL' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/minter/jetton/meta: post: summary: "Upload jetton meta" operationId: uploadMinterJettonMeta tags: - minter_jetton_media requestBody: $ref: "#/components/requestBodies/JettonMeta" responses: '201': $ref: '#/components/responses/URL' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/airdrops/jettons: get: summary: "Get all jetton airdrops for a specific project id" operationId: getJettonAirdrops tags: - airdrops parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/JettonAirdrops' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' post: summary: "Create new jetton airdrop" operationId: createJettonAirdrop tags: - airdrops parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/NewJettonAirdrop" responses: '201': $ref: '#/components/responses/JettonAirdropCreated' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/sites: post: summary: "Create a Ton Site" operationId: createTonSite tags: - ton_sites_service parameters: - $ref: '#/components/parameters/queryProjectID' requestBody: $ref: "#/components/requestBodies/NewTonSiteDomain" responses: '201': $ref: '#/components/responses/TonSiteCreated' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' get: summary: "Get Ton Sites" operationId: getTonSites tags: - ton_sites_service parameters: - $ref: '#/components/parameters/queryProjectID' responses: '200': $ref: '#/components/responses/TonSites' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/sites/{id}: delete: summary: "Delete the Ton Site" operationId: deleteTonSite tags: - ton_sites_service parameters: - $ref: '#/components/parameters/queryProjectID' - $ref: '#/components/parameters/siteID' responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' /api/v1/services/sites/{id}/endpoints: post: summary: "Add endpoints to the Ton Site" operationId: updateTonSitesEndpoints tags: - ton_sites_service parameters: - $ref: '#/components/parameters/queryProjectID' - $ref: '#/components/parameters/siteID' requestBody: $ref: "#/components/requestBodies/TonSiteEndpoints" responses: '200': $ref: '#/components/responses/Ok' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/UnauthorizedError' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalError' components: securitySchemes: BearerAuth: type: http scheme: bearer parameters: queryID: description: Query ID in: path name: id required: true schema: type: string example: "03cfc582-b1c3-410a-a9a7-1f3afe326b3b" tokenID: description: Token ID in: path name: id required: true schema: type: integer format: uint32 projectID: description: Project ID in: path name: id required: true schema: type: integer format: uint32 userID: description: User ID in: path name: user_id required: true schema: type: integer format: uint32 promoCode: description: Promo code in: path name: promo_code required: true schema: type: string appID: description: App ID in: path name: id required: true schema: type: integer format: uint32 webhookID: description: Webhook ID in: path name: webhook_id required: true schema: type: string tierID: description: Tier ID in: path name: id required: true schema: type: integer format: uint32 example: 1 invoiceID: description: Invoice ID in: path name: id required: true schema: type: string example: "60ffb075" dashboardID: description: Dashboard ID in: path name: id required: true schema: type: string example: "03cfc582-b1c3-410a-a9a7-1f3afe326b3b" siteID: description: Site ID in: path name: id required: true schema: type: string example: "03cfc582" account: description: Account in: path name: account required: true schema: type: string example: "0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" queryProjectID: description: Project ID in: query name: project_id required: true schema: type: integer format: uint32 queryLiteproxyServer: description: Liteproxy server address in: query name: server required: true schema: type: string example: "1.2.3.4:123" queryChain: description: chain in: query name: chain required: false schema: $ref: '#/components/schemas/Chain' queryInvoicesSearchID: description: Search ID in: query name: search_id required: false schema: type: string minLength: 1 queryFilterStatus: description: Filter status in: query name: filter_status required: false schema: type: array items: $ref: '#/components/schemas/InvoiceStatus' queryFilterOverpayment: description: Overpayment in: query name: overpayment required: false schema: type: boolean default: false queryLimit: description: Limit in: query name: limit required: false schema: type: integer default: 100 example: 50 queryOffset: description: Offset in: query name: offset required: false schema: type: integer example: 100 beforeBillingTx: description: Before Billing TX in: query name: before_tx required: false schema: type: string format: uuid example: "03cfc582-b1c3-410a-a9a7-1f0afe116b3b" queryFieldOrder: description: Field in: query name: field_order required: false schema: $ref: '#/components/schemas/InvoiceFieldOrder' queryTypeOrder: description: Type order in: query name: type_order required: false schema: type: string enum: - asc - desc example: "desc" queryAppID: description: App ID in: query name: app_id required: true schema: type: integer format: uint32 queryCryptoCurrency: description: Currency in: query name: currency required: false schema: $ref: '#/components/schemas/CryptoCurrency' queryLang: description: Lang in: query name: lang required: false schema: $ref: '#/components/schemas/Lang' queryCurrency: description: Currency in: query name: currency required: false schema: $ref: '#/components/schemas/Currencies' queryStartDateRequired: description: Start date in: query name: start required: true schema: type: integer format: int64 queryEndDateRequired: description: End date in: query name: end required: true schema: type: integer format: int64 queryStartDate: description: Start date in: query name: start schema: type: integer format: int64 queryEndDate: description: End date in: query name: end schema: type: integer format: int64 queryStep: description: Step in: query name: step schema: type: integer format: int64 default: 0 queryDetailed: description: Show more detailed information in: query name: detailed schema: type: boolean example: true queryGrafanaDashboard: in: query name: dashboard schema: type: string enum: - tonapi_token - tonapi_webhook - liteproxy_requests - liteproxy_connections default: tonapi_token queryOnlyBetween: in: query name: only_between schema: type: boolean default: false queryAddresses: description: Addresses in: query name: addresses required: true schema: type: string example: "EQ..fz,EQ...fa" queryAddress: description: Address in: query name: address required: true schema: type: string example: "EQ..fz" queryRepeatInterval: in: query name: repeat_interval required: false description: "cyclic execution of requests" schema: type: integer format: int32 default: 0 queryStatsType: in: query name: type required: false schema: type: array items: $ref: '#/components/schemas/StatsQueryType' queryStatsIsRepetitive: in: query name: is_repetitive required: false schema: type: boolean requestBodies: NewJettonAirdrop: required: true description: "Data that is expected" content: application/json: schema: type: object required: - api_id - name properties: api_id: type: string name: type: string TgAuthExpected: description: "Data that is expected from Telegram" content: application/json: schema: $ref: '#/components/schemas/TgAuth' NewTonSiteDomain: description: "Data that is expected" content: application/json: schema: type: object required: - domain properties: domain: type: string TonSiteEndpoints: description: "Data that is expected" content: application/json: schema: type: array items: type: string ProjectTonApiTokenReq: description: "Data that is expected" content: application/json: schema: type: object required: - name properties: name: type: string example: "My token" limit_rps: type: number example: 5 maximum: 100000 minimum: 0 origins: type: array items: type: string capabilities: type: array items: $ref: '#/components/schemas/TokenCapability' ProjectCreate: description: "Data that is expected" content: multipart/form-data: schema: type: object required: - name properties: name: type: string example: "Test Project" image: type: string format: binary ProjectUpdate: description: "Data that is expected" content: multipart/form-data: schema: type: object properties: name: type: string example: "Test Project" image: type: string format: binary remove_image: type: boolean default: false NewParticipant: description: "Data that is expected" content: application/json: schema: type: object required: - user_id properties: user_id: type: integer format: uint32 NewTier: description: "Data that is expected" content: application/json: schema: type: object required: - tier_id properties: tier_id: type: integer format: uint32 example: 1 ProjectMessagesBuyPackage: description: "Data that is expected" content: application/json: schema: type: object required: - id properties: id: type: integer format: uint32 example: 1 ProjectMessagesApp: description: "Data that is expected" content: application/json: schema: required: - url - name type: object properties: url: type: string example: "https://my_dapp.io" name: type: string example: "My dapp" image: type: string example: "https://my_dapp.io/avatar.png" ProjectMessagesAppVerify: description: "Data that is expected" content: application/json: schema: required: - payload type: object properties: payload: type: string example: "DkPazejgbwoAAAAAZFNueLGu-1GCWVgvk5Av_1EK2Ml5LzQItlrivLPtTPMsu5A2" ProjectMessagesSendPush: description: "Data that is expected" content: application/json: schema: required: - message type: object properties: title: type: string example: "Test title" message: type: string example: "Test message" link: type: string description: "Link for user action, the link will open in Tonkeeper dApp Browser" example: "https://my_app.com/event" addresses: type: array items: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" address: type: string description: "If the address has not been transmitted, then push messages will be sent to all users" example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" TestnetBuyCoins: description: "Data that is expected" content: application/json: schema: type: object required: - address - coins properties: address: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" coins: type: integer format: int64 description: "nano ton are expected" example: 1000000000 MessagesProjectCharge: description: "Data that is expected" content: application/json: schema: type: object required: - app_id - success_delivery - message properties: app_id: type: integer format: uint32 example: 1647024163 success_delivery: type: integer format: int32 example: 10000000 message: type: string example: "test message" addresses: type: array items: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" Feedback: description: "Data that is expected" content: application/json: schema: type: object additionalProperties: type: string example: key1: "name" key2: "test" StatsChatGpt: description: "Data that is expected" content: application/json: schema: type: object required: - message properties: message: type: string context: type: string StatsQueryUpdate: description: "Data that is expected" content: application/json: schema: type: object properties: name: type: string example: "test query" repeat_interval: type: integer format: int32 example: 10 description: "cyclic execution of requests" StatsQueryReq: description: "Data that is expected" content: application/json: schema: type: object required: - project_id properties: project_id: type: integer format: uint32 example: 1647024163 name: type: string example: "test query" query: type: string example: "select id from test" gpt_message: type: string example: "give me random id from accounts table" repeat_interval: type: integer format: int32 example: 10 description: "cyclic execution of requests" NewInvoicesApp: description: "Data that is expected" content: application/json: schema: type: object required: - name - recipient_address properties: name: type: string example: "Test name" description: type: string example: "Test description" webhooks: type: array items: type: string recipient_address: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" InvoicesAppUpdate: description: "Data that is expected" content: application/json: schema: type: object properties: name: type: string example: "Test name" description: type: string example: "Test description" recipient_address: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" InvoiceCreate: description: "Data that is expected" content: application/json: schema: type: object required: - amount - life_time properties: amount: type: string description: "nano ton are expected" example: "1000000000" life_time: type: integer format: int64 description: "seconds are expected" example: 100 description: type: string example: "Test description" currency: $ref: '#/components/schemas/CryptoCurrency' InvoiceChange: description: "Data that is expected" content: application/json: schema: type: object properties: refund_amount: type: number refunded: type: boolean InvoiceWebhook: description: "Data that is expected" content: application/json: schema: type: object required: - webhook properties: webhook: type: string example: "https://mydapp.com/api/handle-invoice-change" StatsDashboardReq: description: "Data that is expected" content: application/json: schema: type: object properties: name: type: string example: "Test" public: type: boolean default: false active: type: boolean default: true attributes: additionalProperties: true example: { "first_key": "1", "second_key": 2 } query_ids: type: array items: type: string CnftIndexing: description: "Data that is expected" content: application/json: schema: type: object required: - account - count properties: account: type: string example: "0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" count: type: integer format: uint32 JettonMedia: description: "Data that is expected" content: multipart/form-data: schema: type: object required: - media properties: media: type: string format: binary JettonMeta: description: "Data that is expected" content: application/json: schema: type: object required: - meta properties: meta: additionalProperties: true example: { } headers: setCookie: required: true schema: type: string accessControlAllowCredentials: required: false schema: type: string accessControlAllowOrigin: required: false schema: type: string accessControlAllowHeaders: required: false schema: type: string schemas: Ok: type: object required: - ok properties: ok: type: boolean example: true URL: type: object required: - url properties: url: type: string example: "ipfs://bafybeifxdx73d2wlllucguvcejwecpdo4gudribllehw6te7pkjfgu5d4e" Error: type: object required: - error - code properties: error: type: string description: "Error message" code: type: integer description: "backend error code" enum: [ 1, 2, 3 ] x-enum-varnames: [ ] User: type: object required: - id - is_ban - referral_id - referrals_count - date_create properties: id: type: integer format: int64 example: 1464363297 tg_id: type: integer format: int64 example: 1260831881 description: "ID from the Telegram service" wallet_address: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" description: "TON wallet address" first_name: type: string example: "Test" last_name: type: string example: "Testov" avatar: type: string example: "https://test.io/my_face.png" is_ban: type: boolean default: false example: false invited_by: type: integer format: uint32 example: 1464363297 referral_id: type: string referrals_count: type: integer format: int32 example: 10 date_create: type: integer format: int64 example: 1678275313 TgAuth: type: object required: - id - hash - auth_date properties: id: type: integer format: int64 example: 1261871881 first_name: type: string example: "Test" last_name: type: string example: "Test" photo_url: type: string example: "https://test_image.png" username: type: string example: "test" hash: type: string example: "cd0e201bf7328535343301f428e51f01084a3e2a3822f4843d86b540bbebfe15" auth_date: type: integer format: int64 example: 1678275313 referral_id: type: string example: "ref_test" TokenCapability: type: string enum: - "webhooks" - "cocoon" TonConnectProof: type: object required: - address - proof properties: promo_code: type: string address: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" proof: type: object properties: timestamp: type: integer format: int64 example: "1678275313" domain: type: string signature: type: string payload: type: string example: "84jHVNLQmZsAAAAAZB0Zryi2wqVJI-KaKNXOvCijEi46YyYzkaSHyJrMPBMOkVZa" state_init: type: string Tier: type: object required: - id - name - rpc - usd_price - instant_payment properties: id: type: integer format: uint32 example: 1 name: type: string example: "Test tier" rpc: type: number example: 5 usd_price: type: number example: 100 instant_payment: type: boolean example: false AppTier: type: object required: - id - name - rpc - long_polling_sub - entity_per_conn - capabilities - usd_price - date_create - instant_payment properties: id: type: integer format: uint32 example: 1 name: type: string example: "Test tier" rpc: type: number example: 5 usd_price: type: number example: 100 long_polling_sub: type: integer example: 50 entity_per_conn: type: integer example: 10 capabilities: type: array items: type: string example: [ "mempool" ] next_payment: type: integer format: int64 example: 1690889913000 date_create: type: integer format: int64 example: 1690889913000 instant_payment: type: boolean example: false BillingTransaction: type: object required: - id - type - amount - currency - info - description - created_at properties: id: type: string format: uuid example: "03cfc582-b1c3-410a-a9a7-1f0afe116b3b" type: type: string enum: - deposit - charge amount: description: "deposited amount" type: string x-js-format: bigint example: "123000000000" currency: $ref: '#/components/schemas/CryptoCurrency' info: $ref: '#/components/schemas/BillingTxInfo' description: type: string created_at: type: integer format: int64 example: 1690889913000 BillingTxInfo: oneOf: - $ref: '#/components/schemas/TonapiMonthlyPaymentMeta' - $ref: '#/components/schemas/TonapiInstantPaymentMeta' - $ref: '#/components/schemas/TonapiChangeTierMeta' - $ref: '#/components/schemas/LiteproxyMonthlyPaymentMeta' - $ref: '#/components/schemas/LiteproxyChangeTierMeta' - $ref: '#/components/schemas/TestnetTonsPurchaseMeta' - $ref: '#/components/schemas/CnftIndexingPaymentMeta' - $ref: '#/components/schemas/MessagePackagePurchaseMeta' - $ref: '#/components/schemas/ChatGptRequestPaymentMeta' - $ref: '#/components/schemas/PromoCodeActivationMeta' - $ref: '#/components/schemas/StreamingApiPaymentMeta' - $ref: '#/components/schemas/CocoonApiPaymentMeta' - $ref: '#/components/schemas/ReplenishmentOfDepositMeta' - $ref: '#/components/schemas/AnalyticsRequestPaymentMeta' - $ref: '#/components/schemas/OtherMeta' discriminator: propertyName: reason mapping: tonapi_monthly_payment: TonapiMonthlyPaymentMeta tonapi_instant_payment: TonapiInstantPaymentMeta tonapi_change_tier: TonapiChangeTierMeta liteproxy_monthly_payment: LiteproxyMonthlyPaymentMeta liteproxy_change_tier: LiteproxyChangeTierMeta testnet_tons_purchase: TestnetTonsPurchaseMeta cnft_indexing_payment: CnftIndexingPaymentMeta message_package_purchase: MessagePackagePurchaseMeta chatgpt_request_payment: ChatGptRequestPaymentMeta promo_code_activation: PromoCodeActivationMeta streaming_api_payment: StreamingApiPaymentMeta cocoon_api_payment: CocoonApiPaymentMeta replenishment_of_deposit: ReplenishmentOfDepositMeta analytics_request_payment: AnalyticsRequestPaymentMeta other: OtherMeta TonapiMonthlyPaymentMeta: type: object properties: tier: $ref: '#/components/schemas/Tier' TonapiInstantPaymentMeta: type: object properties: tier: $ref: '#/components/schemas/Tier' TonapiChangeTierMeta: type: object properties: new_tier: $ref: '#/components/schemas/Tier' LiteproxyMonthlyPaymentMeta: type: object properties: tier: $ref: '#/components/schemas/LiteproxyTier' LiteproxyChangeTierMeta: type: object properties: new_tier: $ref: '#/components/schemas/LiteproxyTier' TestnetTonsPurchaseMeta: type: object properties: testnet_coins: type: string x-js-format: bigint CnftIndexingPaymentMeta: type: object properties: collection: type: string count: type: integer format: int32 MessagePackagePurchaseMeta: type: object properties: count: type: integer format: int32 PromoCodeActivationMeta: type: object properties: promo_code: type: string StreamingApiPaymentMeta: type: object properties: period: type: integer format: int32 CocoonApiPaymentMeta: type: object ReplenishmentOfDepositMeta: type: object properties: tx_hash: type: string AnalyticsRequestPaymentMeta: type: object properties: time: type: integer format: int32 ChatGptRequestPaymentMeta: type: object OtherMeta: type: object Balance: type: object required: - amount - promo_amount properties: amount: description: "deposited amount" type: string x-js-format: bigint example: "123000000000" promo_amount: type: string x-js-format: bigint example: "12300000000" Charge: type: object required: - id - service - amount - exchange_rate - date_create properties: id: type: string example: "742af494-e2cd-441f-98e8-ac6075280eff" service: $ref: '#/components/schemas/ServiceName' tier_id: type: integer format: uint32 example: 1 messages_package_id: type: integer format: uint32 example: 1 testnet_price_multiplicator: type: integer format: uint32 example: 1 stats_spent_time: type: number format: float64 example: 7.8 stats_price_per_second: type: integer format: uint32 example: 1000000 stats_type_query: $ref: '#/components/schemas/StatsQueryType' cnft_indexing_price: type: integer format: int64 example: 1000000 cnft_count: type: integer format: uint32 example: 1000000 cnft_collections: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" amount: type: integer format: int64 example: 1000000000 exchange_rate: type: number example: 2.25 date_create: type: integer format: int64 example: 1690889913000 Participant: type: object required: - id - permissions - date_create properties: id: type: integer format: uint32 first_name: type: string example: "Test" last_name: type: string example: "Testov" permissions: type: array items: type: string enum: - admin - user avatar: type: string example: "https://test.io/my_face.png" Project: type: object required: - id - name - capabilities - date_create properties: id: type: integer format: uint32 example: 1 name: type: string example: "Test project" avatar: type: string example: "https://tonapi.io/static/test.png" capabilities: type: array items: type: string enum: - invoices - stats date_create: type: integer format: int64 example: 1690889913000 ProjectTonApiToken: type: object required: - id - name - token - origins - date_create properties: id: type: integer format: int64 example: 1 name: type: string example: "My token" limit_rps: type: number example: 5 token: type: string example: "AE5TZRWIIOR2O2YAAAAGFP2HEWFZJYBP222A567CBF6JIL7S4RIZSCOAZRZOEW7AKMRICGQ" origins: type: array items: type: string date_create: type: integer format: int64 example: 1690889913000 capabilities: type: array items: $ref: '#/components/schemas/TokenCapability' Stats: type: object required: - result - resultType properties: result: type: array items: type: object required: - metric - values properties: metric: type: object properties: operation: type: string example: "DnsResolve" values: type: array items: additionalProperties: true example: [ 1681462656, "0.03508771929824561" ] resultType: type: string example: "matrix" MessagesPackage: type: object required: - id - name - limits - usd_price properties: id: type: integer format: uint32 example: 1 name: type: string example: "Lite" limits: type: integer example: 1000 usd_price: type: number example: 100 StatsDashboard: type: object required: - id - project_id - public - date_change - date_create properties: id: type: string name: type: string example: "Test" project_id: type: integer format: uint32 example: 1647024163 query_ids: type: array items: type: string public: type: boolean example: false attributes: additionalProperties: true example: { "first_key": "1", "second_key": 2 } date_change: type: integer format: int64 example: 1690889913000 date_create: type: integer format: int64 example: 1690889913000 MessagesApp: type: object required: - id - name - project_id - url - verify - date_create properties: id: type: integer format: uint32 example: 3652012454 name: type: string example: "MyApp-123" image: type: string example: "https://my_dapp.io/avatar.png" project_id: type: integer format: uint32 example: 1647024163 url: type: string example: "https://my_dapp.io" verify: type: boolean example: true date_create: type: integer format: int64 example: 1690889913000 StatsQueryStatus: type: string enum: - executing - success - error StatsQuery: type: object properties: name: type: string example: "test query" addresses: type: array items: type: string only_between: type: boolean example: false sql: type: string example: "select id from accounts limit 1" gpt_message: type: string example: "give me random id from accounts table" repeat_interval: type: integer format: int32 example: 10 description: "cyclic execution of requests" StatsQueryResult: type: object required: - id - status - testnet - date_create properties: id: type: string example: "03cfc582-b1c3-410a-a9a7-1f3afe326b3b" name: type: string example: "test query" status: $ref: '#/components/schemas/StatsQueryStatus' query: $ref: '#/components/schemas/StatsQuery' type: $ref: '#/components/schemas/StatsQueryType' estimate: $ref: '#/components/schemas/StatsEstimateQuery' url: type: string example: "https://sql.io/123.csv" meta_url: type: string example: "https://sql.io/123_meta.csv" spent_time: type: integer format: int64 example: 100 last_repeat_date: type: integer format: int64 example: 1690889913000 total_repetitions: type: integer format: int32 example: 5 total_usd_cost: type: number format: float64 example: 1000000000 usd_cost: type: number format: float64 example: 1000000000 error: type: string example: "invalid something" all_data_in_preview: type: boolean preview: type: array items: type: array items: type: string testnet: type: boolean example: false is_gpt: type: boolean example: false date_create: type: integer format: int64 example: 1690889913000 StatsEstimateQuery: type: object required: - approximate_time - approximate_usd_cost properties: approximate_time: type: integer format: int64 approximate_usd_cost: type: number format: float64 explain: type: string StatsQueryType: type: string enum: - graph - base_query - chat_gpt_query Lang: type: string default: en example: en ServiceName: type: string enum: - messages - stats - tonapi - testnet - cnft - liteproxy - streaming MintlessJetton: type: object required: - account properties: account: type: string example: "0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" CnftCollection: type: object required: - account - name - nft_count - minted_count - paid_indexing_count properties: account: type: string example: "0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" name: type: string example: "name" description: type: string example: "description" image: type: string example: "https://tonapi.io/collection.png" nft_count: type: integer format: uint32 minted_count: type: integer format: uint32 paid_indexing_count: type: integer format: uint32 TonSiteReduced: type: object required: - endpoints - adnl_address - private_key properties: endpoints: type: array items: type: string example: "https://lucky.io" adnl_address: type: string example: "2ccad26312767b03bfe1ed76f2c97daf8e3df957180fcab8db83614er3c528a9" private_key: type: string example: "d16f3eed38db798914907071734923fd2d24c16be6dd560b19fe6297091e925d" TonSite: type: object required: - id - domain - endpoints - adnl_address - date_create properties: id: type: string example: "60ffb075" domain: type: string example: "lucky.ton" endpoints: type: array items: type: string example: "https://lucky.io" adnl_address: type: string date_create: type: integer format: int64 example: 1690889913000 JettonAirdrop: type: object required: - id - api_id - name - date_create - version properties: id: type: string example: "03cfc582-b1c3-410a-a9a7-1f3afe326b3b" api_id: type: string example: "03cfc582-b1c3-410a-a9a7-1f3afe326b3b" name: type: string example: "My airdrop" date_create: type: integer format: int64 example: 1690889913000 version: type: integer format: int32 example: 2 InvoicesInvoice: type: object required: - id - amount - description - pay_to_address - payment_link - status - date_expire - date_change - date_create - currency properties: id: type: string example: "60ffb075" amount: type: string example: "1000000000" overpayment: type: string example: "1000000000" description: type: string example: "Test description" status: $ref: '#/components/schemas/InvoiceStatus' pay_to_address: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" paid_by_address: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" payment_link: type: string example: "https://app.tonkeeper.com/transfer/UQ....UQ" info: additionalProperties: true example: { "first_key": "1", "second_key": 2 } date_change: type: integer format: int64 example: 1690889913000 date_expire: type: integer format: int64 example: 1690889913000 date_create: type: integer format: int64 example: 1690889913000 currency: $ref: '#/components/schemas/CryptoCurrency' InvoicesApp: type: object required: - id - project_id - name - description - recipient_address - date_create properties: id: type: integer format: int64 example: 4177275498 project_id: type: integer format: int64 example: 4268870487 name: type: string example: "Test name" description: type: string example: "Test description" recipient_address: type: string example: "0:97146a46acc2654y27947f14c4a4b14273e954f78bc017790b41208b0043200b" webhooks: $ref: '#/components/schemas/InvoicesAppWebhooks' date_create: type: integer format: int64 example: 1690889913000 InvoiceStatus: type: string example: "pending" enum: - pending - paid - cancelled - expired Chain: type: string enum: - mainnet - testnet default: mainnet CryptoCurrency: type: string enum: - TON - USDT InvoiceFieldOrder: type: string example: "id" enum: - id - amount - status - life_time - description - pay_to_address - paid_by_address - date_create - date_paid InvoicesAppWebhooks: type: array items: type: object required: - id - webhook properties: id: type: string webhook: type: string example: "https://mydapp.com/api/handle-invoice-change" Currencies: type: string default: USD enum: - USD - EUR - RUB - AED - KZT - UAH - GBP - CHF - CNY - KRW - IDR - INR - JPY - TON Account: type: object required: - account properties: account: type: string example: "0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" Referral: type: object required: - id - profit properties: id: type: integer format: uint32 example: 1647024163 first_name: type: string example: 'Test' last_name: type: string example: 'Test' profit: type: integer format: int64 example: 1000000000 LiteproxyPrivateKey: type: object required: - app_id - rps - private_key - date_create properties: app_id: type: integer format: uint32 rps: type: number example: 10.0 private_key: type: string example: "da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" date_create: type: integer format: int64 example: 1690889913000 LiteproxyKey: type: object required: - server - rps - public_key - date_create properties: server: type: string example: "11.111.111.111:5050" rps: type: number example: 10.0 public_key: type: string example: "da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" date_create: type: integer format: int64 example: 1690889913000 LiteproxyTier: type: object required: - id - name - usd_price - rps properties: id: type: integer format: uint32 example: 1 name: type: string example: "Test" usd_price: type: number example: 10.0 rps: type: number example: 10.0 ProjectLiteproxyTierDetail: type: object required: - id - name - rps - usd_price - date_create properties: id: type: integer format: uint32 example: 1 name: type: string example: "Test tier" rps: type: number example: 5 usd_price: type: number example: 100 next_payment: type: integer format: int64 example: 1690889913000 date_create: type: integer format: int64 example: 1690889913000 responses: InsufficientFunds: description: "Insufficient funds" content: application/json: schema: type: object required: - error properties: error: type: string description: "Error message" NotFound: description: "The specified resource was not found" content: application/json: schema: type: object required: - error - code properties: error: type: string description: "Error message" code: type: integer description: "backend error code" InternalError: description: "Something went wrong on server side" content: application/json: schema: type: object required: - error - code properties: error: type: string description: "Error message" code: type: integer description: "backend error code" BadRequest: description: "Something went wrong on client side" content: application/json: schema: type: object required: - error - code properties: error: type: string description: "Error message" code: type: integer description: "backend error code" PaymentRequiredError: description: "Not enough funds" content: application/json: schema: type: object required: - error - need_usd properties: error: type: string description: "Error message" need_usd: type: number format: float64 description: "need USD on balance" UnauthorizedError: description: "Access token is missing or invalid" content: application/json: schema: type: object required: - error - code properties: error: type: string description: "Error message" code: type: integer description: "backend error code" URL: description: "URL" content: application/json: schema: $ref: '#/components/schemas/URL' Ok: description: "Ok" content: application/json: schema: $ref: '#/components/schemas/Ok' AuthOk: description: "Ok" content: application/json: schema: $ref: '#/components/schemas/Ok' headers: Set-Cookie: $ref: "#/components/headers/setCookie" DepositWallet: description: "Deposit wallet" content: application/json: schema: type: object required: - usdt_deposit_wallet properties: ton_deposit_wallet: type: string example: "0QB7BSerVyP9xAKnxp3QpqR8JO2HKwZhl10zsfwg7aJ281ZR" usdt_deposit_wallet: type: string example: "0QB7BSerVyP9xAKnxp3QpqR8JO2HKwZhl10zsfwg7aJ281ZR" PaymentsHistory: description: "Project payments history" content: application/json: schema: type: object required: - history - count properties: count: type: integer format: uint64 history: type: array items: $ref: '#/components/schemas/Charge' StatsChatGptAnswer: description: "Answer from ChatGPT" content: application/json: schema: type: object required: - message - valid properties: message: type: string valid: type: boolean StatsChatGptPrice: description: "Price per request for ChatGPT" content: application/json: schema: type: object required: - free_requests - used - usd_price properties: free_requests: type: integer format: int32 example: 10 used: type: integer format: int32 example: 100 usd_price: type: number format: float64 example: 0.1 ProjectTonApiStats: description: "Project TonApi stats" content: application/json: schema: type: object required: - stats properties: stats: additionalProperties: true example: { } LiteproxyPrivateKeys: description: "Private keys for the liteproxy server" content: application/json: schema: type: object required: - keys properties: keys: type: array items: $ref: '#/components/schemas/LiteproxyPrivateKey' LiteproxyKeys: description: "Keys for connecting to liteproxy servers" content: application/json: schema: type: object required: - keys properties: keys: type: array items: $ref: '#/components/schemas/LiteproxyKey' LiteproxyTiers: description: "Active tiers for the liteproxy server" content: application/json: schema: type: object required: - tiers properties: tiers: type: array items: $ref: '#/components/schemas/LiteproxyTier' ProjectLiteproxyTier: description: "Active the project tier for the liteproxy server" content: application/json: schema: type: object required: - tier properties: tier: $ref: '#/components/schemas/ProjectLiteproxyTierDetail' StatsDashboard: description: "Dashboard" content: application/json: schema: $ref: '#/components/schemas/StatsDashboard' StatsDashboards: description: "Dashboards" content: application/json: schema: type: object required: - items properties: items: type: array items: $ref: '#/components/schemas/StatsDashboard' BillingHistory: description: "Billing history" content: application/json: schema: type: object required: - history - usdt_balance properties: usdt_balance: $ref: '#/components/schemas/Balance' ton_balance: $ref: '#/components/schemas/Balance' history: type: array items: $ref: '#/components/schemas/BillingTransaction' ProjectTonApiTokenRes: description: "Project TonAPI token" content: application/json: schema: type: object required: - token properties: token: $ref: '#/components/schemas/ProjectTonApiToken' ProjectTonApiTokens: description: "Project TonAPI tokens" content: application/json: schema: required: - items type: object properties: items: type: array items: $ref: '#/components/schemas/ProjectTonApiToken' ProjectTonApiTier: description: "Project tier" content: application/json: schema: required: - tier type: object properties: tier: $ref: '#/components/schemas/AppTier' ValidChangeTier: description: "Valid change tier for project" content: application/json: schema: required: - valid type: object properties: valid: type: boolean description: "is valid" example: true unspent_money: type: number example: 0.0 details: type: string example: "there are not enough funds on your balance" ProjectRes: description: "Project" content: application/json: schema: type: object required: - project properties: project: $ref: '#/components/schemas/Project' Participants: description: "List of project participants" content: application/json: schema: type: object required: - items properties: items: type: array items: $ref: '#/components/schemas/Participant' CreatedParticipant: description: "Participant" content: application/json: schema: type: object required: - participant properties: participant: $ref: '#/components/schemas/Participant' GeneratedPayload: description: "Payload for TON Connect" content: application/json: schema: type: object required: - payload properties: payload: type: string example: "84jHVNLQmZsAAAAAZB0Zryi2wqVJI-KaKNXOvCijEi46YyYzkaSHyJrMPBMOkVZa" TonApiTiers: description: "Active TonAPI tiers" content: application/json: schema: required: - items type: object properties: items: type: array items: $ref: '#/components/schemas/Tier' Projects: description: "User projects" content: application/json: schema: required: - items type: object properties: items: type: array items: $ref: '#/components/schemas/Project' MessagesPackages: description: "Messages packages" content: application/json: schema: required: - items type: object properties: items: type: array items: $ref: '#/components/schemas/MessagesPackage' ProjectMessagesApp: description: "Messages app has been created" content: application/json: schema: required: - payload - valid_until type: object properties: payload: type: string example: "DkPazejgbwoAAAAAZFNueLGu-1GCWVgvk5Av_1EK2Ml5LzQItlrivLPtTPMsu5A2" valid_until: type: integer format: int64 example: 1683189368 ProjectMessagesApps: description: "Project messages apps" content: application/json: schema: required: - items type: object properties: items: type: array items: $ref: '#/components/schemas/MessagesApp' ProjectMessagesBalance: description: "Project messages balance" content: application/json: schema: required: - balance type: object properties: balance: type: integer format: int32 example: 100 ProjectMessagesAppToken: description: "Project messages app token" content: application/json: schema: required: - token type: object properties: token: type: string example: "TC-PUSHES_ZmUtFjYBOMhLaNZH7Q3BIv_f3ns3UP5HxwyG53pRP147nK7v-LrwwA==" ProjectMessagesStats: description: "Project messages stats" content: application/json: schema: required: - stats type: object properties: stats: type: object required: - users - sent_in_week - enable_notifications - available_messages properties: users: type: integer format: uint32 example: 10000 sent_in_week: type: integer format: int64 example: 100 enable_notifications: type: integer format: uint32 example: 100 available_messages: type: integer format: int32 example: 100 MessagesSuccessDeliveryPush: description: "Count of success delivery" content: application/json: schema: required: - success_delivery type: object properties: success_delivery: type: integer example: 1000 TestnetAvailable: description: "Available balance" content: application/json: schema: required: - balance - usd_per_testnet_ton type: object properties: balance: type: integer format: uint64 example: 1000000000 usd_per_testnet_ton: type: number format: float64 example: 0.06 MessageHash: description: "Message hash" content: application/json: schema: required: - hash type: object properties: hash: type: string example: "546e80bd41ff70ecebe22625f7db3ae48e5a24c175697a8e07899de116bec397" StatsDDL: description: "Stats db ddl" content: application/sql: schema: type: string format: binary example: create table test (...); StatsQueryHistory: description: "History of queries" content: application/json: schema: type: object required: - items - count properties: count: type: integer format: int32 example: 10 items: type: array items: $ref: '#/components/schemas/StatsQueryResult' StatsQuery: description: "Query" content: application/json: schema: $ref: '#/components/schemas/StatsQuery' StatsQueryResult: description: "Query result" content: application/json: schema: $ref: '#/components/schemas/StatsQueryResult' StatsEstimateQuery: description: "Estimate query" content: application/json: schema: $ref: '#/components/schemas/StatsEstimateQuery' InvoicesAppResp: description: "Invoices app" content: application/json: schema: required: - app type: object properties: app: $ref: '#/components/schemas/InvoicesApp' InvoicesAppToken: description: "Invoices app token" content: application/json: schema: required: - token type: object properties: token: type: string example: "TC-INVOICES_ZmUtFjYBOMhLaNZH7Q3BIv_f3ns3UP5HxwyG53pRP147nK7v-LrwwA==" Invoices: description: "Invoices" content: application/json: schema: required: - items - count type: object properties: items: type: array items: $ref: '#/components/schemas/InvoicesInvoice' count: type: integer format: int64 example: 1000 InvoicesServiceFee: description: "Service invoices fee" content: application/json: schema: required: - fee type: object properties: fee: type: integer description: "percent" example: 1 InvoicesInvoiceResponse: description: "Service invoices fee" content: application/json: schema: $ref: '#/components/schemas/InvoicesInvoice' InvoicesStats: description: "Invoices stats" content: application/json: schema: required: - stats type: object properties: stats: type: object required: - total - success_total - success_in_week - invoices_in_progress - total_amount_pending - currency properties: total: type: integer format: uint32 example: 10000 success_total: type: integer format: uint64 example: 10000 success_in_week: type: integer format: uint64 example: 10000 invoices_in_progress: type: integer format: uint32 example: 10000 total_amount_pending: type: integer format: uint64 example: 1000000000 currency: $ref: '#/components/schemas/CryptoCurrency' InvoicesExport: description: "Invoices CSV" headers: Content-Disposition: schema: type: string example: "attachment; filename=file.csv" content: application/csv: schema: type: string format: binary MintlessJettonConfig: description: "Mintless Jetton config" content: application/json: schema: type: object required: - usd_price_per_jetton properties: usd_price_per_jetton: type: number format: float64 example: 0.1 MintlessJettons: description: "Mintless Jettons" content: application/json: schema: type: object required: - jettons properties: jettons: type: array items: $ref: '#/components/schemas/MintlessJetton' CnftCollectionInfo: description: "Compress NFT collection" content: application/json: schema: $ref: '#/components/schemas/CnftCollection' CnftCollectionConfig: description: "Compress NFT config" content: application/json: schema: type: object required: - usd_price_per_nft properties: usd_price_per_nft: type: number format: float64 example: 0.01 CnftCollections: description: "cNFT collections" content: application/json: schema: type: object required: - items properties: items: type: array items: $ref: '#/components/schemas/CnftCollection' TonSites: description: "Ton Sites" content: application/json: schema: type: object required: - items properties: items: type: array items: $ref: '#/components/schemas/TonSite' TonSiteCreated: description: "Created Ton Site" content: application/json: schema: type: object required: - site properties: site: $ref: '#/components/schemas/TonSite' JettonAirdropCreated: description: "Created jetton airdrop" content: application/json: schema: type: object required: - airdrop properties: airdrop: $ref: '#/components/schemas/JettonAirdrop' UserInfo: description: "User info" content: application/json: schema: type: object required: - user properties: user: $ref: '#/components/schemas/User' TonSitesReduced: description: "Ton Sites reduced" content: application/json: schema: type: object required: - items properties: items: type: array items: $ref: '#/components/schemas/TonSiteReduced' Accounts: description: "Accounts" content: application/json: schema: type: object required: - items properties: items: type: array items: $ref: '#/components/schemas/Account' JettonAirdrops: description: "Jetton airdrops" content: application/json: schema: type: object required: - airdrops properties: airdrops: type: array items: $ref: '#/components/schemas/JettonAirdrop' UserReferrals: description: 'User referrals' content: application/json: schema: type: object required: - items - total_profit properties: items: type: array items: $ref: '#/components/schemas/Referral' total_profit: type: integer format: int64 example: 1000000000