{"openapi":"3.0.0","servers":[{"url":"https://console-api.akash.network"}],"info":{"title":"Akash Network Console API","description":"API providing data to the Akash Network Console","version":"v1"},"paths":{"/v1/wallets":{"get":{"summary":"Get a list of wallets","tags":["Wallet"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"description":"The ID of the user to get the wallets for","name":"userId","in":"query"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns a created wallet","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"userId":{"type":"string"},"creditAmount":{"type":"number"},"address":{"type":"string"},"denom":{"type":"string"},"isTrialing":{"type":"boolean"},"trialEndsAt":{"type":"string","nullable":true,"description":"When the free trial expires, or null when the wallet is no longer trialing."},"trialDurationDays":{"type":"number","nullable":true,"description":"Total length of the free trial in days, or null when the wallet is no longer trialing."},"topUpMinAmountUsd":{"type":"number","description":"Minimum USD amount accepted by the next paid top-up for this wallet."},"createdAt":{"type":"string"}},"required":["id","userId","creditAmount","address","denom","isTrialing","trialEndsAt","trialDurationDays","topUpMinAmountUsd","createdAt"]}}},"required":["data"]}}}}}}},"/v1/wallet-settings":{"get":{"summary":"Get wallet settings","operationId":"getWalletSettings","description":"Retrieves the wallet settings for the current user's wallet","tags":["WalletSetting"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Wallet settings retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"autoReloadEnabled":{"type":"boolean"},"autoReloadMode":{"type":"string","enum":["threshold","prediction"],"description":"Rule used to decide when and how much to top up."},"autoReloadThreshold":{"type":"number","description":"USD credit balance at or below which an automatic top-up is triggered."},"autoReloadAmount":{"type":"number","description":"USD amount charged to the default payment method on each automatic top-up."},"autoReloadPausedAt":{"type":"string","nullable":true,"description":"When automatic top-ups were paused because the default payment method kept being declined, or null when they are running. Changing the default payment method resumes them."}},"required":["autoReloadEnabled","autoReloadMode","autoReloadThreshold","autoReloadAmount","autoReloadPausedAt"]}},"required":["data"]}}}},"404":{"description":"UserWallet Not Found"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]},"post":{"summary":"Create wallet settings","operationId":"createWalletSettings","description":"Creates wallet settings for a user wallet","tags":["WalletSetting"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"autoReloadEnabled":{"type":"boolean"},"autoReloadMode":{"type":"string","enum":["threshold","prediction"],"description":"Rule used to decide when and how much to top up: `threshold` charges the fixed amount as soon as the balance reaches the threshold, `prediction` covers the next 7 days of projected spend. Defaults to `prediction` on create when omitted; left unchanged on update."},"autoReloadThreshold":{"type":"number","minimum":10,"maximum":10000,"description":"USD credit balance at or below which an automatic top-up is triggered (minimum 10, maximum 10000). Defaults are applied on create when omitted."},"autoReloadAmount":{"type":"number","minimum":25,"maximum":10000,"description":"USD amount charged on each automatic top-up (minimum 25, maximum 10000). Defaults are applied on create when omitted."}},"required":["autoReloadEnabled"]}},"required":["data"]}}}},"responses":{"200":{"description":"Wallet settings created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"autoReloadEnabled":{"type":"boolean"},"autoReloadMode":{"type":"string","enum":["threshold","prediction"],"description":"Rule used to decide when and how much to top up."},"autoReloadThreshold":{"type":"number","description":"USD credit balance at or below which an automatic top-up is triggered."},"autoReloadAmount":{"type":"number","description":"USD amount charged to the default payment method on each automatic top-up."},"autoReloadPausedAt":{"type":"string","nullable":true,"description":"When automatic top-ups were paused because the default payment method kept being declined, or null when they are running. Changing the default payment method resumes them."}},"required":["autoReloadEnabled","autoReloadMode","autoReloadThreshold","autoReloadAmount","autoReloadPausedAt"]}},"required":["data"]}}}},"404":{"description":"UserWallet Not Found"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]},"put":{"summary":"Update wallet settings","operationId":"updateWalletSettings","description":"Updates wallet settings for a user wallet","tags":["WalletSetting"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"autoReloadEnabled":{"type":"boolean"},"autoReloadMode":{"type":"string","enum":["threshold","prediction"],"description":"Rule used to decide when and how much to top up: `threshold` charges the fixed amount as soon as the balance reaches the threshold, `prediction` covers the next 7 days of projected spend. Defaults to `prediction` on create when omitted; left unchanged on update."},"autoReloadThreshold":{"type":"number","minimum":10,"maximum":10000,"description":"USD credit balance at or below which an automatic top-up is triggered (minimum 10, maximum 10000). Defaults are applied on create when omitted."},"autoReloadAmount":{"type":"number","minimum":25,"maximum":10000,"description":"USD amount charged on each automatic top-up (minimum 25, maximum 10000). Defaults are applied on create when omitted."}},"required":["autoReloadEnabled"]}},"required":["data"]}}}},"responses":{"200":{"description":"Wallet settings updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"autoReloadEnabled":{"type":"boolean"},"autoReloadMode":{"type":"string","enum":["threshold","prediction"],"description":"Rule used to decide when and how much to top up."},"autoReloadThreshold":{"type":"number","description":"USD credit balance at or below which an automatic top-up is triggered."},"autoReloadAmount":{"type":"number","description":"USD amount charged to the default payment method on each automatic top-up."},"autoReloadPausedAt":{"type":"string","nullable":true,"description":"When automatic top-ups were paused because the default payment method kept being declined, or null when they are running. Changing the default payment method resumes them."}},"required":["autoReloadEnabled","autoReloadMode","autoReloadThreshold","autoReloadAmount","autoReloadPausedAt"]}},"required":["data"]}}}},"404":{"description":"UserWallet Not Found"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]},"delete":{"summary":"Delete wallet settings","operationId":"deleteWalletSettings","description":"Deletes wallet settings for a user wallet","tags":["WalletSetting"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"204":{"description":"Wallet settings deleted successfully"},"404":{"description":"UserWallet Not Found"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/tx":{"post":{"summary":"Signs a transaction via a user managed wallet","tags":["Wallet"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"},"messages":{"type":"array","items":{"type":"object","properties":{"typeUrl":{"type":"string","enum":["/akash.deployment.v1beta4.MsgCreateDeployment","/akash.cert.v1.MsgCreateCertificate","/akash.market.v1beta5.MsgCreateLease","/akash.deployment.v1beta4.MsgUpdateDeployment","/akash.deployment.v1beta4.MsgCloseDeployment","/akash.escrow.v1.MsgAccountDeposit"]},"value":{"type":"string"}},"required":["typeUrl","value"]},"minItems":1}},"required":["userId","messages"]}},"required":["data"]}}}},"responses":{"200":{"description":"Returns a signed transaction","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"code":{"type":"number"},"transactionHash":{"type":"string"},"rawLog":{"type":"string"}},"required":["code","transactionHash","rawLog"]}},"required":["data"]}}}},"400":{"description":"A new deployment needs a project (`project_required`), a message type cannot be signed in an organization (`unsupported_message`), a deposit names no deployment or a fractional amount (`invalid_deposit`), or a deposit's denomination cannot be counted against a project budget (`unsupported_deposit_denom`)"},"403":{"description":"A deployment is filed in a project the caller cannot change, or a caller limited to some projects creates a certificate (`project_forbidden`), a deposit would take its project past its monthly budget (`project_budget_exceeded`), or a message acts for another account than the organization's wallet (`message_signer_mismatch`)"},"503":{"description":"A deposit could not be priced against its project's budget (`deposit_price_unavailable`). Transient and worth retrying"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/usage/history":{"get":{"summary":"Get historical data of billing and usage for a wallet address.","tags":["Billing"],"security":[],"parameters":[{"schema":{"type":"string","description":"The wallet address to get billing and usage data for","example":"akash18andxgtd6r08zzfpcdqg9pdr6smks7gv76tyt6"},"required":true,"name":"address","in":"query"},{"schema":{"type":"string","format":"date","description":"Start date (YYYY-MM-DD), inclusive. Defaults to a 30-day window ending at endDate","example":"2024-01-01"},"required":false,"name":"startDate","in":"query"},{"schema":{"type":"string","format":"date","description":"End date (YYYY-MM-DD), inclusive. Defaults to today (UTC)","example":"2024-01-31"},"required":false,"name":"endDate","in":"query"}],"responses":{"200":{"description":"Returns billing and usage data","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Date in YYYY-MM-DD format","example":"2024-01-15"},"activeDeployments":{"type":"number","description":"Number of active deployments on this date","example":3},"dailyAktSpent":{"type":"number","description":"AKT tokens spent on this date","example":12.5},"totalAktSpent":{"type":"number","description":"Cumulative AKT tokens spent up to this date","example":125.75},"dailyUsdcSpent":{"type":"number","description":"USDC spent on this date","example":5.25},"totalUsdcSpent":{"type":"number","description":"Cumulative USDC spent up to this date","example":52.5},"dailyActSpent":{"type":"number","description":"ACT spent on this date (includes legacy USDC)","example":5.25},"totalActSpent":{"type":"number","description":"Cumulative ACT spent up to this date (includes legacy USDC)","example":52.5},"dailyUsdSpent":{"type":"number","description":"Total USD value spent on this date (AKT + USDC)","example":17.75},"totalUsdSpent":{"type":"number","description":"Cumulative USD value spent up to this date","example":178.25}},"required":["date","activeDeployments","dailyAktSpent","totalAktSpent","dailyUsdcSpent","totalUsdcSpent","dailyActSpent","totalActSpent","dailyUsdSpent","totalUsdSpent"]}}}}},"400":{"description":"Invalid address format or invalid date range: dates must be YYYY-MM-DD, startDate must not be after endDate and the range cannot exceed 366 days"}}}},"/v1/usage/history/stats":{"get":{"summary":"Get historical usage stats for a wallet address.","tags":["Billing"],"security":[],"parameters":[{"schema":{"type":"string","description":"The wallet address to get billing and usage data for","example":"akash18andxgtd6r08zzfpcdqg9pdr6smks7gv76tyt6"},"required":true,"name":"address","in":"query"},{"schema":{"type":"string","format":"date","description":"Start date (YYYY-MM-DD), inclusive. Defaults to a 30-day window ending at endDate","example":"2024-01-01"},"required":false,"name":"startDate","in":"query"},{"schema":{"type":"string","format":"date","description":"End date (YYYY-MM-DD), inclusive. Defaults to today (UTC)","example":"2024-01-31"},"required":false,"name":"endDate","in":"query"}],"responses":{"200":{"description":"Returns usage stats data","content":{"application/json":{"schema":{"type":"object","properties":{"totalSpent":{"type":"number","description":"Total amount spent in USD","example":1234.56},"averageSpentPerDay":{"type":"number","description":"Average spending per day in USD","example":12.34},"totalDeployments":{"type":"number","description":"Total number of deployments deployed","example":15},"averageDeploymentsPerDay":{"type":"number","description":"Average number of deployments deployed per day","example":1.5}},"required":["totalSpent","averageSpentPerDay","totalDeployments","averageDeploymentsPerDay"]}}}},"400":{"description":"Invalid address format or invalid date range: dates must be YYYY-MM-DD, startDate must not be after endDate and the range cannot exceed 366 days"}}}},"/v1/register-user":{"post":{"summary":"Registers a new user","tags":["Users"],"security":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"wantedUsername":{"type":"string"},"email":{"type":"string"},"emailVerified":{"type":"boolean"},"subscribedToNewsletter":{"type":"boolean"}},"required":["wantedUsername","email","emailVerified"]}}}},"responses":{"200":{"description":"Returns the registered user","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"emailVerified":{"type":"boolean"},"stripeCustomerId":{"type":"string","nullable":true},"bio":{"type":"string","nullable":true},"subscribedToNewsletter":{"type":"boolean"},"youtubeUsername":{"type":"string","nullable":true},"twitterUsername":{"type":"string","nullable":true},"githubUsername":{"type":"string","nullable":true},"onboardingSkippedAt":{"type":"string","nullable":true,"format":"date-time"},"fairUsePolicyAcceptedAt":{"type":"string","nullable":true,"format":"date-time"},"productUpdatesUnsubscribedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","userId","username","email","emailVerified","subscribedToNewsletter"]},"isNewUser":{"type":"boolean"}},"required":["data","isNewUser"]}}}}}}},"/v1/user/me":{"get":{"summary":"Retrieves the logged in user","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Returns the logged in user","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"emailVerified":{"type":"boolean"},"stripeCustomerId":{"type":"string","nullable":true},"bio":{"type":"string","nullable":true},"subscribedToNewsletter":{"type":"boolean"},"youtubeUsername":{"type":"string","nullable":true},"twitterUsername":{"type":"string","nullable":true},"githubUsername":{"type":"string","nullable":true},"onboardingSkippedAt":{"type":"string","nullable":true,"format":"date-time"},"fairUsePolicyAcceptedAt":{"type":"string","nullable":true,"format":"date-time"},"productUpdatesUnsubscribedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","userId","username","email","emailVerified","subscribedToNewsletter"]}},"required":["data"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/user/byUsername/{username}":{"get":{"summary":"Get user by username","tags":["Users"],"security":[],"parameters":[{"schema":{"type":"string"},"required":true,"name":"username","in":"path"}],"responses":{"200":{"description":"Returns user profile","content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"},"bio":{"type":"string","nullable":true}},"required":["username","bio"]}}}},"404":{"description":"User not found"}}}},"/v1/user/updateSettings":{"put":{"summary":"Update user settings","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$"},"subscribedToNewsletter":{"type":"boolean"},"bio":{"type":"string","nullable":true,"maxLength":5000},"youtubeUsername":{"type":"string","nullable":true,"maxLength":200},"twitterUsername":{"type":"string","nullable":true,"maxLength":200},"githubUsername":{"type":"string","nullable":true,"maxLength":200},"subscribedToProductUpdates":{"type":"boolean"}},"required":["username"]}}}},"responses":{"200":{"description":"Settings updated successfully"},"400":{"description":"Invalid input"},"401":{"description":"Unauthorized"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/user/checkUsernameAvailability/{username}":{"get":{"summary":"Check if username is available","tags":["Users"],"security":[],"parameters":[{"schema":{"type":"string"},"required":true,"name":"username","in":"path"}],"responses":{"200":{"description":"Returns username availability","content":{"application/json":{"schema":{"type":"object","properties":{"isAvailable":{"type":"boolean"}},"required":["isAvailable"]}}}}}}},"/v1/user/subscribeToNewsletter":{"post":{"summary":"Subscribe to newsletter","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Subscribed successfully"},"401":{"description":"Unauthorized"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/user/skipOnboarding":{"post":{"summary":"Skip onboarding","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"204":{"description":"Onboarding skipped"},"401":{"description":"Unauthorized"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/user/acceptFairUsePolicy":{"post":{"operationId":"acceptFairUsePolicy","summary":"Accept the Fair Use Policy","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"204":{"description":"Fair Use Policy accepted"},"401":{"description":"Unauthorized"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/user/template/{id}":{"get":{"summary":"Get template by ID","tags":["Users"],"security":[],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Returns template"},"400":{"description":"Invalid template ID"},"404":{"description":"Template not found"}}}},"/v1/user/saveTemplate":{"post":{"summary":"Save template","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"sdl":{"type":"string"},"title":{"type":"string","maxLength":255},"cpu":{"type":"integer","minimum":0,"maximum":9007199254740991},"ram":{"type":"integer","minimum":0,"maximum":9007199254740991},"storage":{"type":"integer","minimum":0,"maximum":9007199254740991},"isPublic":{"type":"boolean"},"description":{"type":"string","maxLength":2000},"projectId":{"type":"string","format":"uuid","description":"Project to file a new template in. A template that already exists stays in its project."}},"required":["sdl","title","cpu","ram","storage","isPublic"]}}}},"responses":{"200":{"description":"Template saved successfully"},"400":{"description":"Invalid input"},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed to change templates in this project"},"404":{"description":"Project not found"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/user/saveTemplateDesc":{"post":{"summary":"Save template description","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"description":{"type":"string"}},"required":["id","description"]}}}},"responses":{"200":{"description":"Template description saved successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed to change templates in this project"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/user/templates/{username}":{"get":{"summary":"Get templates by username","tags":["Users"],"security":[],"parameters":[{"schema":{"type":"string"},"required":true,"name":"username","in":"path"}],"responses":{"200":{"description":"Returns templates"},"404":{"description":"User not found"}}}},"/v1/user/deleteTemplate/{id}":{"delete":{"summary":"Delete template","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Template deleted successfully"},"400":{"description":"Invalid template ID"},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed to change templates in this project"}}}},"/v1/user/favoriteTemplates":{"get":{"summary":"Get favorite templates","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Returns favorite templates"},"401":{"description":"Unauthorized"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/user/addFavoriteTemplate/{templateId}":{"post":{"summary":"Add favorite template","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"templateId","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Template added to favorites"},"400":{"description":"Invalid template ID"},"401":{"description":"Unauthorized"}}}},"/v1/user/removeFavoriteTemplate/{templateId}":{"delete":{"summary":"Remove favorite template","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"templateId","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Template removed from favorites"},"400":{"description":"Invalid template ID"},"401":{"description":"Unauthorized"}}}},"/v1/user/me/initiate-deletion":{"post":{"operationId":"createAccountDeletionRequest","summary":"Emails the signed-in user a link that permanently deletes their account","tags":["Users"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"forfeitAcknowledged":{"type":"boolean"}},"required":["forfeitAcknowledged"]}},"required":["data"]}}}},"responses":{"204":{"description":"Confirmation link sent"},"400":{"description":"The account has credits and the forfeit was not acknowledged"},"401":{"description":"Unauthorized"},"403":{"description":"Requested with an API key instead of a signed-in session (`session_required`)"},"404":{"description":"Account deletion is not available"},"409":{"description":"The account has active deployments, or is the last owner of a team others belong to (`last_owner`)"},"429":{"description":"A link was sent less than a minute ago"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/user/me/confirm-deletion":{"post":{"operationId":"confirmAccountDeletion","summary":"Permanently deletes the account a deletion link was sent for","tags":["Users"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":256}},"required":["token"]}},"required":["data"]}}}},"responses":{"204":{"description":"Account deleted"},"400":{"description":"The link is invalid or expired"},"404":{"description":"Account deletion is not available"},"409":{"description":"The account has active deployments or credits nobody agreed to forfeit, or is the last owner of a team others belong to (`last_owner`)"}}}},"/v1/product-update-unsubscriptions":{"post":{"operationId":"createProductUpdateUnsubscription","summary":"Stop product update emails for the user an unsubscribe link was sent to, without signing in (RFC 8058 one-click)","tags":["Users"],"security":[],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The signed token from the unsubscribe link in a product update email"},"required":true,"name":"token","in":"query"}],"responses":{"204":{"description":"The user no longer receives product update emails"},"400":{"description":"The unsubscribe link is invalid"},"503":{"description":"Unsubscribe links are not configured"}}}},"/v1/send-verification-email":{"post":{"summary":"Resends a verification email","tags":["Users"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"userId":{"type":"string"}},"required":["userId"]}},"required":["data"]}}}},"responses":{"200":{"description":"Returns a created wallet","content":{}}}}},"/v1/send-verification-code":{"post":{"summary":"Sends a verification code to the authenticated user's email","tags":["Users"],"security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Returns the timestamp when the code was sent","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"codeSentAt":{"type":"string"}},"required":["codeSentAt"]}},"required":["data"]}}}},"429":{"description":"Too many requests"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/auth/signup":{"post":{"summary":"Creates a new user without sending a verification email","tags":["Auth"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8}},"required":["email","password"]}}}},"responses":{"204":{"description":"User created successfully"},"400":{"description":"The email or password was rejected"},"422":{"description":"Account could not be created"},"429":{"description":"Too many attempts"},"502":{"description":"Account creation is temporarily unavailable"}}}},"/v1/verify-email-code":{"post":{"summary":"Verifies the email using a 6-digit code","tags":["Users"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"code":{"type":"string","pattern":"^\\d{6}$"}},"required":["code"]}},"required":["data"]}}}},"responses":{"204":{"description":"Email verified successfully"},"400":{"description":"Invalid or expired code"},"429":{"description":"Too many attempts"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/verify-email":{"post":{"summary":"Checks if the email is verified","tags":["Users"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]}},"required":["data"]}}}},"responses":{"200":{"description":"Returns email verification status","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"emailVerified":{"type":"boolean"}},"required":["emailVerified"]}},"required":["data"]}}}},"401":{"description":"Unauthorized"},"404":{"description":"User not found"}}}},"/v1/deployment-funding-config":{"get":{"summary":"Get deployment funding config","operationId":"getDeploymentFundingConfig","tags":["Deployments"],"security":[],"responses":{"200":{"description":"Returns the platform constants automatic deployment funding runs on","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"targetRunwayHours":{"type":"number","description":"Hours of runtime automatic funding reserves for a deployment once its lease starts"},"balanceHeadroomUsd":{"type":"number","description":"USD amount automatic funding leaves untouched in the available balance so new deployments can still be created"},"defaultDepositUsd":{"type":"number","description":"USD amount every deployment is bootstrapped with at creation, before funding tops it up toward the target runway"}},"required":["targetRunwayHours","balanceHeadroomUsd","defaultDepositUsd"]}},"required":["data"]}}}}}}},"/v1/deployment-settings/{userId}/{dseq}":{"get":{"summary":"Get deployment settings by user ID and dseq","tags":["Deployment Settings"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"User ID"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"required":true,"name":"dseq","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns deployment settings","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":"string","nullable":true,"description":"The member who filed the deployment, or null once a team organization's member who filed it has deleted their account"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"sdl":{"type":"string","nullable":true},"autoTopUpEnabled":{"type":"boolean"},"estimatedTopUpAmount":{"type":"number"},"topUpFrequencyMs":{"type":"number"},"runtimeLimitHours":{"type":"integer","nullable":true,"description":"Runtime limit in hours chosen at deployment creation, or null for always-on funding"},"runtimeEndsAt":{"type":"string","nullable":true,"format":"date-time","description":"When the runtime limit is reached, anchored at lease start; null until the lease starts or when no limit is set"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","userId","dseq","sdl","autoTopUpEnabled","estimatedTopUpAmount","topUpFrequencyMs","runtimeLimitHours","runtimeEndsAt","createdAt","updatedAt"]}},"required":["data"]}}}},"404":{"description":"Deployment settings not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}},"patch":{"summary":"Update deployment settings","tags":["Deployment Settings"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"User ID"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"required":true,"name":"dseq","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runtimeLimitHours":{"type":"integer","nullable":true,"minimum":1,"maximum":8760,"description":"Runtime limit in hours, counted from lease start. On a deployment with no limit yet it may be at most 48. Extending an existing limit must raise it by at most 48 hours per request; send the new total rather than the increment. Lowering a limit is not supported. Send null to remove the limit and return the deployment to always-on funding."},"closeReason":{"type":"string","enum":["no_longer_needed","cost_or_budget","migrating_elsewhere","performance_or_reliability","testing_or_project_complete","other"],"description":"Why the deployment was closed. Cannot be sent in the same request as runtimeLimitHours."},"closeReasonDetails":{"type":"string","maxLength":1000,"description":"Free-text details about why the deployment was closed. Cannot be sent in the same request as runtimeLimitHours."}}}},"required":["data"]}}}},"responses":{"200":{"description":"Deployment settings updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":"string","nullable":true,"description":"The member who filed the deployment, or null once a team organization's member who filed it has deleted their account"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"sdl":{"type":"string","nullable":true},"autoTopUpEnabled":{"type":"boolean"},"estimatedTopUpAmount":{"type":"number"},"topUpFrequencyMs":{"type":"number"},"runtimeLimitHours":{"type":"integer","nullable":true,"description":"Runtime limit in hours chosen at deployment creation, or null for always-on funding"},"runtimeEndsAt":{"type":"string","nullable":true,"format":"date-time","description":"When the runtime limit is reached, anchored at lease start; null until the lease starts or when no limit is set"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","userId","dseq","sdl","autoTopUpEnabled","estimatedTopUpAmount","topUpFrequencyMs","runtimeLimitHours","runtimeEndsAt","createdAt","updatedAt"]}},"required":["data"]}}}},"400":{"description":"Invalid runtime limit change","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment settings not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"409":{"description":"Runtime limit changed concurrently. With `code` `deployment_record_unfiled`, the member who filed this team deployment deleted their account and the caller holds a record of the same deployment id in another organization","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}}},"/v1/deployment-settings":{"post":{"summary":"Create deployment settings","tags":["Deployment Settings"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","description":"User ID"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"}},"required":["userId","dseq"]}},"required":["data"]}}}},"responses":{"201":{"description":"Deployment settings created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":"string","nullable":true,"description":"The member who filed the deployment, or null once a team organization's member who filed it has deleted their account"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"sdl":{"type":"string","nullable":true},"autoTopUpEnabled":{"type":"boolean"},"estimatedTopUpAmount":{"type":"number"},"topUpFrequencyMs":{"type":"number"},"runtimeLimitHours":{"type":"integer","nullable":true,"description":"Runtime limit in hours chosen at deployment creation, or null for always-on funding"},"runtimeEndsAt":{"type":"string","nullable":true,"format":"date-time","description":"When the runtime limit is reached, anchored at lease start; null until the lease starts or when no limit is set"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","userId","dseq","sdl","autoTopUpEnabled","estimatedTopUpAmount","topUpFrequencyMs","runtimeLimitHours","runtimeEndsAt","createdAt","updatedAt"]}},"required":["data"]}}}},"409":{"description":"With `code` `deployment_record_unfiled`, the member who filed this team deployment deleted their account and the caller holds a record of the same deployment id in another organization","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v2/deployment-settings/{dseq}":{"get":{"summary":"Get deployment settings by dseq","tags":["Deployment Settings"],"operationId":"getDeploymentSetting","security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"required":true,"name":"dseq","in":"path"},{"schema":{"type":"string","format":"uuid","description":"User ID. Defaults to the current authenticated user if not provided"},"required":false,"name":"userId","in":"query"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns deployment settings","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":"string","nullable":true,"description":"The member who filed the deployment, or null once a team organization's member who filed it has deleted their account"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"sdl":{"type":"string","nullable":true},"autoTopUpEnabled":{"type":"boolean"},"estimatedTopUpAmount":{"type":"number"},"topUpFrequencyMs":{"type":"number"},"runtimeLimitHours":{"type":"integer","nullable":true,"description":"Runtime limit in hours chosen at deployment creation, or null for always-on funding"},"runtimeEndsAt":{"type":"string","nullable":true,"format":"date-time","description":"When the runtime limit is reached, anchored at lease start; null until the lease starts or when no limit is set"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","userId","dseq","sdl","autoTopUpEnabled","estimatedTopUpAmount","topUpFrequencyMs","runtimeLimitHours","runtimeEndsAt","createdAt","updatedAt"]}},"required":["data"]}}}},"404":{"description":"Deployment settings not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}},"patch":{"summary":"Update deployment settings","tags":["Deployment Settings"],"operationId":"updateDeploymentSetting","security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"required":true,"name":"dseq","in":"path"},{"schema":{"type":"string","format":"uuid","description":"User ID. Defaults to the current authenticated user if not provided"},"required":false,"name":"userId","in":"query"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runtimeLimitHours":{"type":"integer","nullable":true,"minimum":1,"maximum":8760,"description":"Runtime limit in hours, counted from lease start. On a deployment with no limit yet it may be at most 48. Extending an existing limit must raise it by at most 48 hours per request; send the new total rather than the increment. Lowering a limit is not supported. Send null to remove the limit and return the deployment to always-on funding."},"closeReason":{"type":"string","enum":["no_longer_needed","cost_or_budget","migrating_elsewhere","performance_or_reliability","testing_or_project_complete","other"],"description":"Why the deployment was closed. Cannot be sent in the same request as runtimeLimitHours."},"closeReasonDetails":{"type":"string","maxLength":1000,"description":"Free-text details about why the deployment was closed. Cannot be sent in the same request as runtimeLimitHours."}}}},"required":["data"]}}}},"responses":{"200":{"description":"Deployment settings updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":"string","nullable":true,"description":"The member who filed the deployment, or null once a team organization's member who filed it has deleted their account"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"sdl":{"type":"string","nullable":true},"autoTopUpEnabled":{"type":"boolean"},"estimatedTopUpAmount":{"type":"number"},"topUpFrequencyMs":{"type":"number"},"runtimeLimitHours":{"type":"integer","nullable":true,"description":"Runtime limit in hours chosen at deployment creation, or null for always-on funding"},"runtimeEndsAt":{"type":"string","nullable":true,"format":"date-time","description":"When the runtime limit is reached, anchored at lease start; null until the lease starts or when no limit is set"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","userId","dseq","sdl","autoTopUpEnabled","estimatedTopUpAmount","topUpFrequencyMs","runtimeLimitHours","runtimeEndsAt","createdAt","updatedAt"]}},"required":["data"]}}}},"400":{"description":"Invalid runtime limit change","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment settings not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"409":{"description":"Runtime limit changed concurrently. With `code` `deployment_record_unfiled`, the member who filed this team deployment deleted their account and the caller holds a record of the same deployment id in another organization","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}}},"/v2/deployment-settings":{"post":{"summary":"Create deployment settings","tags":["Deployment Settings"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"userId":{"type":"string","format":"uuid","description":"User ID. Defaults to the current authenticated user if not provided"}},"required":["dseq"]}},"required":["data"]}}}},"responses":{"201":{"description":"Deployment settings created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":"string","nullable":true,"description":"The member who filed the deployment, or null once a team organization's member who filed it has deleted their account"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"sdl":{"type":"string","nullable":true},"autoTopUpEnabled":{"type":"boolean"},"estimatedTopUpAmount":{"type":"number"},"topUpFrequencyMs":{"type":"number"},"runtimeLimitHours":{"type":"integer","nullable":true,"description":"Runtime limit in hours chosen at deployment creation, or null for always-on funding"},"runtimeEndsAt":{"type":"string","nullable":true,"format":"date-time","description":"When the runtime limit is reached, anchored at lease start; null until the lease starts or when no limit is set"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","userId","dseq","sdl","autoTopUpEnabled","estimatedTopUpAmount","topUpFrequencyMs","runtimeLimitHours","runtimeEndsAt","createdAt","updatedAt"]}},"required":["data"]}}}},"409":{"description":"With `code` `deployment_record_unfiled`, the member who filed this team deployment deleted their account and the caller holds a record of the same deployment id in another organization","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/deployments/{dseq}":{"get":{"summary":"Get a deployment","operationId":"getDeployment","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"required":true,"description":"Deployment sequence number","name":"dseq","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns deployment info","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"}},"required":["owner","dseq"]},"state":{"type":"string"},"hash":{"type":"string"},"created_at":{"type":"string"}},"required":["id","state","hash","created_at"]},"leases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"string"},"bseq":{"type":"number"}},"required":["owner","dseq","gseq","oseq","provider","bseq"]},"state":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"created_at":{"type":"string"},"closed_on":{"type":"string"},"reason":{"type":"string"},"reclamation":{"type":"object","properties":{"window":{"type":"string"},"started_at":{"type":"string"},"deadline":{"type":"string"},"reason":{"type":"string"}},"description":"Present only on a lease its provider has flagged for reclamation. `deadline` is unix seconds; `reason` is a `lease_closed_reason_*` enum name."},"detectedGpus":{"type":"object","properties":{"services":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","nullable":true,"description":"Canonical vendor key, e.g. `nvidia`. Null for a card the console's model catalog does not list."},"model":{"type":"string","nullable":true,"description":"Canonical SDL model key, e.g. `h100`. Null for a card the console's model catalog does not list."},"displayName":{"type":"string","description":"Marketing-correct label, e.g. `H100`, falling back to what the driver reported for an unlisted card."},"memoryMb":{"type":"integer","description":"Per-card memory as the driver reports it, in MiB."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the catalog names one, else null."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Identical cards folded into one entry."}},"required":["vendor","model","displayName","memoryMb","interface","count"]}}},"required":["service","gpus"]}},"driverVersion":{"type":"string","nullable":true},"detectedAt":{"type":"string","format":"date-time"}},"required":["services","driverVersion","detectedAt"],"description":"GPUs the console observed running inside this lease's containers, as distinct from the models its group requested. Absent until the console has looked, and for a lease it cannot look inside."},"offeredGpus":{"type":"object","properties":{"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","description":"Vendor key the provider offered, e.g. `nvidia`."},"model":{"type":"string","description":"SDL model key the provider offered, e.g. `a100`."},"displayName":{"type":"string","description":"Marketing-correct label for the model, e.g. `A100`."},"ram":{"type":"string","nullable":true,"description":"Per-card memory, e.g. `80Gi`, when the offer names it. Providers name it only when the SDL asked for it."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the offer names it. Providers name it only when the SDL asked for it."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Cards of this model offered across every replica, identical ones folded into one entry."}},"required":["vendor","model","displayName","ram","interface","count"]}},"recordedAt":{"type":"string","format":"date-time"}},"required":["gpus","recordedAt"],"description":"GPUs the provider offered for this lease in the bid it was created from, which is what an `Any model` request resolves to. Absent until the console has recorded the bid, and for a lease whose deployment the console does not manage."},"status":{"type":"object","nullable":true,"properties":{"forwarded_ports":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"port":{"type":"number"},"externalPort":{"type":"number"},"host":{"type":"string"},"available":{"type":"number"}},"required":["port","externalPort"]}}},"ips":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"IP":{"type":"string"},"Port":{"type":"number"},"ExternalPort":{"type":"number"},"Protocol":{"type":"string"}},"required":["IP","Port","ExternalPort","Protocol"]}}},"services":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"type":"string"},"available":{"type":"number"},"total":{"type":"number"},"uris":{"type":"array","items":{"type":"string"}},"observed_generation":{"type":"number"},"replicas":{"type":"number"},"updated_replicas":{"type":"number"},"ready_replicas":{"type":"number"},"available_replicas":{"type":"number"}},"required":["name","available","total","uris","observed_generation","replicas","updated_replicas","ready_replicas","available_replicas"]}}},"required":["forwarded_ports","ips","services"]}},"required":["id","state","price","created_at","closed_on","status"]}},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]},"name":{"type":"string","nullable":true,"description":"The name this deployment carries, or null for one created before the console recorded names."},"consoleSettings":{"type":"object","nullable":true,"properties":{"sdl":{"type":"string","description":"The SDL the console stored for this deployment. Re-serialized YAML, so not byte-identical to the submitted document."},"manifestVersion":{"type":"string","description":"Base64 of the manifest version the console recorded for this deployment. Deliberately not a hash of the `sdl` above."}},"required":["sdl","manifestVersion"],"description":"What the console recorded for this deployment, or null when it recorded nothing."}},"required":["deployment","leases","escrow_account","name","consoleSettings"]}},"required":["data"]}}}}}},"delete":{"summary":"Close a deployment","operationId":"closeDeployment","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"required":true,"description":"Deployment sequence number","name":"dseq","in":"path"},{"schema":{"type":"string","enum":["true","false"],"description":"With `true`, the close finishes in the background: the request answers 202 with an `activityId` to follow at `GET /v1/activities/{id}` once every check that could refuse it has passed. It answers 200 as without it when the deployment was already closed or background closes are unavailable."},"required":false,"name":"async","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Groups this close with the other closes of one bulk close. The activity it records carries the id in `meta.batchId`, so a client can report the batch together. Any UUID the caller picks, sent with every close of the batch."},"required":false,"name":"batchId","in":"query"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Deployment closed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}},"required":["data"]}}}},"202":{"description":"The close passed every check and will finish in the background","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","description":"The activity that reports how the close ends."}},"required":["activityId"]}},"required":["data"]}}}},"403":{"description":"With `code` `project_forbidden`, the deployment is filed in a project the caller cannot change","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}}}},"put":{"summary":"Update a deployment (deprecated)","description":"Deprecated. Resubmits the whole SDL, so rotating one secret means re-supplying every other value the document carries, and the console cannot return a stored value for you to resupply. Use PATCH /v1/deployments/{dseq} instead. This endpoint will be removed in a future release.","operationId":"updateDeployment","deprecated":true,"tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"required":true,"description":"Deployment sequence number","name":"dseq","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"sdl":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":256,"description":"Renames the deployment. Omitting it keeps the name the deployment already carries, unlike the rest of the definition this endpoint replaces wholesale."},"sealedSecrets":{"type":"string","minLength":1,"description":"Compact JWE sealing a flat name-to-value map of the secrets this SDL references, as on create. It replaces every value the deployment stored. Its presence also says which values are secret, as on create: an update carrying a seal stores its env values as submitted, while one carrying none seals every one of them."}},"required":["sdl"]}},"required":["data"]}}}},"responses":{"200":{"description":"Deployment updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"}},"required":["owner","dseq"]},"state":{"type":"string"},"hash":{"type":"string"},"created_at":{"type":"string"}},"required":["id","state","hash","created_at"]},"leases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"string"},"bseq":{"type":"number"}},"required":["owner","dseq","gseq","oseq","provider","bseq"]},"state":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"created_at":{"type":"string"},"closed_on":{"type":"string"},"reason":{"type":"string"},"reclamation":{"type":"object","properties":{"window":{"type":"string"},"started_at":{"type":"string"},"deadline":{"type":"string"},"reason":{"type":"string"}},"description":"Present only on a lease its provider has flagged for reclamation. `deadline` is unix seconds; `reason` is a `lease_closed_reason_*` enum name."},"detectedGpus":{"type":"object","properties":{"services":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","nullable":true,"description":"Canonical vendor key, e.g. `nvidia`. Null for a card the console's model catalog does not list."},"model":{"type":"string","nullable":true,"description":"Canonical SDL model key, e.g. `h100`. Null for a card the console's model catalog does not list."},"displayName":{"type":"string","description":"Marketing-correct label, e.g. `H100`, falling back to what the driver reported for an unlisted card."},"memoryMb":{"type":"integer","description":"Per-card memory as the driver reports it, in MiB."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the catalog names one, else null."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Identical cards folded into one entry."}},"required":["vendor","model","displayName","memoryMb","interface","count"]}}},"required":["service","gpus"]}},"driverVersion":{"type":"string","nullable":true},"detectedAt":{"type":"string","format":"date-time"}},"required":["services","driverVersion","detectedAt"],"description":"GPUs the console observed running inside this lease's containers, as distinct from the models its group requested. Absent until the console has looked, and for a lease it cannot look inside."},"offeredGpus":{"type":"object","properties":{"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","description":"Vendor key the provider offered, e.g. `nvidia`."},"model":{"type":"string","description":"SDL model key the provider offered, e.g. `a100`."},"displayName":{"type":"string","description":"Marketing-correct label for the model, e.g. `A100`."},"ram":{"type":"string","nullable":true,"description":"Per-card memory, e.g. `80Gi`, when the offer names it. Providers name it only when the SDL asked for it."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the offer names it. Providers name it only when the SDL asked for it."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Cards of this model offered across every replica, identical ones folded into one entry."}},"required":["vendor","model","displayName","ram","interface","count"]}},"recordedAt":{"type":"string","format":"date-time"}},"required":["gpus","recordedAt"],"description":"GPUs the provider offered for this lease in the bid it was created from, which is what an `Any model` request resolves to. Absent until the console has recorded the bid, and for a lease whose deployment the console does not manage."},"status":{"type":"object","nullable":true,"properties":{"forwarded_ports":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"port":{"type":"number"},"externalPort":{"type":"number"},"host":{"type":"string"},"available":{"type":"number"}},"required":["port","externalPort"]}}},"ips":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"IP":{"type":"string"},"Port":{"type":"number"},"ExternalPort":{"type":"number"},"Protocol":{"type":"string"}},"required":["IP","Port","ExternalPort","Protocol"]}}},"services":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"type":"string"},"available":{"type":"number"},"total":{"type":"number"},"uris":{"type":"array","items":{"type":"string"}},"observed_generation":{"type":"number"},"replicas":{"type":"number"},"updated_replicas":{"type":"number"},"ready_replicas":{"type":"number"},"available_replicas":{"type":"number"}},"required":["name","available","total","uris","observed_generation","replicas","updated_replicas","ready_replicas","available_replicas"]}}},"required":["forwarded_ports","ips","services"]}},"required":["id","state","price","created_at","closed_on","status"]}},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]}},"required":["deployment","leases","escrow_account"]}},"required":["data"]}}}},"400":{"description":"The SDL is not valid or leaves a secret reference with no value from `sealedSecrets`, or the `sealedSecrets` value supplies a name no service references or is malformed, tampered with, expired or not a flat object of string values","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"403":{"description":"The `sealedSecrets` value was sealed for a different user, or bound to a different SDL than the one submitted. With `code` `project_forbidden`, the deployment is filed in a project the caller cannot change","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"409":{"description":"The `sealedSecrets` value was sealed to a key the console no longer holds. Refetch `GET /v1/sdl-secrets-context` and seal again. With `code` `deployment_record_unfiled`, the member who filed this team deployment deleted their account and the caller holds a record of the same deployment id in another organization","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"422":{"description":"The SDL changes the groups, compute resources, replica counts or globally exposed ports the deployment was created with, which only a new deployment can take: `code` is `deployment_resources_changed`, and nothing is recorded, no deployment update is sent and no provider is contacted","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"503":{"description":"The key management service is temporarily unreachable. Transient and worth retrying","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}}}},"patch":{"summary":"Patch a deployment","description":"Patches the SDL the console stored for this deployment, or renames the deployment, or both; the SDL is never accepted from the request. Only the services named are touched. A `name` on its own touches no definition, so it renames a deployment the console holds no SDL for and sends neither a deployment update nor a manifest. Such a rename also reports every lease `status` as null, because it asks no provider for one. A patched environment variable is re-appended to its service's env list, so the order shown by GET may differ afterwards. A replaced secret takes effect through the deployment update this patch sends, not in the workload already running. The definition is recorded before the deployment update is sent, so an update that fails leaves the console describing a manifest version the deployment was never updated to. Re-sending the identical request repairs that: it recomputes the same manifest version, is accepted rather than refused, and goes on to send the update and push the manifest. A seal bound to the SDL is the exception: the first attempt replaced the SDL it was sealed against, so the same `sealedSecrets` answer 403 until the same values are sealed against the SDL GET now returns.","operationId":"patchDeployment","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"required":true,"description":"Deployment sequence number","name":"dseq","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"services":{"type":"object","additionalProperties":{"type":"object","properties":{"image":{"type":"string"},"command":{"type":"array","nullable":true,"items":{"type":"string"}},"args":{"type":"array","nullable":true,"items":{"type":"string"}},"env":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"Merged into the service's env, keyed by environment variable name. A null value removes the variable. A patched variable is re-appended, so the order of the stored env list may change. Written values are sealed unless the request carries `sealedSecrets`."},"credentials":{"type":"object","nullable":true,"properties":{"host":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"}},"required":["host","username","password"],"description":"Private registry pull credentials. Null clears them."},"expose":{"type":"object","additionalProperties":{"type":"object","properties":{"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Moves the container port the workload listens on. The entry is still addressed by the port it declares today. Refused onto a port the service already exposes, and on an endpoint reached through a leased IP."},"as":{"type":"integer","minimum":1,"maximum":65535,"description":"Moves the port the endpoint is reached on. Refused when it would change the endpoint's kind (a public TCP endpoint moving onto or off port 80), onto a port another endpoint of the service uses, and on an endpoint reached through a leased IP."},"accept":{"type":"array","items":{"type":"string"},"description":"Custom domains. Replaces the existing list. Emptying it is rejected by providers that do not generate a hostname of their own, which leaves the patch recorded but undeployed."},"httpOptions":{"type":"object","properties":{"maxBodySize":{"type":"integer","minimum":1,"maximum":104857600},"readTimeout":{"type":"integer","minimum":1,"maximum":4294967295},"sendTimeout":{"type":"integer","minimum":1,"maximum":4294967295},"nextTries":{"type":"integer","minimum":0,"maximum":4294967295},"nextTimeout":{"type":"integer","minimum":0,"maximum":4294967295},"nextCases":{"type":"array","items":{"type":"string","enum":["error","timeout","500","502","503","504","403","404","429","off"]},"minItems":1,"description":"Conditions the proxy retries on. Replaces the existing list; \"off\" disables retrying and stands alone."}}}}},"description":"Keyed by the container port the stored SDL declares. Port numbers, hosts and http options are patchable; protocol, routing, endpoint kind and count are fixed at create. A random-port endpoint whose numbers change gets a new public port from the provider, and so can the service's other random-port endpoints when a container port move reorders them."},"storage":{"type":"object","additionalProperties":{"type":"object","properties":{"mount":{"type":"string"},"readOnly":{"type":"boolean"}}},"description":"Keyed by volume name. Mount point and read-only flag only — sizes are fixed at create."}}},"description":"Keyed by service name. Only the named services are touched; omitted services keep their current definition. Omit it entirely to patch nothing about the definition, which is how a deployment is renamed on its own."},"name":{"type":"string","minLength":1,"maxLength":256,"description":"Renames the deployment. Supplied on its own it is the only patch that touches no definition, so it works on a deployment the console holds no SDL for and sends neither a deployment update nor a manifest."},"sealedSecrets":{"type":"string","minLength":1,"description":"Compact JWE sealing a flat name-to-value map, as on create, but holding only the names this patch replaces. Omitted names keep the values the deployment already stores. Its presence also says which values are secret, as on create: a patch carrying a seal stores the env values it writes as submitted, while one carrying none seals them. A seal of an empty map is how a caller writes plain variables without replacing any secret."},"ifManifestVersion":{"type":"string","minLength":1,"maxLength":64,"description":"Base64 manifest version this patch expects to be current. Rejected with 409 if the deployment has moved on, unless it moved on to the version this very patch produces, which makes a retry of it succeed. Omitting this does not turn the guard off: the patch is then guarded on the version it read for itself, so a concurrent patch still answers 409 rather than overwriting it."}}}},"required":["data"]}}}},"responses":{"200":{"description":"Deployment patched successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"}},"required":["owner","dseq"]},"state":{"type":"string"},"hash":{"type":"string"},"created_at":{"type":"string"}},"required":["id","state","hash","created_at"]},"leases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"string"},"bseq":{"type":"number"}},"required":["owner","dseq","gseq","oseq","provider","bseq"]},"state":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"created_at":{"type":"string"},"closed_on":{"type":"string"},"reason":{"type":"string"},"reclamation":{"type":"object","properties":{"window":{"type":"string"},"started_at":{"type":"string"},"deadline":{"type":"string"},"reason":{"type":"string"}},"description":"Present only on a lease its provider has flagged for reclamation. `deadline` is unix seconds; `reason` is a `lease_closed_reason_*` enum name."},"detectedGpus":{"type":"object","properties":{"services":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","nullable":true,"description":"Canonical vendor key, e.g. `nvidia`. Null for a card the console's model catalog does not list."},"model":{"type":"string","nullable":true,"description":"Canonical SDL model key, e.g. `h100`. Null for a card the console's model catalog does not list."},"displayName":{"type":"string","description":"Marketing-correct label, e.g. `H100`, falling back to what the driver reported for an unlisted card."},"memoryMb":{"type":"integer","description":"Per-card memory as the driver reports it, in MiB."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the catalog names one, else null."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Identical cards folded into one entry."}},"required":["vendor","model","displayName","memoryMb","interface","count"]}}},"required":["service","gpus"]}},"driverVersion":{"type":"string","nullable":true},"detectedAt":{"type":"string","format":"date-time"}},"required":["services","driverVersion","detectedAt"],"description":"GPUs the console observed running inside this lease's containers, as distinct from the models its group requested. Absent until the console has looked, and for a lease it cannot look inside."},"offeredGpus":{"type":"object","properties":{"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","description":"Vendor key the provider offered, e.g. `nvidia`."},"model":{"type":"string","description":"SDL model key the provider offered, e.g. `a100`."},"displayName":{"type":"string","description":"Marketing-correct label for the model, e.g. `A100`."},"ram":{"type":"string","nullable":true,"description":"Per-card memory, e.g. `80Gi`, when the offer names it. Providers name it only when the SDL asked for it."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the offer names it. Providers name it only when the SDL asked for it."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Cards of this model offered across every replica, identical ones folded into one entry."}},"required":["vendor","model","displayName","ram","interface","count"]}},"recordedAt":{"type":"string","format":"date-time"}},"required":["gpus","recordedAt"],"description":"GPUs the provider offered for this lease in the bid it was created from, which is what an `Any model` request resolves to. Absent until the console has recorded the bid, and for a lease whose deployment the console does not manage."},"status":{"type":"object","nullable":true,"properties":{"forwarded_ports":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"port":{"type":"number"},"externalPort":{"type":"number"},"host":{"type":"string"},"available":{"type":"number"}},"required":["port","externalPort"]}}},"ips":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"IP":{"type":"string"},"Port":{"type":"number"},"ExternalPort":{"type":"number"},"Protocol":{"type":"string"}},"required":["IP","Port","ExternalPort","Protocol"]}}},"services":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"type":"string"},"available":{"type":"number"},"total":{"type":"number"},"uris":{"type":"array","items":{"type":"string"}},"observed_generation":{"type":"number"},"replicas":{"type":"number"},"updated_replicas":{"type":"number"},"ready_replicas":{"type":"number"},"available_replicas":{"type":"number"}},"required":["name","available","total","uris","observed_generation","replicas","updated_replicas","ready_replicas","available_replicas"]}}},"required":["forwarded_ports","ips","services"]}},"required":["id","state","price","created_at","closed_on","status"]}},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]},"name":{"type":"string","nullable":true,"description":"The name this deployment carries, or null for one created before the console recorded names."},"manifestVersion":{"type":"string","description":"Base64 manifest version this patch recorded, which the deployment is now on. Absent for a rename, which records none."}},"required":["deployment","leases","escrow_account","name"]}},"required":["data"]}}}},"400":{"description":"The patch names a service, port or volume the stored SDL does not declare, supplies a secret name it does not reference, leaves a reference with no value, moves a container port onto one the service already exposes, or moves a port in a way that would change its endpoint kind","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"403":{"description":"The `sealedSecrets` value was sealed for a different user, or bound to a different SDL than the one the console stores for this deployment, as a seal made before an earlier patch of it was recorded is. With `code` `project_forbidden`, the deployment is filed in a project the caller cannot change","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"404":{"description":"No SDL is recorded for this deployment, so there is nothing to patch. A rename answers this only when the caller has no such deployment, since it needs no recorded SDL","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"409":{"description":"The deployment definition changed between this patch reading it and writing it. A patch naming no `ifManifestVersion` is guarded on the version it read, so a concurrent patch produces this too. Re-sending the identical patch is not a conflict, because the version it recomputes is the one the row already holds. `code` is `deployment_definition_changed` for this case, which a reload of the definition cures; a 409 without it answers a seal made against a retired key, which a fresh seal cures. With `code` `deployment_record_unfiled`, the member who filed this team deployment deleted their account and the caller holds a record of the same deployment id in another organization. With `code` `stored_secrets_unavailable`, the stored secrets were sealed for a member who deleted their account, so update the deployment with its full SDL and secret values","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"422":{"description":"The SDL recorded for this deployment no longer declares the groups, compute resources, replica counts or globally exposed ports the deployment holds, as a full-SDL update can leave it: `code` is `deployment_resources_changed`, and nothing is recorded, no deployment update is sent and no provider is contacted","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"500":{"description":"The deployment's stored state could not be read: `code` is `stored_secrets_unreadable` when the sealed secrets would not open and `stored_sdl_unreadable` when the recorded SDL would not parse. Both are permanent rather than transient, so a retry cannot help, and both leave the stored token untouched. A 500 carrying any other `code` is an unexpected failure and promises neither of those things","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"503":{"description":"The key management service is temporarily unreachable. Transient and worth retrying, unlike the 500 above","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}}}}},"/v1/deployment-names":{"get":{"summary":"Get the names of several deployments at once","operationId":"listDeploymentNames","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"array","items":{"type":"string","pattern":"^[1-9]\\d*$"},"minItems":1,"maxItems":100,"description":"Deployment sequence numbers to resolve names for, repeated once per deployment, at most 100 per request. Written without leading zeros, as the other deployment endpoints return them."},"required":true,"name":"dseq","in":"query"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns the name the console holds for each deployment asked about, or null where it holds none","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{"type":"string","nullable":true,"description":"The name this deployment carries, or null for one created before the console recorded names."},"description":"Keyed by the dseqs asked about. Null for a deployment the console holds no name for, whether it recorded nothing or recorded it unnamed."}},"required":["data"]}}}},"400":{"description":"No `dseq` was given, more than the request limit were, or one is not a deployment sequence number","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}}}}},"/v1/deployments":{"post":{"summary":"Create new deployment","operationId":"createDeployment","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"sdl":{"type":"string","maxLength":524288},"name":{"type":"string","minLength":1,"maxLength":256,"description":"Name for this deployment, shown wherever it is listed. Omit it and the console names the deployment after the services the SDL declares, joined with `+`."},"sealedSecrets":{"type":"string","minLength":1,"description":"Compact JWE sealing a flat name-to-value map of the secrets this SDL references, encrypted to the console's public sealing key. Fetch that key and the claims to sign from GET /v1/sdl-secrets-context. Values are never returned by any endpoint once sealed."},"inheritSecretsFrom":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Dseq of a deployment you can change, under the same owner as this one, whose stored secrets this deployment starts from, for redeploying an SDL without re-entering its values. The source may be closed. A name also present in `sealedSecrets` takes precedence over the inherited one."},"deposit":{"type":"number","description":"Deprecated and ignored. The platform funds every deployment automatically from your account credits.","deprecated":true},"runtimeLimitHours":{"type":"integer","minimum":1,"maximum":48,"description":"Optional runtime limit in hours (1 to 48), counted from lease start. Automatic funding keeps the deployment running until the limit, then the deployment is closed automatically and unused funds are returned. Extend a limit with PATCH /v2/deployment-settings/{dseq}. Omit for always-on funding."},"projectId":{"type":"string","format":"uuid","description":"Project to file the deployment in."}},"required":["sdl"]}},"required":["data"]}}}},"responses":{"201":{"description":"Create deployment successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"manifest":{"type":"string"},"signTx":{"type":"object","properties":{"code":{"type":"number"},"transactionHash":{"type":"string"},"rawLog":{"type":"string"}},"required":["code","transactionHash","rawLog"]}},"required":["dseq","manifest","signTx"]}},"required":["data"]}}}},"400":{"description":"The SDL leaves a secret reference with no value from either `sealedSecrets` or the deployment named by `inheritSecretsFrom`, supplies a name no service references, would carry more secrets than one deployment may hold, or carries a `sealedSecrets` value that is malformed, tampered with, expired or not a flat object of string values. With `code` `project_required`, a project is needed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"403":{"description":"The `sealedSecrets` value was sealed for a different user, or bound to a different SDL than the one submitted. With `code` `project_budget_exceeded`, the deposit would take the project past its monthly budget","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"404":{"description":"No deployment you can change matches `inheritSecretsFrom`. Deliberately says nothing about whether that deployment exists. Also returned for an unknown `projectId`","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"409":{"description":"Either the `sealedSecrets` value was sealed to a key the console no longer holds — refetch `GET /v1/sdl-secrets-context` and seal again — or, with `code` `inherited_secrets_unreadable`, the secrets recorded for the deployment named by `inheritSecretsFrom` can no longer be decrypted. The second is permanent rather than transient, so a retry cannot help; supply the values in `sealedSecrets` instead","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"503":{"description":"The key management service is temporarily unreachable. Transient and worth retrying, unlike the 409 above","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]},"get":{"summary":"List deployments with pagination and filtering","operationId":"listDeployments","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["active","closed"],"default":"active","description":"Which of the owner's deployments to list. `closed` serves the archive."},"required":false,"name":"state","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false","description":"Newest deployment first when true, rather than the default oldest-first order."},"required":false,"name":"reverse","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Case-insensitive substring matched against each deployment's console name and its dseq. It spans every deployment in `state` before paging, so `total` and `hasMore` describe the matches rather than the state. A search of `active` deployments is refused past a cap on how many it spans; a search of the archive (`closed`) has no cap while the console's index answers."},"required":false,"name":"search","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0,"description":"Deployments to skip before the page begins."},"required":false,"name":"skip","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":100,"description":"Deployments per page, at most 100. Omitting it pages from the start rather than returning every deployment, so page on while `hasMore` is true."},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Lists only the deployments filed in this project. A project the caller cannot reach lists nothing, like one that does not exist. Ignored outside organization mode."},"required":false,"name":"projectId","in":"query"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns paginated list of deployments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"}},"required":["owner","dseq"]},"state":{"type":"string"},"hash":{"type":"string"},"created_at":{"type":"string"}},"required":["id","state","hash","created_at"]},"leases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"string"},"bseq":{"type":"number"}},"required":["owner","dseq","gseq","oseq","provider","bseq"]},"state":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"created_at":{"type":"string"},"closed_on":{"type":"string"},"reason":{"type":"string"},"reclamation":{"type":"object","properties":{"window":{"type":"string"},"started_at":{"type":"string"},"deadline":{"type":"string"},"reason":{"type":"string"}},"description":"Present only on a lease its provider has flagged for reclamation. `deadline` is unix seconds; `reason` is a `lease_closed_reason_*` enum name."},"detectedGpus":{"type":"object","properties":{"services":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","nullable":true,"description":"Canonical vendor key, e.g. `nvidia`. Null for a card the console's model catalog does not list."},"model":{"type":"string","nullable":true,"description":"Canonical SDL model key, e.g. `h100`. Null for a card the console's model catalog does not list."},"displayName":{"type":"string","description":"Marketing-correct label, e.g. `H100`, falling back to what the driver reported for an unlisted card."},"memoryMb":{"type":"integer","description":"Per-card memory as the driver reports it, in MiB."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the catalog names one, else null."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Identical cards folded into one entry."}},"required":["vendor","model","displayName","memoryMb","interface","count"]}}},"required":["service","gpus"]}},"driverVersion":{"type":"string","nullable":true},"detectedAt":{"type":"string","format":"date-time"}},"required":["services","driverVersion","detectedAt"],"description":"GPUs the console observed running inside this lease's containers, as distinct from the models its group requested. Absent until the console has looked, and for a lease it cannot look inside."},"offeredGpus":{"type":"object","properties":{"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","description":"Vendor key the provider offered, e.g. `nvidia`."},"model":{"type":"string","description":"SDL model key the provider offered, e.g. `a100`."},"displayName":{"type":"string","description":"Marketing-correct label for the model, e.g. `A100`."},"ram":{"type":"string","nullable":true,"description":"Per-card memory, e.g. `80Gi`, when the offer names it. Providers name it only when the SDL asked for it."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the offer names it. Providers name it only when the SDL asked for it."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Cards of this model offered across every replica, identical ones folded into one entry."}},"required":["vendor","model","displayName","ram","interface","count"]}},"recordedAt":{"type":"string","format":"date-time"}},"required":["gpus","recordedAt"],"description":"GPUs the provider offered for this lease in the bid it was created from, which is what an `Any model` request resolves to. Absent until the console has recorded the bid, and for a lease whose deployment the console does not manage."}},"required":["id","state","price","created_at","closed_on"]}},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]},"name":{"type":"string","nullable":true,"description":"The name this deployment carries, or null for one created before the console recorded names."},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string"},"gseq":{"type":"number"}},"required":["owner","dseq","gseq"]},"state":{"type":"string"},"group_spec":{"type":"object","properties":{"name":{"type":"string"},"requirements":{"type":"object","properties":{"signed_by":{"type":"object","properties":{"all_of":{"type":"array","items":{"type":"string"}},"any_of":{"type":"array","items":{"type":"string"}}},"required":["all_of","any_of"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["signed_by","attributes"]},"resources":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"object","properties":{"id":{"type":"number"},"cpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"memory":{"type":"object","properties":{"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["quantity","attributes"]},"storage":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["name","quantity","attributes"]}},"gpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"endpoints":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"sequence_number":{"type":"number"}},"required":["kind","sequence_number"]}}},"required":["id","cpu","memory","storage","gpu","endpoints"]},"count":{"type":"number"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["resource","count","price"]}}},"required":["name","requirements","resources"]},"created_at":{"type":"string"}},"required":["id","state","group_spec","created_at"]},"description":"The resource groups the deployment declares, as recorded for it rather than as its SDL spells them."},"settings":{"type":"object","nullable":true,"properties":{"name":{"type":"string","nullable":true,"description":"The name this deployment carries, or null for one created before the console recorded names."},"runtimeLimitHours":{"type":"integer","nullable":true,"description":"Runtime limit in hours chosen at deployment creation, or null for always-on funding."},"runtimeEndsAt":{"type":"string","nullable":true,"format":"date-time","description":"When the runtime limit expires, or null for a limit no lease has anchored yet."},"closed":{"type":"boolean","description":"The console's own bookkeeping, which can trail `deployment.state`. Trust `deployment.state` when the two disagree."}},"required":["name","runtimeLimitHours","runtimeEndsAt","closed"],"description":"What the console holds about this deployment, or null when it holds nothing."},"projectId":{"type":"string","nullable":true,"format":"uuid","description":"Project the deployment is filed in, or null for one the console has not filed. Present only for requests in organization mode."}},"required":["deployment","leases","escrow_account","name","groups","settings"]}},"pagination":{"type":"object","properties":{"total":{"type":"number","nullable":true,"description":"Deployments the owner holds in this state, counted from the console's own index. The archive (`closed`) is listed from that same index, so its count always agrees with its pages; `active` deployments are listed live, so their count can briefly lag behind the list. Null when the index cannot answer, which leaves the count unknown rather than understated; page on `hasMore` regardless."},"skip":{"type":"number"},"limit":{"type":"number"},"hasMore":{"type":"boolean","description":"Whether a further page exists."}},"required":["total","skip","limit","hasMore"]}},"required":["deployments","pagination"]}},"required":["data"]}}}},"400":{"description":"`state` names neither `active` nor `closed`, `reverse` names neither `true` nor `false`, `skip` is below zero, `limit` is not a whole number between 1 and the page cap, or `search` is longer than a deployment name may be","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"422":{"description":"The owner holds more `active` deployments than a search spans. Page through them without a `search` instead. A search of the archive (`state=closed`) is refused this way only while the console's index is unreachable. In organization mode, a list that would have to check more open deployments than that cap is refused the same way; narrow it with `projectId`","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}}}}},"/v1/deposit-deployment":{"post":{"summary":"Deposit into a deployment (deprecated)","description":"Deprecated. Managed deployments are funded automatically; this endpoint will be removed in a future release.","operationId":"depositDeployment","deprecated":true,"tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"deposit":{"type":"number","minimum":0.000001,"description":"Amount to deposit in dollars (e.g. 5.5). Accepted for backwards compatibility; automatic funding makes it unnecessary."}},"required":["dseq","deposit"]}},"required":["data"]}}}},"responses":{"200":{"description":"Deposit successful","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"}},"required":["owner","dseq"]},"state":{"type":"string"},"hash":{"type":"string"},"created_at":{"type":"string"}},"required":["id","state","hash","created_at"]},"leases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"string"},"bseq":{"type":"number"}},"required":["owner","dseq","gseq","oseq","provider","bseq"]},"state":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"created_at":{"type":"string"},"closed_on":{"type":"string"},"reason":{"type":"string"},"reclamation":{"type":"object","properties":{"window":{"type":"string"},"started_at":{"type":"string"},"deadline":{"type":"string"},"reason":{"type":"string"}},"description":"Present only on a lease its provider has flagged for reclamation. `deadline` is unix seconds; `reason` is a `lease_closed_reason_*` enum name."},"detectedGpus":{"type":"object","properties":{"services":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","nullable":true,"description":"Canonical vendor key, e.g. `nvidia`. Null for a card the console's model catalog does not list."},"model":{"type":"string","nullable":true,"description":"Canonical SDL model key, e.g. `h100`. Null for a card the console's model catalog does not list."},"displayName":{"type":"string","description":"Marketing-correct label, e.g. `H100`, falling back to what the driver reported for an unlisted card."},"memoryMb":{"type":"integer","description":"Per-card memory as the driver reports it, in MiB."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the catalog names one, else null."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Identical cards folded into one entry."}},"required":["vendor","model","displayName","memoryMb","interface","count"]}}},"required":["service","gpus"]}},"driverVersion":{"type":"string","nullable":true},"detectedAt":{"type":"string","format":"date-time"}},"required":["services","driverVersion","detectedAt"],"description":"GPUs the console observed running inside this lease's containers, as distinct from the models its group requested. Absent until the console has looked, and for a lease it cannot look inside."},"offeredGpus":{"type":"object","properties":{"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","description":"Vendor key the provider offered, e.g. `nvidia`."},"model":{"type":"string","description":"SDL model key the provider offered, e.g. `a100`."},"displayName":{"type":"string","description":"Marketing-correct label for the model, e.g. `A100`."},"ram":{"type":"string","nullable":true,"description":"Per-card memory, e.g. `80Gi`, when the offer names it. Providers name it only when the SDL asked for it."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the offer names it. Providers name it only when the SDL asked for it."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Cards of this model offered across every replica, identical ones folded into one entry."}},"required":["vendor","model","displayName","ram","interface","count"]}},"recordedAt":{"type":"string","format":"date-time"}},"required":["gpus","recordedAt"],"description":"GPUs the provider offered for this lease in the bid it was created from, which is what an `Any model` request resolves to. Absent until the console has recorded the bid, and for a lease whose deployment the console does not manage."},"status":{"type":"object","nullable":true,"properties":{"forwarded_ports":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"port":{"type":"number"},"externalPort":{"type":"number"},"host":{"type":"string"},"available":{"type":"number"}},"required":["port","externalPort"]}}},"ips":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"IP":{"type":"string"},"Port":{"type":"number"},"ExternalPort":{"type":"number"},"Protocol":{"type":"string"}},"required":["IP","Port","ExternalPort","Protocol"]}}},"services":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"type":"string"},"available":{"type":"number"},"total":{"type":"number"},"uris":{"type":"array","items":{"type":"string"}},"observed_generation":{"type":"number"},"replicas":{"type":"number"},"updated_replicas":{"type":"number"},"ready_replicas":{"type":"number"},"available_replicas":{"type":"number"}},"required":["name","available","total","uris","observed_generation","replicas","updated_replicas","ready_replicas","available_replicas"]}}},"required":["forwarded_ports","ips","services"]}},"required":["id","state","price","created_at","closed_on","status"]}},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]}},"required":["deployment","leases","escrow_account"]}},"required":["data"]}}}},"400":{"description":"With `code` `unsupported_deposit_denom`, the deposit is in a denomination a project budget cannot count","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"403":{"description":"With `code` `project_forbidden`, the deployment is filed in a project the caller cannot change. With `code` `project_budget_exceeded`, the deposit would take a project that stops top-ups past its monthly budget","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"503":{"description":"With `code` `deposit_price_unavailable`, the deposit could not be priced against its project's budget. Transient and worth retrying","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/deployments/{dseq}/definition":{"post":{"summary":"Record the definition of a deployment the console holds none for","description":"Records the SDL of a deployment the console holds no definition for, such as one created before the console recorded definitions or created outside it. The SDL and its sealed secrets are taken as on create, and the secrets are stored the same way. The SDL is recorded only if it resolves to the manifest version the deployment already runs, so recording sends no deployment update and no manifest, and a closed deployment can be given its definition too. Afterwards the deployment reads back and takes patches like any other. To apply an SDL that differs from what the deployment runs, update the deployment with it instead.","operationId":"createDeploymentDefinition","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"required":true,"description":"Deployment sequence number","name":"dseq","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"sdl":{"type":"string","maxLength":524288},"sealedSecrets":{"type":"string","minLength":1,"description":"Compact JWE sealing a flat name-to-value map of the secrets this SDL references, encrypted to the console's public sealing key. Fetch that key and the claims to sign from GET /v1/sdl-secrets-context. Values are never returned by any endpoint once sealed."}},"required":["sdl"]}},"required":["data"]}}}},"responses":{"201":{"description":"The definition was recorded, as GET /v1/deployments/{dseq} now returns it","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"sdl":{"type":"string","description":"The SDL the console stored for this deployment. Re-serialized YAML, so not byte-identical to the submitted document."},"manifestVersion":{"type":"string","description":"Base64 of the manifest version the console recorded for this deployment. Deliberately not a hash of the `sdl` above."}},"required":["sdl","manifestVersion"]}},"required":["data"]}}}},"400":{"description":"The SDL is not valid, leaves a secret reference with no value from `sealedSecrets`, supplies a name no service references, or carries a `sealedSecrets` value that is malformed, tampered with, expired or not a flat object of string values","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"403":{"description":"The `sealedSecrets` value was sealed for a different user, or bound to a different SDL than the one submitted. With `code` `project_forbidden`, the deployment is filed in a project the caller cannot change","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"404":{"description":"No deployment of yours matches `dseq`","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"409":{"description":"With `code` `deployment_definition_exists`, the console already holds a definition for this deployment, which this route never replaces: patch it instead. With `code` `deployment_record_unfiled`, the member who filed this team deployment deleted their account and the caller holds a record of the same deployment id in another organization. Without a code, the `sealedSecrets` value was sealed to a key the console no longer holds, so refetch `GET /v1/sdl-secrets-context` and seal again","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"422":{"description":"The SDL does not resolve to the manifest version the deployment runs: `code` is `deployment_definition_mismatch`, and nothing is recorded. Update the deployment to apply it instead","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"503":{"description":"The key management service, or the version the deployment runs, could not be read. Transient and worth retrying","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}}}}},"/v1/addresses/{address}/deployments/{skip}/{limit}":{"get":{"summary":"Get a list of deployments by owner address.","tags":["Addresses","Deployments"],"security":[],"parameters":[{"schema":{"type":"string","description":"Wallet Address","example":"akash13265twfqejnma6cc93rw5dxk4cldyz2zyy8cdm"},"required":true,"name":"address","in":"path"},{"schema":{"type":"number","nullable":true,"minimum":0,"description":"Deployments to skip","example":10},"required":false,"name":"skip","in":"path"},{"schema":{"type":"number","minimum":1,"maximum":100,"description":"Deployments to return","example":10},"required":true,"name":"limit","in":"path"},{"schema":{"type":"string","enum":["active","closed"],"description":"Filter by status","example":"closed"},"required":true,"name":"status","in":"query"},{"schema":{"type":"string","description":"Reverse sorting","example":"true"},"required":false,"name":"reverseSorting","in":"query"}],"responses":{"200":{"description":"Returns deployment list","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"},"results":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"status":{"type":"string"},"createdHeight":{"type":"number"},"cpuUnits":{"type":"number"},"gpuUnits":{"type":"number"},"memoryQuantity":{"type":"number"},"storageQuantity":{"type":"number"},"leases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"provider":{"type":"object","properties":{"address":{"type":"string"},"hostUri":{"type":"string"}},"required":["address","hostUri"]},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"state":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["id","owner","dseq","gseq","oseq","state","price"]}}},"required":["owner","dseq","status","createdHeight","cpuUnits","gpuUnits","memoryQuantity","storageQuantity","leases"]}}},"required":["count","results"]}}}},"400":{"description":"Invalid address"}}}},"/v1/deployment/{owner}/{dseq}":{"get":{"summary":"Get deployment details","tags":["Deployments"],"security":[],"parameters":[{"schema":{"type":"string","description":"Owner's Address","example":"akash13265twfqejnma6cc93rw5dxk4cldyz2zyy8cdm"},"required":true,"name":"owner","in":"path"},{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"Deployment sequence number"},"required":true,"name":"dseq","in":"path"}],"responses":{"200":{"description":"Returns deployment details","content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"balance":{"type":"number"},"denom":{"type":"string"},"status":{"type":"string"},"totalMonthlyCostUDenom":{"type":"number"},"leases":{"type":"array","items":{"type":"object","properties":{"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"object","nullable":true,"properties":{"address":{"type":"string"},"hostUri":{"type":"string"},"isDeleted":{"type":"boolean"},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["address","hostUri","isDeleted","attributes"]},"status":{"type":"string"},"monthlyCostUDenom":{"type":"number"},"cpuUnits":{"type":"number"},"gpuUnits":{"type":"number"},"memoryQuantity":{"type":"number"},"storageQuantity":{"type":"number"}},"required":["gseq","oseq","provider","status","monthlyCostUDenom","cpuUnits","gpuUnits","memoryQuantity","storageQuantity"]}},"events":{"type":"array","items":{"type":"object","properties":{"txHash":{"type":"string"},"date":{"type":"string"},"type":{"type":"string"}},"required":["txHash","date","type"]}},"other":{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string"}},"required":["owner","dseq"]},"state":{"type":"string"},"hash":{"type":"string"},"created_at":{"type":"string"}},"required":["id","state","hash","created_at"]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string"},"gseq":{"type":"number"}},"required":["owner","dseq","gseq"]},"state":{"type":"string"},"group_spec":{"type":"object","properties":{"name":{"type":"string"},"requirements":{"type":"object","properties":{"signed_by":{"type":"object","properties":{"all_of":{"type":"array","items":{"type":"string"}},"any_of":{"type":"array","items":{"type":"string"}}},"required":["all_of","any_of"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["signed_by","attributes"]},"resources":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"object","properties":{"id":{"type":"number"},"cpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"memory":{"type":"object","properties":{"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["quantity","attributes"]},"storage":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["name","quantity","attributes"]}},"gpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"endpoints":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"sequence_number":{"type":"number"}},"required":["kind","sequence_number"]}}},"required":["id","cpu","memory","storage","gpu","endpoints"]},"count":{"type":"number"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["resource","count","price"]}}},"required":["name","requirements","resources"]},"created_at":{"type":"string"}},"required":["id","state","group_spec","created_at"]}},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]}},"required":["deployment","groups","escrow_account"]}},"required":["owner","dseq","balance","denom","status","totalMonthlyCostUDenom","leases","events","other"]}}}},"400":{"description":"Invalid address or dseq"},"404":{"description":"Deployment not found"}}}},"/akash/deployment/{version}/deployments/list":{"get":{"summary":"List deployments (database fallback)","tags":["Deployments"],"security":[],"parameters":[{"schema":{"type":"string"},"required":false,"name":"filters.owner","in":"query"},{"schema":{"type":"string","enum":["active","closed"]},"required":false,"name":"filters.state","in":"query"},{"schema":{"type":"number","nullable":true,"minimum":0},"required":false,"name":"pagination.offset","in":"query"},{"schema":{"type":"number","nullable":true,"minimum":0},"required":false,"name":"pagination.limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"pagination.key","in":"query"},{"schema":{"type":"string"},"required":false,"name":"pagination.count_total","in":"query"},{"schema":{"type":"boolean","nullable":true},"required":false,"name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"Returns paginated list of deployments from database","content":{"application/json":{"schema":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"}},"required":["owner","dseq"]},"state":{"type":"string"},"hash":{"type":"string"},"created_at":{"type":"string"}},"required":["id","state","hash","created_at"]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"}},"required":["owner","dseq","gseq"]},"state":{"type":"string"},"group_spec":{"type":"object","properties":{"name":{"type":"string"},"requirements":{"type":"object","properties":{"signed_by":{"type":"object","properties":{"all_of":{"type":"array","items":{"type":"string"}},"any_of":{"type":"array","items":{"type":"string"}}},"required":["all_of","any_of"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["signed_by","attributes"]},"resources":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"object","properties":{"id":{"type":"number"},"cpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"memory":{"type":"object","properties":{"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["quantity","attributes"]},"storage":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["name","quantity","attributes"]}},"gpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"endpoints":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"sequence_number":{"type":"number"}},"required":["kind","sequence_number"]}}},"required":["id","cpu","memory","storage","gpu","endpoints"]},"count":{"type":"number"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["resource","count","price"]}}},"required":["name","requirements","resources"]},"created_at":{"type":"string"}},"required":["id","state","group_spec","created_at"]}},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]}},"required":["deployment","groups","escrow_account"]}},"pagination":{"type":"object","properties":{"next_key":{"type":"string","nullable":true},"total":{"type":"string"}},"required":["next_key","total"]}},"required":["deployments","pagination"]}}}}}}},"/akash/deployment/{version}/deployments/info":{"get":{"summary":"Get deployment info (database fallback)","tags":["Deployments"],"security":[],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id.owner","in":"query"},{"schema":{"type":"string"},"required":true,"name":"id.dseq","in":"query"}],"responses":{"200":{"description":"Returns deployment info from database","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"code":{"type":"number"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"required":["code","message","details"]},{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"}},"required":["owner","dseq"]},"state":{"type":"string"},"hash":{"type":"string"},"created_at":{"type":"string"}},"required":["id","state","hash","created_at"]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"}},"required":["owner","dseq","gseq"]},"state":{"type":"string"},"group_spec":{"type":"object","properties":{"name":{"type":"string"},"requirements":{"type":"object","properties":{"signed_by":{"type":"object","properties":{"all_of":{"type":"array","items":{"type":"string"}},"any_of":{"type":"array","items":{"type":"string"}}},"required":["all_of","any_of"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["signed_by","attributes"]},"resources":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"object","properties":{"id":{"type":"number"},"cpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"memory":{"type":"object","properties":{"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["quantity","attributes"]},"storage":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["name","quantity","attributes"]}},"gpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"endpoints":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"sequence_number":{"type":"number"}},"required":["kind","sequence_number"]}}},"required":["id","cpu","memory","storage","gpu","endpoints"]},"count":{"type":"number"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["resource","count","price"]}}},"required":["name","requirements","resources"]},"created_at":{"type":"string"}},"required":["id","state","group_spec","created_at"]}},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]}},"required":["deployment","groups","escrow_account"]}]}}}},"404":{"description":"Deployment not found"}}}},"/v1/weekly-cost":{"get":{"summary":"Get weekly deployment cost","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Returns the weekly cost of the deployments with auto top-up enabled, limited to the caller's projects unless the caller may read the organization's whole spend","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"weeklyCost":{"type":"number","description":"Total weekly cost in USD of the deployments with auto top-up enabled whose spend the caller may read"}},"required":["weeklyCost"]}},"required":["data"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/spend-rate":{"get":{"summary":"Get what each running deployment costs per block","operationId":"getSpendRate","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Returns the summed price per block of the live leases of each deployment of the wallet the request acts through, limited to the caller's projects unless the caller may read the organization's whole spend","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"dseq":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"],"description":"Summed price per block of the deployment's live leases in that denom, written as a lease writes its own price."}},"required":["dseq","price"]},"description":"One entry per denom for each deployment holding at least one live lease. A deployment with no live lease is absent."}},"required":["deployments"]}},"required":["data"]}}}},"403":{"description":"The wallet is not initialized yet","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}},"404":{"description":"The request has no wallet to act through","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"}},"required":["error","message","code","type"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/sdl-secrets-context":{"get":{"summary":"Get SDL secrets encryption context","tags":["SDL Secrets"],"operationId":"getSDLSecretsContext","security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Returns SDL secrets context","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"sub":{"type":"string","description":"The subject of the SDL secrets context"},"kid":{"type":"string","description":"The key ID of the SDL secrets context"},"jwk":{"type":"object","properties":{"kty":{"type":"string"},"n":{"type":"string"},"e":{"type":"string"},"use":{"type":"string"},"alg":{"type":"string"}},"required":["kty","n","e","use","alg"],"description":"The JSON Web Key used to encrypt the SDL secrets"},"requiredClaims":{"type":"array","items":{"type":"string","enum":["kid","sub","exp"]},"description":"The required claims for the SDL secrets context"}},"required":["sub","kid","jwk","requiredClaims"]}},"required":["data"]}}}},"503":{"description":"SDL secrets encryption is unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/leases":{"post":{"summary":"Create leases and send manifest","description":"Creates the leases, then sends each provider its manifest. If a provider refuses the manifest once its lease exists, the error carries code `manifest_not_delivered` and the status the provider path produced. Send the same request again to retry the manifest, or close the deployment to stop paying for it.","operationId":"createLease","tags":["Leases"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"manifest":{"type":"string","description":"The manifest to send to the provider, in YAML format (deprecated)","deprecated":true},"leases":{"type":"array","items":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"string"}},"required":["dseq","gseq","oseq","provider"]}}},"required":["leases"]}}}},"responses":{"200":{"description":"Leases created and manifest sent","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"}},"required":["owner","dseq"]},"state":{"type":"string"},"hash":{"type":"string"},"created_at":{"type":"string"}},"required":["id","state","hash","created_at"]},"leases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"string"},"bseq":{"type":"number"}},"required":["owner","dseq","gseq","oseq","provider","bseq"]},"state":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"created_at":{"type":"string"},"closed_on":{"type":"string"},"reason":{"type":"string"},"reclamation":{"type":"object","properties":{"window":{"type":"string"},"started_at":{"type":"string"},"deadline":{"type":"string"},"reason":{"type":"string"}},"description":"Present only on a lease its provider has flagged for reclamation. `deadline` is unix seconds; `reason` is a `lease_closed_reason_*` enum name."},"detectedGpus":{"type":"object","properties":{"services":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","nullable":true,"description":"Canonical vendor key, e.g. `nvidia`. Null for a card the console's model catalog does not list."},"model":{"type":"string","nullable":true,"description":"Canonical SDL model key, e.g. `h100`. Null for a card the console's model catalog does not list."},"displayName":{"type":"string","description":"Marketing-correct label, e.g. `H100`, falling back to what the driver reported for an unlisted card."},"memoryMb":{"type":"integer","description":"Per-card memory as the driver reports it, in MiB."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the catalog names one, else null."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Identical cards folded into one entry."}},"required":["vendor","model","displayName","memoryMb","interface","count"]}}},"required":["service","gpus"]}},"driverVersion":{"type":"string","nullable":true},"detectedAt":{"type":"string","format":"date-time"}},"required":["services","driverVersion","detectedAt"],"description":"GPUs the console observed running inside this lease's containers, as distinct from the models its group requested. Absent until the console has looked, and for a lease it cannot look inside."},"offeredGpus":{"type":"object","properties":{"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","description":"Vendor key the provider offered, e.g. `nvidia`."},"model":{"type":"string","description":"SDL model key the provider offered, e.g. `a100`."},"displayName":{"type":"string","description":"Marketing-correct label for the model, e.g. `A100`."},"ram":{"type":"string","nullable":true,"description":"Per-card memory, e.g. `80Gi`, when the offer names it. Providers name it only when the SDL asked for it."},"interface":{"type":"string","nullable":true,"description":"`sxm` or `pcie` when the offer names it. Providers name it only when the SDL asked for it."},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Cards of this model offered across every replica, identical ones folded into one entry."}},"required":["vendor","model","displayName","ram","interface","count"]}},"recordedAt":{"type":"string","format":"date-time"}},"required":["gpus","recordedAt"],"description":"GPUs the provider offered for this lease in the bid it was created from, which is what an `Any model` request resolves to. Absent until the console has recorded the bid, and for a lease whose deployment the console does not manage."},"status":{"type":"object","nullable":true,"properties":{"forwarded_ports":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"port":{"type":"number"},"externalPort":{"type":"number"},"host":{"type":"string"},"available":{"type":"number"}},"required":["port","externalPort"]}}},"ips":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"IP":{"type":"string"},"Port":{"type":"number"},"ExternalPort":{"type":"number"},"Protocol":{"type":"string"}},"required":["IP","Port","ExternalPort","Protocol"]}}},"services":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"type":"string"},"available":{"type":"number"},"total":{"type":"number"},"uris":{"type":"array","items":{"type":"string"}},"observed_generation":{"type":"number"},"replicas":{"type":"number"},"updated_replicas":{"type":"number"},"ready_replicas":{"type":"number"},"available_replicas":{"type":"number"}},"required":["name","available","total","uris","observed_generation","replicas","updated_replicas","ready_replicas","available_replicas"]}}},"required":["forwarded_ports","ips","services"]}},"required":["id","state","price","created_at","closed_on","status"]}},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]}},"required":["deployment","leases","escrow_account"]}},"required":["data"]}}}},"403":{"description":"With `code` `project_forbidden`, the deployment is filed in a project the caller cannot change","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["error","message","code","type"]}}}},"409":{"description":"With `code` `deployment_record_unfiled`, the member who filed this team deployment deleted their account and the caller holds a record of the same deployment id in another organization. With `code` `stored_secrets_unavailable`, the stored secrets were sealed for a member who deleted their account, so update the deployment with its full SDL and secret values","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["error","message","code","type"]}}}},"502":{"description":"A provider could not be reached. With code `provider_unreachable` no lease was created, so choose another bid. With code `manifest_not_delivered` the lease exists, as described above.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"type":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["error","message","code","type"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/akash/market/{version}/leases/list":{"get":{"summary":"List leases (database fallback)","tags":["Leases"],"security":[],"parameters":[{"schema":{"type":"string"},"required":false,"name":"filters.owner","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters.dseq","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"filters.gseq","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"filters.oseq","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters.provider","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters.state","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"pagination.offset","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"pagination.limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"pagination.key","in":"query"},{"schema":{"type":"string"},"required":false,"name":"pagination.count_total","in":"query"},{"schema":{"type":"boolean","nullable":true},"required":false,"name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"Returns paginated list of leases from database","content":{"application/json":{"schema":{"type":"object","properties":{"leases":{"type":"array","items":{"type":"object","properties":{"lease":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"string"},"bseq":{"type":"number"}},"required":["owner","dseq","gseq","oseq","provider","bseq"]},"state":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"created_at":{"type":"string"},"closed_on":{"type":"string"},"reason":{"type":"string"}},"required":["id","state","price","created_at","closed_on"]},"escrow_payment":{"type":"object","properties":{"id":{"type":"object","properties":{"aid":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"xid":{"type":"string"}},"required":["aid","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"rate":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"unsettled":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"withdrawn":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","state","rate","balance","unsettled","withdrawn"]}},"required":["id","state"]}},"required":["lease","escrow_payment"]}},"pagination":{"type":"object","properties":{"next_key":{"type":"string","nullable":true},"total":{"type":"string"}},"required":["next_key","total"]}},"required":["leases","pagination"]}}}}}}},"/v1/api-keys":{"get":{"summary":"List all API keys","operationId":"listApiKeys","tags":["API Keys"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Returns list of API keys","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"keyFormat":{"type":"string"},"organizationId":{"type":"string","nullable":true,"format":"uuid","description":"The organization the key acts in. Null for a key created before organizations, which acts in its owner's personal organization."},"projectId":{"type":"string","nullable":true,"format":"uuid","description":"The only project the key reaches, or null when it reaches every project its owner can."}},"required":["id","name","expiresAt","createdAt","updatedAt","lastUsedAt","keyFormat","organizationId","projectId"]}}},"required":["data"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]},"post":{"summary":"Create new API key","tags":["API Keys"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"projectId":{"type":"string","format":"uuid","description":"Limits the key to one project of the organization it is created in."}},"required":["name"]}},"required":["data"]}}}},"responses":{"201":{"description":"API key created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"keyFormat":{"type":"string"},"organizationId":{"type":"string","nullable":true,"format":"uuid","description":"The organization the key acts in. Null for a key created before organizations, which acts in its owner's personal organization."},"projectId":{"type":"string","nullable":true,"format":"uuid","description":"The only project the key reaches, or null when it reaches every project its owner can."},"apiKey":{"type":"string"}},"required":["id","name","expiresAt","createdAt","updatedAt","lastUsedAt","keyFormat","organizationId","projectId","apiKey"]}},"required":["data"]}}}},"404":{"description":"No project with this `projectId` in the caller's reach"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/api-keys/{id}":{"get":{"summary":"Get API key by ID","tags":["API Keys"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns API key details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"keyFormat":{"type":"string"},"organizationId":{"type":"string","nullable":true,"format":"uuid","description":"The organization the key acts in. Null for a key created before organizations, which acts in its owner's personal organization."},"projectId":{"type":"string","nullable":true,"format":"uuid","description":"The only project the key reaches, or null when it reaches every project its owner can."}},"required":["id","name","expiresAt","createdAt","updatedAt","lastUsedAt","keyFormat","organizationId","projectId"]}},"required":["data"]}}}},"404":{"description":"API key not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}},"patch":{"summary":"Update API key","tags":["API Keys"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string"}}}},"required":["data"]}}}},"responses":{"200":{"description":"API key updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"keyFormat":{"type":"string"},"organizationId":{"type":"string","nullable":true,"format":"uuid","description":"The organization the key acts in. Null for a key created before organizations, which acts in its owner's personal organization."},"projectId":{"type":"string","nullable":true,"format":"uuid","description":"The only project the key reaches, or null when it reaches every project its owner can."}},"required":["id","name","expiresAt","createdAt","updatedAt","lastUsedAt","keyFormat","organizationId","projectId"]}},"required":["data"]}}}},"404":{"description":"API key not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}},"delete":{"summary":"Delete API key","tags":["API Keys"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"204":{"description":"API key deleted successfully"},"404":{"description":"API key not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}}},"/v1/bids":{"get":{"summary":"List bids","operationId":"listBids","tags":["Bids"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$"},"required":true,"name":"dseq","in":"query"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"List of bids","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"bid":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"string"},"bseq":{"type":"number"}},"required":["owner","dseq","gseq","oseq","provider","bseq"]},"state":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"created_at":{"type":"string"},"resources_offer":{"type":"array","items":{"type":"object","properties":{"resources":{"type":"object","properties":{"cpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"gpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"memory":{"type":"object","properties":{"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["quantity","attributes"]},"storage":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["name","quantity","attributes"]}},"endpoints":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"sequence_number":{"type":"number"}},"required":["kind","sequence_number"]}}},"required":["cpu","gpu","memory","storage","endpoints"]},"count":{"type":"number"}},"required":["resources","count"]}},"reclamation_window":{"type":"string"}},"required":["id","state","price","created_at","resources_offer"]},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]}},"required":["bid","escrow_account"]}}},"required":["data"]}}}}}}},"/v1/bids/{dseq}":{"get":{"summary":"List bids by dseq","tags":["Bids"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$"},"required":true,"name":"dseq","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"List of bids","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"bid":{"type":"object","properties":{"id":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"gseq":{"type":"number"},"oseq":{"type":"number"},"provider":{"type":"string"},"bseq":{"type":"number"}},"required":["owner","dseq","gseq","oseq","provider","bseq"]},"state":{"type":"string"},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]},"created_at":{"type":"string"},"resources_offer":{"type":"array","items":{"type":"object","properties":{"resources":{"type":"object","properties":{"cpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"gpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["units","attributes"]},"memory":{"type":"object","properties":{"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["quantity","attributes"]},"storage":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"object","properties":{"val":{"type":"string"}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["name","quantity","attributes"]}},"endpoints":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"sequence_number":{"type":"number"}},"required":["kind","sequence_number"]}}},"required":["cpu","gpu","memory","storage","endpoints"]},"count":{"type":"number"}},"required":["resources","count"]}},"reclamation_window":{"type":"string"}},"required":["id","state","price","created_at","resources_offer"]},"escrow_account":{"type":"object","properties":{"id":{"type":"object","properties":{"scope":{"type":"string"},"xid":{"type":"string"}},"required":["scope","xid"]},"state":{"type":"object","properties":{"owner":{"type":"string"},"state":{"type":"string"},"transferred":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"settled_at":{"type":"string"},"funds":{"type":"array","items":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"deposits":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"height":{"type":"string"},"source":{"type":"string"},"balance":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string"}},"required":["denom","amount"]}},"required":["owner","height","source","balance"]}}},"required":["owner","state","transferred","settled_at","funds","deposits"]}},"required":["id","state"]}},"required":["bid","escrow_account"]}}},"required":["data"]}}}}}}},"/v1/certificates":{"post":{"summary":"Create certificate","tags":["Certificate"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"400":{"description":"This endpoint has been removed. mTLS certificates are no longer required as identity is now verified via API key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/balances":{"get":{"summary":"Get user balances","tags":["Wallet"],"security":[],"parameters":[{"schema":{"type":"string","description":"Optional wallet address to fetch balances for instead of the current user"},"required":false,"description":"Optional wallet address to fetch balances for instead of the current user","name":"address","in":"query"}],"responses":{"200":{"description":"Returns user balances","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"balance":{"type":"number"},"deployments":{"type":"number"},"total":{"type":"number"}},"required":["balance","deployments","total"]}},"required":["data"]}}}}}}},"/v1/providers":{"get":{"operationId":"listProviders","summary":"Get a list of providers.","tags":["Providers"],"security":[],"parameters":[{"schema":{"type":"string","enum":["all","trial"],"default":"all"},"required":false,"name":"scope","in":"query"},{"schema":{"type":"string"},"required":false,"name":"addresses","in":"query"}],"responses":{"200":{"description":"Returns a list of providers","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string","nullable":true},"hostUri":{"type":"string"},"createdHeight":{"type":"number"},"email":{"type":"string","nullable":true},"website":{"type":"string","nullable":true},"lastCheckDate":{"type":"string","nullable":true},"deploymentCount":{"type":"number","nullable":true},"leaseCount":{"type":"number","nullable":true},"cosmosSdkVersion":{"type":"string"},"akashVersion":{"type":"string"},"ipRegion":{"type":"string","nullable":true},"ipRegionCode":{"type":"string","nullable":true},"ipCountry":{"type":"string","nullable":true},"ipCountryCode":{"type":"string","nullable":true},"ipLat":{"type":"string","nullable":true},"ipLon":{"type":"string","nullable":true},"uptime1d":{"type":"number","nullable":true},"uptime7d":{"type":"number","nullable":true},"uptime30d":{"type":"number","nullable":true},"isValidVersion":{"type":"boolean"},"isOnline":{"type":"boolean"},"lastOnlineDate":{"type":"string","nullable":true},"isAudited":{"type":"boolean"},"stats":{"type":"object","properties":{"cpu":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"gpu":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"memory":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"storage":{"type":"object","properties":{"ephemeral":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"persistent":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]}},"required":["ephemeral","persistent"]}},"required":["cpu","gpu","memory","storage"]},"gpuModels":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string"},"model":{"type":"string"},"ram":{"type":"string"},"interface":{"type":"string"}},"required":["vendor","model","ram","interface"]}},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"},"auditedBy":{"type":"array","items":{"type":"string"}}},"required":["key","value","auditedBy"]}},"host":{"type":"string","nullable":true},"organization":{"type":"string","nullable":true},"statusPage":{"type":"string","nullable":true},"locationRegion":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"hostingProvider":{"type":"string","nullable":true},"hardwareCpu":{"type":"string","nullable":true},"hardwareCpuArch":{"type":"string","nullable":true},"hardwareGpuVendor":{"type":"string","nullable":true},"hardwareGpuModels":{"type":"array","nullable":true,"items":{"type":"string"}},"hardwareDisk":{"type":"array","nullable":true,"items":{"type":"string"}},"featPersistentStorage":{"type":"boolean"},"featPersistentStorageType":{"type":"array","nullable":true,"items":{"type":"string"}},"hardwareMemory":{"type":"string","nullable":true},"networkProvider":{"type":"string","nullable":true},"networkSpeedDown":{"type":"number"},"networkSpeedUp":{"type":"number"},"tier":{"type":"string","nullable":true},"featEndpointCustomDomain":{"type":"boolean"},"workloadSupportChia":{"type":"boolean"},"workloadSupportChiaCapabilities":{"type":"array","nullable":true,"items":{"type":"string"}},"featEndpointIp":{"type":"boolean"}},"required":["owner","name","hostUri","createdHeight","cosmosSdkVersion","akashVersion","ipRegion","ipRegionCode","ipCountry","ipCountryCode","ipLat","ipLon","uptime1d","uptime7d","uptime30d","isValidVersion","isOnline","lastOnlineDate","isAudited","stats","gpuModels","attributes","host","organization","statusPage","locationRegion","country","city","timezone","locationType","hostingProvider","hardwareCpu","hardwareCpuArch","hardwareGpuVendor","hardwareGpuModels","hardwareDisk","featPersistentStorage","featPersistentStorageType","hardwareMemory","networkProvider","networkSpeedDown","networkSpeedUp","tier","featEndpointCustomDomain","workloadSupportChia","workloadSupportChiaCapabilities","featEndpointIp"]}}}}}}}},"/v1/provider-search":{"get":{"summary":"Search providers, one page at a time.","description":"Filters and sorts every provider on the network, then answers the requested page along with how many providers matched.","tags":["Providers"],"security":[],"parameters":[{"schema":{"type":"string","maxLength":200,"description":"Case-insensitive substring matched against each provider's host URI and address."},"required":false,"name":"search","in":"query"},{"schema":{"type":"string","enum":["true","false"],"description":"Only online providers when true, only offline ones when false, both when omitted."},"required":false,"name":"online","in":"query"},{"schema":{"type":"string","enum":["true","false"],"description":"Only audited providers when true, only unaudited ones when false, both when omitted."},"required":false,"name":"audited","in":"query"},{"schema":{"type":"string","description":"Comma-separated provider addresses the search is limited to, at most 100."},"required":false,"name":"addresses","in":"query"},{"schema":{"type":"string","description":"Comma-separated location-region attribute values, at most 50. Keeps providers in any of them.","example":"eu-central,na-us-west"},"required":false,"name":"regions","in":"query"},{"schema":{"type":"string","enum":["true","false"],"description":"Only providers with GPUs when true, only providers without any when false, both when omitted."},"required":false,"name":"gpu","in":"query"},{"schema":{"type":"string","description":"Comma-separated GPU model names, matched ignoring case, at most 50. Keeps providers with any of them.","example":"h100,a100"},"required":false,"name":"gpuModels","in":"query"},{"schema":{"type":"string","enum":["active-leases-desc","active-leases-asc","wallet-leases-desc","wallet-active-leases-desc","gpus-desc"],"default":"active-leases-desc","description":"`active-leases-*` orders by the provider's active lease count, `wallet-leases-desc` and `wallet-active-leases-desc` by how many leases `walletAddress` holds on it, and `gpus-desc` by its GPU count across available, pending and active ones."},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","description":"The wallet whose leases the `wallet-leases-desc` and `wallet-active-leases-desc` sorts count. Required by those sorts."},"required":false,"name":"walletAddress","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0,"description":"Matching providers to skip before the page begins."},"required":false,"name":"skip","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":100,"description":"Providers per page, at most 100."},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Returns a page of the providers matching the search","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"providers":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string","nullable":true},"hostUri":{"type":"string"},"createdHeight":{"type":"number"},"email":{"type":"string","nullable":true},"website":{"type":"string","nullable":true},"lastCheckDate":{"type":"string","nullable":true},"deploymentCount":{"type":"number","nullable":true},"leaseCount":{"type":"number","nullable":true},"cosmosSdkVersion":{"type":"string"},"akashVersion":{"type":"string"},"ipRegion":{"type":"string","nullable":true},"ipRegionCode":{"type":"string","nullable":true},"ipCountry":{"type":"string","nullable":true},"ipCountryCode":{"type":"string","nullable":true},"ipLat":{"type":"string","nullable":true},"ipLon":{"type":"string","nullable":true},"uptime1d":{"type":"number","nullable":true},"uptime7d":{"type":"number","nullable":true},"uptime30d":{"type":"number","nullable":true},"isValidVersion":{"type":"boolean"},"isOnline":{"type":"boolean"},"lastOnlineDate":{"type":"string","nullable":true},"isAudited":{"type":"boolean"},"stats":{"type":"object","properties":{"cpu":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"gpu":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"memory":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"storage":{"type":"object","properties":{"ephemeral":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"persistent":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]}},"required":["ephemeral","persistent"]}},"required":["cpu","gpu","memory","storage"]},"gpuModels":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string"},"model":{"type":"string"},"ram":{"type":"string"},"interface":{"type":"string"}},"required":["vendor","model","ram","interface"]}},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"},"auditedBy":{"type":"array","items":{"type":"string"}}},"required":["key","value","auditedBy"]}},"host":{"type":"string","nullable":true},"organization":{"type":"string","nullable":true},"statusPage":{"type":"string","nullable":true},"locationRegion":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"hostingProvider":{"type":"string","nullable":true},"hardwareCpu":{"type":"string","nullable":true},"hardwareCpuArch":{"type":"string","nullable":true},"hardwareGpuVendor":{"type":"string","nullable":true},"hardwareGpuModels":{"type":"array","nullable":true,"items":{"type":"string"}},"hardwareDisk":{"type":"array","nullable":true,"items":{"type":"string"}},"featPersistentStorage":{"type":"boolean"},"featPersistentStorageType":{"type":"array","nullable":true,"items":{"type":"string"}},"hardwareMemory":{"type":"string","nullable":true},"networkProvider":{"type":"string","nullable":true},"networkSpeedDown":{"type":"number"},"networkSpeedUp":{"type":"number"},"tier":{"type":"string","nullable":true},"featEndpointCustomDomain":{"type":"boolean"},"workloadSupportChia":{"type":"boolean"},"workloadSupportChiaCapabilities":{"type":"array","nullable":true,"items":{"type":"string"}},"featEndpointIp":{"type":"boolean"}},"required":["owner","name","hostUri","createdHeight","cosmosSdkVersion","akashVersion","ipRegion","ipRegionCode","ipCountry","ipCountryCode","ipLat","ipLon","uptime1d","uptime7d","uptime30d","isValidVersion","isOnline","lastOnlineDate","isAudited","stats","gpuModels","attributes","host","organization","statusPage","locationRegion","country","city","timezone","locationType","hostingProvider","hardwareCpu","hardwareCpuArch","hardwareGpuVendor","hardwareGpuModels","hardwareDisk","featPersistentStorage","featPersistentStorageType","hardwareMemory","networkProvider","networkSpeedDown","networkSpeedUp","tier","featEndpointCustomDomain","workloadSupportChia","workloadSupportChiaCapabilities","featEndpointIp"]}},"pagination":{"type":"object","properties":{"total":{"type":"number","description":"Providers matching the filters."},"skip":{"type":"number"},"limit":{"type":"number"},"hasMore":{"type":"boolean","description":"Whether a further page exists."}},"required":["total","skip","limit","hasMore"]}},"required":["providers","pagination"]}},"required":["data"]}}}},"400":{"description":"Invalid search parameters"}}}},"/v1/provider-locations":{"get":{"summary":"Get where each online provider is.","description":"Locates every online provider by its IP address, for drawing providers on a map without loading the full provider list.","tags":["Providers"],"security":[],"responses":{"200":{"description":"Returns the location of every online provider","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string","nullable":true},"hostUri":{"type":"string"},"ipRegion":{"type":"string","nullable":true},"ipCountryCode":{"type":"string","nullable":true},"ipLat":{"type":"string","nullable":true},"ipLon":{"type":"string","nullable":true},"isAudited":{"type":"boolean"},"locationRegion":{"type":"string","nullable":true,"description":"The provider's location-region attribute.","example":"eu-central"},"uptime30d":{"type":"number","nullable":true},"gpuModels":{"type":"array","items":{"type":"string"},"description":"Distinct GPU model names across the provider's nodes.","example":["h100","a100"]},"stats":{"type":"object","properties":{"cpu":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"gpu":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"memory":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"storage":{"type":"object","properties":{"ephemeral":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"persistent":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]}},"required":["ephemeral","persistent"]}},"required":["cpu","gpu","memory","storage"]}},"required":["owner","name","hostUri","ipRegion","ipCountryCode","ipLat","ipLon","isAudited","locationRegion","uptime30d","gpuModels","stats"]}}},"required":["data"]}}}}}}},"/v1/providers/{address}":{"get":{"summary":"Get a provider details.","tags":["Providers"],"security":[],"parameters":[{"schema":{"type":"string","description":"Provider Address","example":"akash18ga02jzaq8cw52anyhzkwta5wygufgu6zsz6xc"},"required":true,"name":"address","in":"path"}],"responses":{"200":{"description":"Return a provider details","content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string","nullable":true},"hostUri":{"type":"string"},"createdHeight":{"type":"number"},"email":{"type":"string","nullable":true},"website":{"type":"string","nullable":true},"lastCheckDate":{"type":"string","nullable":true},"deploymentCount":{"type":"number"},"leaseCount":{"type":"number"},"cosmosSdkVersion":{"type":"string"},"akashVersion":{"type":"string"},"ipRegion":{"type":"string","nullable":true},"ipRegionCode":{"type":"string","nullable":true},"ipCountry":{"type":"string","nullable":true},"ipCountryCode":{"type":"string","nullable":true},"ipLat":{"type":"string","nullable":true},"ipLon":{"type":"string","nullable":true},"uptime1d":{"type":"number"},"uptime7d":{"type":"number"},"uptime30d":{"type":"number"},"isValidVersion":{"type":"boolean"},"isOnline":{"type":"boolean"},"lastOnlineDate":{"type":"string","nullable":true},"isAudited":{"type":"boolean"},"stats":{"type":"object","properties":{"cpu":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"gpu":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"memory":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"storage":{"type":"object","properties":{"ephemeral":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]},"persistent":{"type":"object","properties":{"active":{"type":"number"},"available":{"type":"number"},"pending":{"type":"number"}},"required":["active","available","pending"]}},"required":["ephemeral","persistent"]}},"required":["cpu","gpu","memory","storage"]},"gpuModels":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string"},"model":{"type":"string"},"ram":{"type":"string"},"interface":{"type":"string"}},"required":["vendor","model","ram","interface"]}},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"},"auditedBy":{"type":"array","items":{"type":"string"}}},"required":["key","value","auditedBy"]}},"host":{"type":"string","nullable":true},"organization":{"type":"string","nullable":true},"statusPage":{"type":"string","nullable":true},"locationRegion":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"hostingProvider":{"type":"string","nullable":true},"hardwareCpu":{"type":"string","nullable":true},"hardwareCpuArch":{"type":"string","nullable":true},"reportedCpuArchs":{"type":"array","items":{"type":"string"},"description":"Distinct CPU architectures the provider's nodes reported in its last successful snapshot. Known spellings such as x86_64 or aarch64 are folded onto amd64 or arm64; any other reported value is kept as reported. Empty when no node reports one.","example":["arm64"]},"cpuArchAgreement":{"type":"string","enum":["match","mismatch","unknown"],"description":"Whether the self-declared capabilities/cpu/arch attribute agrees with the architecture the nodes report. Unknown when either side is missing or the declared value is not a recognised architecture."},"gpuDrivers":{"type":"array","items":{"type":"object","properties":{"driverVersion":{"type":"string"},"cudaVersion":{"type":"string","nullable":true,"description":"The newest CUDA version whose minimum Linux driver this driver meets, per NVIDIA's published driver requirements. Null when it meets none of them."},"lastSeenDate":{"type":"string","description":"The UTC day this driver was last read.","example":"2026-09-21"}},"required":["driverVersion","cudaVersion","lastSeenDate"]},"description":"Up to 5 NVIDIA driver versions Console confirmed on GPU leases it runs on this provider over the last 30 days, most recently read first. Empty when none has been confirmed.","example":[{"driverVersion":"550.54.15","cudaVersion":"12.4","lastSeenDate":"2026-09-21"}]},"hardwareGpuVendor":{"type":"string","nullable":true},"hardwareGpuModels":{"type":"array","items":{"type":"string"}},"hardwareDisk":{"type":"array","items":{"type":"string"}},"featPersistentStorage":{"type":"boolean"},"featPersistentStorageType":{"type":"array","items":{"type":"string"}},"hardwareMemory":{"type":"string","nullable":true},"networkProvider":{"type":"string","nullable":true},"networkSpeedDown":{"type":"number"},"networkSpeedUp":{"type":"number"},"tier":{"type":"string","nullable":true},"featEndpointCustomDomain":{"type":"boolean"},"workloadSupportChia":{"type":"boolean"},"workloadSupportChiaCapabilities":{"type":"array","items":{"type":"string"}},"featEndpointIp":{"type":"boolean"},"reclamationWindow":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Seconds of notice the provider gives before it reclaims leased capacity. Null when it advertises none; absent when the provider inventory could not be read.","example":86400},"uptime":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isOnline":{"type":"boolean"},"checkDate":{"type":"string"}},"required":["id","isOnline","checkDate"]}}},"required":["owner","name","hostUri","createdHeight","email","website","lastCheckDate","deploymentCount","leaseCount","cosmosSdkVersion","akashVersion","ipRegion","ipRegionCode","ipCountry","ipCountryCode","ipLat","ipLon","uptime1d","uptime7d","uptime30d","isValidVersion","isOnline","lastOnlineDate","isAudited","stats","gpuModels","attributes","host","organization","statusPage","locationRegion","country","city","timezone","locationType","hostingProvider","hardwareCpu","hardwareCpuArch","reportedCpuArchs","cpuArchAgreement","gpuDrivers","hardwareGpuVendor","hardwareGpuModels","hardwareDisk","featPersistentStorage","featPersistentStorageType","hardwareMemory","networkProvider","networkSpeedDown","networkSpeedUp","tier","featEndpointCustomDomain","workloadSupportChia","workloadSupportChiaCapabilities","featEndpointIp","uptime"]}}}},"400":{"description":"Invalid address"},"404":{"description":"Provider not found"}}}},"/v1/providers/{providerAddress}/active-leases-graph-data":{"get":{"tags":["Analytics","Providers"],"security":[],"parameters":[{"schema":{"type":"string","example":"akash18ga02jzaq8cw52anyhzkwta5wygufgu6zsz6xc"},"required":true,"name":"providerAddress","in":"path"}],"responses":{"200":{"description":"Returns a provider's active leases graph data","content":{"application/json":{"schema":{"type":"object","properties":{"currentValue":{"type":"number"},"compareValue":{"type":"number"},"snapshots":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","example":"2021-07-01T00:00:00.000Z"},"value":{"type":"number","example":100}},"required":["date","value"]}},"now":{"type":"object","properties":{"count":{"type":"number","example":100}},"required":["count"]},"compare":{"type":"object","properties":{"count":{"type":"number","example":100}},"required":["count"]}},"required":["currentValue","compareValue","snapshots","now","compare"]}}}},"400":{"description":"Invalid address"}}}},"/v1/auditors":{"get":{"tags":["Providers"],"security":[],"summary":"Get a list of auditors.","responses":{"200":{"description":"List of auditors","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"address":{"type":"string"},"website":{"type":"string"}},"required":["id","name","address","website"]}}}}}}}},"/v1/provider-attributes-schema":{"get":{"summary":"Get the provider attributes schema","tags":["Providers"],"security":[],"responses":{"200":{"description":"Return the provider attributes schema","content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"email":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"organization":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"website":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"tier":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"status-page":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"location-region":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"country":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"city":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"timezone":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"location-type":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"hosting-provider":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"hardware-cpu":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"hardware-cpu-arch":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"hardware-gpu":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"hardware-gpu-model":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"hardware-disk":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"hardware-memory":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"network-provider":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"network-speed-up":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"network-speed-down":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"feat-persistent-storage":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"feat-persistent-storage-type":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"workload-support-chia":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"workload-support-chia-capabilities":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"feat-endpoint-ip":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]},"feat-endpoint-custom-domain":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","option","multiple-option"]},"required":{"type":"boolean"},"description":{"type":"string"},"values":{"type":"array","nullable":true,"items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"value":{"nullable":true}},"required":["key","description"]}}},"required":["key","type","required","description"]}},"required":["host","email","organization","website","tier","status-page","location-region","country","city","timezone","location-type","hosting-provider","hardware-cpu","hardware-cpu-arch","hardware-gpu","hardware-gpu-model","hardware-disk","hardware-memory","network-provider","network-speed-up","network-speed-down","feat-persistent-storage","feat-persistent-storage-type","workload-support-chia","workload-support-chia-capabilities","feat-endpoint-ip","feat-endpoint-custom-domain"]}}}}}}},"/v1/provider-regions":{"get":{"summary":"Get a list of provider regions","tags":["Providers"],"security":[],"responses":{"200":{"description":"Return a list of provider regions","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"providers":{"type":"array","items":{"type":"string"}},"key":{"type":"string"},"description":{"type":"string"},"value":{"type":"string"}},"required":["providers","key","description"]}}}}}}}},"/v1/provider-dashboard/{owner}":{"get":{"summary":"Get dashboard data for provider console.","tags":["Providers"],"security":[],"parameters":[{"schema":{"type":"string","example":"akash18ga02jzaq8cw52anyhzkwta5wygufgu6zsz6xc"},"required":true,"name":"owner","in":"path"}],"responses":{"200":{"description":"Dashboard data","content":{"application/json":{"schema":{"type":"object","properties":{"current":{"type":"object","properties":{"date":{"type":"string"},"height":{"type":"number"},"activeLeaseCount":{"type":"number"},"totalLeaseCount":{"type":"number"},"dailyLeaseCount":{"type":"number"},"totalUAktEarned":{"type":"number"},"dailyUAktEarned":{"type":"number"},"totalUUsdcEarned":{"type":"number"},"dailyUUsdcEarned":{"type":"number"},"totalUActEarned":{"type":"number"},"dailyUActEarned":{"type":"number"},"totalUUsdEarned":{"type":"number"},"dailyUUsdEarned":{"type":"number"},"activeCPU":{"type":"number"},"activeGPU":{"type":"number"},"activeMemory":{"type":"number"},"activeEphemeralStorage":{"type":"number"},"activePersistentStorage":{"type":"number"},"activeStorage":{"type":"number"}},"required":["date","height","activeLeaseCount","totalLeaseCount","dailyLeaseCount","totalUAktEarned","dailyUAktEarned","totalUUsdcEarned","dailyUUsdcEarned","totalUActEarned","dailyUActEarned","totalUUsdEarned","dailyUUsdEarned","activeCPU","activeGPU","activeMemory","activeEphemeralStorage","activePersistentStorage","activeStorage"]},"previous":{"type":"object","properties":{"date":{"type":"string"},"height":{"type":"number"},"activeLeaseCount":{"type":"number"},"totalLeaseCount":{"type":"number"},"dailyLeaseCount":{"type":"number"},"totalUAktEarned":{"type":"number"},"dailyUAktEarned":{"type":"number"},"totalUUsdcEarned":{"type":"number"},"dailyUUsdcEarned":{"type":"number"},"totalUActEarned":{"type":"number"},"dailyUActEarned":{"type":"number"},"totalUUsdEarned":{"type":"number"},"dailyUUsdEarned":{"type":"number"},"activeCPU":{"type":"number"},"activeGPU":{"type":"number"},"activeMemory":{"type":"number"},"activeEphemeralStorage":{"type":"number"},"activePersistentStorage":{"type":"number"},"activeStorage":{"type":"number"}},"required":["date","height","activeLeaseCount","totalLeaseCount","dailyLeaseCount","totalUAktEarned","dailyUAktEarned","totalUUsdcEarned","dailyUUsdcEarned","totalUActEarned","dailyUActEarned","totalUUsdEarned","dailyUUsdEarned","activeCPU","activeGPU","activeMemory","activeEphemeralStorage","activePersistentStorage","activeStorage"]}},"required":["current","previous"]}}}},"404":{"description":"Provider not found"}}}},"/v1/provider-earnings/{owner}":{"get":{"summary":"Get earnings data for provider console.","tags":["Providers"],"security":[],"parameters":[{"schema":{"type":"string","description":"Provider Address","example":"akash18ga02jzaq8cw52anyhzkwta5wygufgu6zsz6xc"},"required":true,"name":"owner","in":"path"},{"schema":{"type":"string","format":"YYYY-MM-DD","description":"Start date in YYYY-MM-DD format","example":"2023-01-01"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string","format":"YYYY-MM-DD","description":"End date in YYYY-MM-DD format","example":"2023-02-01"},"required":true,"name":"to","in":"query"}],"responses":{"200":{"description":"Earnings data","content":{"application/json":{"schema":{"type":"object","properties":{"earnings":{"type":"object","properties":{"totalUAktEarned":{"type":"number"},"totalUUsdcEarned":{"type":"number"},"totalUActEarned":{"type":"number"},"totalUUsdEarned":{"type":"number"}},"required":["totalUAktEarned","totalUUsdcEarned","totalUActEarned","totalUUsdEarned"]}},"required":["earnings"]}}}},"404":{"description":"Provider not found"}}}},"/v1/provider-versions":{"get":{"summary":"Get providers grouped by version.","tags":["Providers"],"security":[],"responses":{"200":{"description":"List of providers grouped by version.","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object","properties":{"version":{"type":"string"},"count":{"type":"number"},"ratio":{"type":"number"},"providers":{"type":"array","items":{"type":"string"}}},"required":["version","count","ratio","providers"]}}}}}}}},"/v1/provider-graph-data/{dataName}":{"get":{"tags":["Analytics"],"security":[],"parameters":[{"schema":{"type":"string","example":"cpu","enum":["count","cpu","gpu","memory","storage"]},"required":true,"name":"dataName","in":"path"}],"responses":{"200":{"description":"Returns provider graph data","content":{"application/json":{"schema":{"type":"object","properties":{"currentValue":{"type":"number"},"compareValue":{"type":"number"},"snapshots":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","example":"2021-07-01T00:00:00.000Z"},"value":{"type":"number","example":100}},"required":["date","value"]}},"now":{"type":"object","properties":{"count":{"type":"number","example":100},"cpu":{"type":"number","example":100},"gpu":{"type":"number","example":100},"memory":{"type":"number","example":100},"storage":{"type":"number","example":100}},"required":["count","cpu","gpu","memory","storage"]},"compare":{"type":"object","properties":{"count":{"type":"number","example":100},"cpu":{"type":"number","example":100},"gpu":{"type":"number","example":100},"memory":{"type":"number","example":100},"storage":{"type":"number","example":100}},"required":["count","cpu","gpu","memory","storage"]}},"required":["currentValue","compareValue","snapshots"]}}}},"404":{"description":"Graph data not found"}}}},"/v1/providers/{provider}/deployments/{skip}/{limit}":{"get":{"summary":"Get a list of deployments for a provider.","tags":["Providers","Deployments"],"security":[],"parameters":[{"schema":{"type":"string","description":"Provider Address","example":"akash18ga02jzaq8cw52anyhzkwta5wygufgu6zsz6xc"},"required":true,"name":"provider","in":"path"},{"schema":{"type":"number","nullable":true,"minimum":0,"description":"Deployments to skip","example":10},"required":false,"name":"skip","in":"path"},{"schema":{"type":"number","minimum":1,"maximum":100,"description":"Deployments to return","example":10},"required":true,"name":"limit","in":"path"},{"schema":{"type":"string","enum":["active","closed"],"description":"Filter by status","example":"closed"},"required":false,"name":"status","in":"query"}],"responses":{"200":{"description":"Returns deployment list","content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"number"},"deployments":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string"},"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"denom":{"type":"string"},"createdHeight":{"type":"number"},"createdDate":{"type":"string","nullable":true},"status":{"type":"string"},"balance":{"type":"number"},"transferred":{"type":"number"},"settledAt":{"type":"number","nullable":true},"resources":{"type":"object","properties":{"cpu":{"type":"number"},"memory":{"type":"number"},"gpu":{"type":"number"},"ephemeralStorage":{"type":"number"},"persistentStorage":{"type":"number"}},"required":["cpu","memory","gpu","ephemeralStorage","persistentStorage"]},"leases":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"gseq":{"type":"number"},"oseq":{"type":"number"},"price":{"type":"number"},"createdHeight":{"type":"number"},"createdDate":{"type":"string","nullable":true},"closedHeight":{"type":"number","nullable":true},"closedDate":{"type":"string","nullable":true},"status":{"type":"string"},"resources":{"type":"object","properties":{"cpu":{"type":"number"},"memory":{"type":"number"},"gpu":{"type":"number"},"ephemeralStorage":{"type":"number"},"persistentStorage":{"type":"number"}},"required":["cpu","memory","gpu","ephemeralStorage","persistentStorage"]}},"required":["provider","gseq","oseq","price","createdHeight","createdDate","closedHeight","closedDate","status","resources"]}}},"required":["owner","dseq","denom","createdHeight","createdDate","status","balance","transferred","settledAt","resources","leases"]}}},"required":["total","deployments"]}}}},"400":{"description":"Invalid status filter"}}}},"/v1/create-jwt-token":{"post":{"summary":"Create new JWT token for managed wallet","tags":["JWT Token"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"ttl":{"type":"integer","minimum":0,"exclusiveMinimum":true},"leases":{"type":"object","additionalProperties":{"nullable":true}}},"required":["ttl","leases"]}},"required":["data"]}}}},"responses":{"201":{"description":"JWT token created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]}},"required":["data"]}}}},"403":{"description":"With `code` `project_forbidden`, the caller is limited to some projects and the token does not name its deployments one by one, or names one filed in a project the caller cannot view, or cannot change when the token does more than read"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/graph-data/{dataName}":{"get":{"tags":["Analytics"],"security":[],"parameters":[{"schema":{"type":"string","example":"dailyUAktSpent","enum":["dailyUAktSpent","dailyUActSpent","dailyUUsdcSpent","dailyUUsdSpent","dailyLeaseCount","totalUAktSpent","totalUActSpent","totalUUsdcSpent","totalUUsdSpent","activeLeaseCount","totalLeaseCount","activeCPU","activeGPU","activeMemory","activeStorage","gpuUtilization","totalAktBurnedForAct","dailyAktBurnedForAct","totalActMinted","dailyActMinted","totalActBurnedForAkt","dailyActBurnedForAkt","totalAktReminted","dailyAktReminted","netAktBurned","dailyNetAktBurned","outstandingAct","vaultAkt","collateralRatio"]},"required":true,"name":"dataName","in":"path"}],"responses":{"200":{"description":"Returns graph data","content":{"application/json":{"schema":{"type":"object","properties":{"currentValue":{"type":"number"},"compareValue":{"type":"number"},"snapshots":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","example":"2021-07-01T00:00:00.000Z"},"value":{"type":"number","example":100}},"required":["date","value"]}}},"required":["currentValue","compareValue","snapshots"]}}}},"404":{"description":"Graph data not found"}}}},"/v1/bme/dashboard-data":{"get":{"tags":["Analytics"],"security":[],"responses":{"200":{"description":"Returns BME dashboard data","content":{"application/json":{"schema":{"type":"object","properties":{"now":{"type":"object","properties":{"date":{"type":"string"},"outstandingAct":{"type":"number"},"vaultAkt":{"type":"number"},"collateralRatio":{"type":"number"},"dailyAktBurnedForAct":{"type":"number"},"totalAktBurnedForAct":{"type":"number"},"dailyActMinted":{"type":"number"},"totalActMinted":{"type":"number"},"dailyActBurnedForAkt":{"type":"number"},"totalActBurnedForAkt":{"type":"number"},"dailyAktReminted":{"type":"number"},"totalAktReminted":{"type":"number"},"dailyNetAktBurned":{"type":"number"},"netAktBurned":{"type":"number"}},"required":["date","outstandingAct","vaultAkt","collateralRatio","dailyAktBurnedForAct","totalAktBurnedForAct","dailyActMinted","totalActMinted","dailyActBurnedForAkt","totalActBurnedForAkt","dailyAktReminted","totalAktReminted","dailyNetAktBurned","netAktBurned"]},"compare":{"type":"object","properties":{"date":{"type":"string"},"outstandingAct":{"type":"number"},"vaultAkt":{"type":"number"},"collateralRatio":{"type":"number"},"dailyAktBurnedForAct":{"type":"number"},"totalAktBurnedForAct":{"type":"number"},"dailyActMinted":{"type":"number"},"totalActMinted":{"type":"number"},"dailyActBurnedForAkt":{"type":"number"},"totalActBurnedForAkt":{"type":"number"},"dailyAktReminted":{"type":"number"},"totalAktReminted":{"type":"number"},"dailyNetAktBurned":{"type":"number"},"netAktBurned":{"type":"number"}},"required":["date","outstandingAct","vaultAkt","collateralRatio","dailyAktBurnedForAct","totalAktBurnedForAct","dailyActMinted","totalActMinted","dailyActBurnedForAkt","totalActBurnedForAkt","dailyAktReminted","totalAktReminted","dailyNetAktBurned","netAktBurned"]}},"required":["now","compare"]}}}}}}},"/v1/bme/status-history":{"get":{"tags":["Analytics"],"security":[],"responses":{"200":{"description":"Returns BME circuit breaker status change history","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"height":{"type":"integer","example":12345678},"date":{"type":"string","example":"2024-01-01T00:00:00.000Z"},"previousStatus":{"type":"string","example":"healthy"},"newStatus":{"type":"string","example":"warning"},"collateralRatio":{"type":"number","example":1.5}},"required":["height","date","previousStatus","newStatus","collateralRatio"]}}}}}}}},"/v1/dashboard-data":{"get":{"tags":["Analytics"],"security":[],"responses":{"200":{"description":"Returns dashboard data","content":{"application/json":{"schema":{"type":"object","properties":{"chainStats":{"type":"object","properties":{"height":{"type":"number"},"transactionCount":{"type":"number"},"bondedTokens":{"type":"number"},"totalSupply":{"type":"number"},"communityPool":{"type":"number"},"inflation":{"type":"number"},"stakingAPR":{"type":"number"}},"required":["height","transactionCount","bondedTokens","totalSupply","communityPool","inflation"]},"now":{"type":"object","properties":{"date":{"type":"string"},"height":{"type":"number"},"activeLeaseCount":{"type":"number"},"totalLeaseCount":{"type":"number"},"dailyLeaseCount":{"type":"number"},"totalUAktSpent":{"type":"number"},"dailyUAktSpent":{"type":"number"},"totalUActSpent":{"type":"number"},"dailyUActSpent":{"type":"number"},"totalUUsdcSpent":{"type":"number"},"dailyUUsdcSpent":{"type":"number"},"totalUUsdSpent":{"type":"number"},"dailyUUsdSpent":{"type":"number"},"activeCPU":{"type":"number"},"activeGPU":{"type":"number"},"activeMemory":{"type":"number"},"activeStorage":{"type":"number"}},"required":["date","height","activeLeaseCount","totalLeaseCount","dailyLeaseCount","totalUAktSpent","dailyUAktSpent","totalUActSpent","dailyUActSpent","totalUUsdcSpent","dailyUUsdcSpent","totalUUsdSpent","dailyUUsdSpent","activeCPU","activeGPU","activeMemory","activeStorage"]},"compare":{"type":"object","properties":{"date":{"type":"string"},"height":{"type":"number"},"activeLeaseCount":{"type":"number"},"totalLeaseCount":{"type":"number"},"dailyLeaseCount":{"type":"number"},"totalUAktSpent":{"type":"number"},"dailyUAktSpent":{"type":"number"},"totalUActSpent":{"type":"number"},"dailyUActSpent":{"type":"number"},"totalUUsdcSpent":{"type":"number"},"dailyUUsdcSpent":{"type":"number"},"totalUUsdSpent":{"type":"number"},"dailyUUsdSpent":{"type":"number"},"activeCPU":{"type":"number"},"activeGPU":{"type":"number"},"activeMemory":{"type":"number"},"activeStorage":{"type":"number"}},"required":["date","height","activeLeaseCount","totalLeaseCount","dailyLeaseCount","totalUAktSpent","dailyUAktSpent","totalUActSpent","dailyUActSpent","totalUUsdcSpent","dailyUUsdcSpent","totalUUsdSpent","dailyUUsdSpent","activeCPU","activeGPU","activeMemory","activeStorage"]},"networkCapacity":{"type":"object","properties":{"activeProviderCount":{"type":"number"},"activeCPU":{"type":"number"},"activeGPU":{"type":"number"},"activeMemory":{"type":"number"},"activeStorage":{"type":"number"},"pendingCPU":{"type":"number"},"pendingGPU":{"type":"number"},"pendingMemory":{"type":"number"},"pendingStorage":{"type":"number"},"availableCPU":{"type":"number"},"availableGPU":{"type":"number"},"availableMemory":{"type":"number"},"availableStorage":{"type":"number"},"totalCPU":{"type":"number"},"totalGPU":{"type":"number"},"totalMemory":{"type":"number"},"totalStorage":{"type":"number"},"activeEphemeralStorage":{"type":"number"},"pendingEphemeralStorage":{"type":"number"},"availableEphemeralStorage":{"type":"number"},"activePersistentStorage":{"type":"number"},"pendingPersistentStorage":{"type":"number"},"availablePersistentStorage":{"type":"number"},"totalEphemeralStorage":{"type":"number"},"totalPersistentStorage":{"type":"number"}},"required":["activeProviderCount","activeCPU","activeGPU","activeMemory","activeStorage","pendingCPU","pendingGPU","pendingMemory","pendingStorage","availableCPU","availableGPU","availableMemory","availableStorage","totalCPU","totalGPU","totalMemory","totalStorage","activeEphemeralStorage","pendingEphemeralStorage","availableEphemeralStorage","activePersistentStorage","pendingPersistentStorage","availablePersistentStorage","totalEphemeralStorage","totalPersistentStorage"]},"networkCapacityStats":{"type":"object","properties":{"currentValue":{"type":"number"},"compareValue":{"type":"number"},"snapshots":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"]}},"now":{"type":"object","properties":{"count":{"type":"number"},"cpu":{"type":"number"},"gpu":{"type":"number"},"memory":{"type":"number"},"storage":{"type":"number"}},"required":["count","cpu","gpu","memory","storage"]},"compare":{"type":"object","properties":{"count":{"type":"number"},"cpu":{"type":"number"},"gpu":{"type":"number"},"memory":{"type":"number"},"storage":{"type":"number"}},"required":["count","cpu","gpu","memory","storage"]}},"required":["currentValue","compareValue","snapshots","now","compare"]},"latestBlocks":{"type":"array","items":{"type":"object","properties":{"height":{"type":"number"},"proposer":{"type":"object","properties":{"address":{"type":"string"},"operatorAddress":{"type":"string"},"moniker":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}},"required":["address","operatorAddress","moniker","avatarUrl"]},"transactionCount":{"type":"number"},"totalTransactionCount":{"type":"number"},"datetime":{"type":"string"}},"required":["height","proposer","transactionCount","totalTransactionCount","datetime"]}},"latestTransactions":{"type":"array","items":{"type":"object","properties":{"height":{"type":"number"},"datetime":{"type":"string"},"hash":{"type":"string"},"isSuccess":{"type":"boolean"},"error":{"type":"string","nullable":true},"gasUsed":{"type":"number"},"gasWanted":{"type":"number"},"fee":{"type":"number"},"memo":{"type":"string"},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"amount":{"type":"number"}},"required":["id","type","amount"]}}},"required":["height","datetime","hash","isSuccess","error","gasUsed","gasWanted","fee","memo","messages"]}}},"required":["chainStats","now","compare","networkCapacity","networkCapacityStats","latestBlocks","latestTransactions"]}}}}}}},"/v1/network-capacity":{"get":{"tags":["Analytics"],"security":[],"responses":{"200":{"description":"Returns network capacity stats","content":{"application/json":{"schema":{"type":"object","properties":{"activeProviderCount":{"type":"number"},"resources":{"type":"object","properties":{"cpu":{"type":"object","properties":{"active":{"type":"number"},"pending":{"type":"number"},"available":{"type":"number"},"total":{"type":"number"}},"required":["active","pending","available","total"]},"gpu":{"type":"object","properties":{"active":{"type":"number"},"pending":{"type":"number"},"available":{"type":"number"},"total":{"type":"number"}},"required":["active","pending","available","total"]},"memory":{"type":"object","properties":{"active":{"type":"number"},"pending":{"type":"number"},"available":{"type":"number"},"total":{"type":"number"}},"required":["active","pending","available","total"]},"storage":{"type":"object","properties":{"ephemeral":{"type":"object","properties":{"active":{"type":"number"},"pending":{"type":"number"},"available":{"type":"number"},"total":{"type":"number"}},"required":["active","pending","available","total"]},"persistent":{"type":"object","properties":{"active":{"type":"number"},"pending":{"type":"number"},"available":{"type":"number"},"total":{"type":"number"}},"required":["active","pending","available","total"]},"total":{"type":"object","properties":{"active":{"type":"number"},"pending":{"type":"number"},"available":{"type":"number"},"total":{"type":"number"}},"required":["active","pending","available","total"]}},"required":["ephemeral","persistent","total"]}},"required":["cpu","gpu","memory","storage"]}},"required":["activeProviderCount","resources"]}}}}}}},"/v1/blocks":{"get":{"summary":"Get a list of recent blocks.","tags":["Blocks"],"security":[],"parameters":[{"schema":{"type":"number","description":"Number of blocks to return","minimum":1,"maximum":100,"example":20,"default":20},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Returns block list","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"height":{"type":"number"},"proposer":{"type":"object","properties":{"address":{"type":"string"},"operatorAddress":{"type":"string"},"moniker":{"type":"string"},"avatarUrl":{"type":"string","nullable":true}},"required":["address","operatorAddress","moniker","avatarUrl"]},"transactionCount":{"type":"number"},"totalTransactionCount":{"type":"number"},"datetime":{"type":"string"}},"required":["height","proposer","transactionCount","totalTransactionCount","datetime"]}}}}}}}},"/v1/blocks/{height}":{"get":{"summary":"Get a block by height.","tags":["Blocks"],"security":[],"parameters":[{"schema":{"type":"number","nullable":true,"description":"Block Height","example":12121212},"required":false,"name":"height","in":"path"}],"responses":{"200":{"description":"Returns predicted block date","content":{"application/json":{"schema":{"type":"object","properties":{"height":{"type":"number"},"datetime":{"type":"string"},"proposer":{"type":"object","properties":{"operatorAddress":{"type":"string"},"moniker":{"type":"string"},"avatarUrl":{"type":"string"},"address":{"type":"string"}},"required":["operatorAddress","moniker","address"]},"hash":{"type":"string"},"gasUsed":{"type":"number"},"gasWanted":{"type":"number"},"transactions":{"type":"array","items":{"type":"object","properties":{"hash":{"type":"string"},"isSuccess":{"type":"boolean"},"error":{"type":"string","nullable":true},"fee":{"type":"number"},"datetime":{"type":"string"},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"amount":{"type":"number"}},"required":["id","type","amount"]}}},"required":["hash","isSuccess","fee","datetime","messages"]}}},"required":["height","datetime","proposer","hash","gasUsed","gasWanted","transactions"]}}}},"400":{"description":"Invalid height"},"404":{"description":"Block not found"}}}},"/v1/predicted-block-date/{height}":{"get":{"summary":"Get the estimated date of a future block.","tags":["Blocks"],"security":[],"parameters":[{"schema":{"type":"number","description":"Block height","example":20000000},"required":false,"name":"height","in":"path"},{"schema":{"type":"number","default":10000,"description":"Block window","example":10000},"required":false,"name":"blockWindow","in":"query"}],"responses":{"200":{"description":"Returns predicted block date","content":{"application/json":{"schema":{"type":"object","properties":{"predictedDate":{"type":"string"},"height":{"type":"number","example":10000000},"blockWindow":{"type":"number","example":10000}},"required":["predictedDate","height","blockWindow"]}}}},"400":{"description":"Invalid height or block window"}}}},"/v1/predicted-date-height/{timestamp}":{"get":{"summary":"Get the estimated height of a future date and time.","tags":["Blocks"],"security":[],"parameters":[{"schema":{"type":"number","description":"Unix Timestamp","example":1704392968},"required":false,"name":"timestamp","in":"path"},{"schema":{"type":"number","default":10000,"description":"Block window","example":10000},"required":false,"name":"blockWindow","in":"query"}],"responses":{"200":{"description":"Returns predicted block height","content":{"application/json":{"schema":{"type":"object","properties":{"predictedHeight":{"type":"number","example":10000000},"date":{"type":"string","example":"2024-01-04T18:29:28.000Z"},"blockWindow":{"type":"number","example":10000}},"required":["predictedHeight","date","blockWindow"]}}}},"400":{"description":"Invalid timestamp or block window"}}}},"/v1/transactions":{"get":{"summary":"Get a list of transactions.","tags":["Transactions"],"security":[],"parameters":[{"schema":{"type":"number","description":"Number of transactions to return","minimum":1,"maximum":100,"example":20,"default":20},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Returns transaction list","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"height":{"type":"number"},"datetime":{"type":"string"},"hash":{"type":"string"},"isSuccess":{"type":"boolean"},"error":{"type":"string","nullable":true},"gasUsed":{"type":"number"},"gasWanted":{"type":"number"},"fee":{"type":"number"},"memo":{"type":"string"},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"amount":{"type":"number"}},"required":["id","type","amount"]}}},"required":["height","datetime","hash","isSuccess","error","gasUsed","gasWanted","fee","memo","messages"]}}}}}}}},"/v1/transactions/{hash}":{"get":{"summary":"Get a transaction by hash.","tags":["Transactions"],"security":[],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Transaction hash","example":"A19F1950D97E576F0D7B591D71A8D0366AA8BA0A7F3DA76F44769188644BE9EB"},"required":true,"name":"hash","in":"path"}],"responses":{"200":{"description":"Returns predicted block date","content":{"application/json":{"schema":{"type":"object","properties":{"height":{"type":"number"},"datetime":{"type":"string"},"hash":{"type":"string"},"isSuccess":{"type":"boolean"},"multisigThreshold":{"type":"number"},"signers":{"type":"array","items":{"type":"string"}},"error":{"type":"string","nullable":true},"gasUsed":{"type":"number"},"gasWanted":{"type":"number"},"fee":{"type":"number"},"memo":{"type":"string"},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"data":{"type":"object","additionalProperties":{"type":"string"}},"relatedDeploymentId":{"type":"string","nullable":true}},"required":["id","type","data"]}}},"required":["height","datetime","hash","isSuccess","signers","error","gasUsed","gasWanted","fee","memo","messages"]}}}},"404":{"description":"Transaction not found"}}}},"/v1/market-data/{coin?}":{"get":{"tags":["Analytics"],"security":[],"parameters":[{"schema":{"type":"string","enum":["akash-network","akt"],"default":"akt","example":"akt"},"required":false,"name":"coin","in":"path"}],"responses":{"200":{"description":"Returns market stats","content":{"application/json":{"schema":{"type":"object","properties":{"price":{"type":"number"},"volume":{"type":"number"},"marketCap":{"type":"number"},"marketCapRank":{"type":"number"},"priceChange24h":{"type":"number"},"priceChangePercentage24":{"type":"number"}},"required":["price","volume","marketCap","marketCapRank","priceChange24h","priceChangePercentage24"]}}}}}}},"/v1/validators":{"get":{"tags":["Validators"],"security":[],"responses":{"200":{"description":"Returns validators","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"operatorAddress":{"type":"string"},"moniker":{"type":"string"},"votingPower":{"type":"number"},"commission":{"type":"number"},"identity":{"type":"string"},"votingPowerRatio":{"type":"number"},"rank":{"type":"number"},"keybaseAvatarUrl":{"type":"string","nullable":true}},"required":["operatorAddress","moniker","votingPower","commission","identity","votingPowerRatio","rank","keybaseAvatarUrl"]}}}}}}}},"/v1/validators/{address}":{"get":{"tags":["Validators"],"security":[],"parameters":[{"schema":{"type":"string","description":"Validator Address","example":"akashvaloper14mt78hz73d9tdwpdvkd59ne9509kxw8yj7qy8f"},"required":true,"name":"address","in":"path"}],"responses":{"200":{"description":"Return a validator information","content":{"application/json":{"schema":{"type":"object","properties":{"operatorAddress":{"type":"string"},"address":{"type":"string","nullable":true},"moniker":{"type":"string"},"keybaseUsername":{"type":"string","nullable":true},"keybaseAvatarUrl":{"type":"string","nullable":true},"votingPower":{"type":"number"},"commission":{"type":"number"},"maxCommission":{"type":"number"},"maxCommissionChange":{"type":"number"},"identity":{"type":"string"},"description":{"type":"string"},"website":{"type":"string"},"rank":{"type":"number"}},"required":["operatorAddress","address","moniker","keybaseUsername","keybaseAvatarUrl","votingPower","commission","maxCommission","maxCommissionChange","identity","description","website","rank"]}}}},"400":{"description":"Invalid address"},"404":{"description":"Validator not found"}}}},"/v1/pricing":{"post":{"tags":["Other"],"security":[],"summary":"Estimate the price of a deployment on akash and other cloud providers.","requestBody":{"description":"Deployment specs to use for the price estimation. **An array of specs can also be sent, in that case an array of estimations will be returned in the same order.**","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"cpu":{"type":"number","minimum":0,"description":"CPU in thousandths of a core. 1000 = 1 core","example":1000},"memory":{"type":"number","description":"Memory in bytes","example":1000000000},"storage":{"type":"number","description":"Storage in bytes","example":1000000000}},"required":["cpu","memory","storage"]},{"type":"array","items":{"type":"object","properties":{"cpu":{"type":"number","minimum":0,"description":"CPU in thousandths of a core. 1000 = 1 core","example":1000},"memory":{"type":"number","description":"Memory in bytes","example":1000000000},"storage":{"type":"number","description":"Storage in bytes","example":1000000000}},"required":["cpu","memory","storage"]},"minItems":1,"maxItems":10}]}}}},"responses":{"200":{"description":"Returns a list of deployment templates grouped by categories","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"spec":{"type":"object","properties":{"cpu":{"type":"number","minimum":0,"description":"CPU in thousandths of a core. 1000 = 1 core","example":1000},"memory":{"type":"number","description":"Memory in bytes","example":1000000000},"storage":{"type":"number","description":"Storage in bytes","example":1000000000}},"required":["cpu","memory","storage"]},"akash":{"type":"number","description":"Akash price estimation (USD/month)"},"aws":{"type":"number","description":"AWS price estimation (USD/month)"},"gcp":{"type":"number","description":"GCP price estimation (USD/month)"},"azure":{"type":"number","description":"Azure price estimation (USD/month)"}},"required":["spec","akash","aws","gcp","azure"]},{"type":"array","items":{"type":"object","properties":{"spec":{"type":"object","properties":{"cpu":{"type":"number","minimum":0,"description":"CPU in thousandths of a core. 1000 = 1 core","example":1000},"memory":{"type":"number","description":"Memory in bytes","example":1000000000},"storage":{"type":"number","description":"Storage in bytes","example":1000000000}},"required":["cpu","memory","storage"]},"akash":{"type":"number","description":"Akash price estimation (USD/month)"},"aws":{"type":"number","description":"AWS price estimation (USD/month)"},"gcp":{"type":"number","description":"GCP price estimation (USD/month)"},"azure":{"type":"number","description":"Azure price estimation (USD/month)"}},"required":["spec","akash","aws","gcp","azure"]}}]}}}},"400":{"description":"Invalid parameters"}}}},"/v1/gpu":{"get":{"summary":"Get a list of gpu models and their availability.","tags":["Gpu"],"security":[],"parameters":[{"schema":{"type":"string"},"required":false,"name":"provider","in":"query"},{"schema":{"type":"string"},"required":false,"name":"vendor","in":"query"},{"schema":{"type":"string"},"required":false,"name":"model","in":"query"},{"schema":{"type":"string"},"required":false,"name":"memory_size","in":"query"}],"responses":{"200":{"description":"List of gpu models and their availability.","content":{"application/json":{"schema":{"type":"object","properties":{"gpus":{"type":"object","properties":{"total":{"type":"object","properties":{"allocatable":{"type":"number"},"allocated":{"type":"number"}},"required":["allocatable","allocated"]},"details":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string"},"ram":{"type":"string"},"interface":{"type":"string"},"allocatable":{"type":"number"},"allocated":{"type":"number"}},"required":["model","ram","interface","allocatable","allocated"]}}}},"required":["total","details"]}},"required":["gpus"]}}}},"400":{"description":"Invalid provider parameter, should be a valid akash address or host uri"}}}},"/v1/gpu-models":{"get":{"summary":"Get a list of gpu models per vendor. Based on the content from https://raw.githubusercontent.com/akash-network/provider-configs/main/devices/pcie/gpus.json.","tags":["Gpu"],"security":[],"responses":{"200":{"description":"List of gpu models per.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"displayName":{"type":"string","example":"NVIDIA"},"models":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"displayName":{"type":"string","example":"RTX 4090"},"memory":{"type":"array","items":{"type":"string"}},"interface":{"type":"array","items":{"type":"string"}}},"required":["name","displayName","memory","interface"]}}},"required":["name","displayName","models"]}}}}}}}},"/v1/gpu-breakdown":{"get":{"tags":["Gpu"],"security":[],"summary":"Gets the daily gpu analytics breakdown by vendor and model over a date range (default: last 30 days, max 366 days). If no vendor or model is provided, all GPUs are returned.","parameters":[{"schema":{"type":"string"},"required":false,"name":"vendor","in":"query"},{"schema":{"type":"string"},"required":false,"name":"model","in":"query"},{"schema":{"type":"string","format":"date","description":"Start date (YYYY-MM-DD), inclusive. Defaults to a 30-day window ending at endDate","example":"2024-01-01"},"required":false,"name":"startDate","in":"query"},{"schema":{"type":"string","format":"date","description":"End date (YYYY-MM-DD), inclusive. Defaults to today (UTC)","example":"2024-01-31"},"required":false,"name":"endDate","in":"query"}],"responses":{"200":{"description":"Daily gpu breakdown rows for the requested date range, one per date, vendor and model.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"vendor":{"type":"string"},"model":{"type":"string"},"providerCount":{"type":"number"},"nodeCount":{"type":"number"},"totalGpus":{"type":"number"},"leasedGpus":{"type":"number"},"gpuUtilization":{"type":"number"}},"required":["date","vendor","model","providerCount","nodeCount","totalGpus","leasedGpus","gpuUtilization"]}}}}},"400":{"description":"Invalid date range: dates must be YYYY-MM-DD, startDate must not be after endDate and the range cannot exceed 366 days"}}}},"/v1/gpu-prices":{"get":{"summary":"Get a list of gpu models with their availability and pricing.","operationId":"listGpuPrices","tags":["Gpu"],"security":[],"responses":{"200":{"description":"List of gpu models with their availability and pricing.","content":{"application/json":{"schema":{"type":"object","properties":{"availability":{"type":"object","properties":{"total":{"type":"number"},"available":{"type":"number"}},"required":["total","available"]},"models":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string"},"model":{"type":"string"},"ram":{"type":"string"},"interface":{"type":"string"},"availability":{"type":"object","properties":{"total":{"type":"number"},"available":{"type":"number"}},"required":["total","available"]},"providerAvailability":{"type":"object","properties":{"total":{"type":"number"},"available":{"type":"number"}},"required":["total","available"]},"price":{"type":"object","nullable":true,"properties":{"currency":{"type":"string","example":"USD"},"min":{"type":"number"},"max":{"type":"number"},"avg":{"type":"number"},"weightedAverage":{"type":"number"},"med":{"type":"number"}},"required":["currency","min","max","avg","weightedAverage","med"]}},"required":["vendor","model","ram","interface","availability","providerAvailability","price"]}}},"required":["availability","models"]}}}}}}},"/v1/proposals":{"get":{"tags":["Proposals"],"security":[],"responses":{"200":{"description":"Returns a list of proposals","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"status":{"type":"string"},"submitTime":{"type":"string"},"votingStartTime":{"type":"string"},"votingEndTime":{"type":"string"},"totalDeposit":{"type":"number"}},"required":["id","title","status","submitTime","votingStartTime","votingEndTime","totalDeposit"]}}}}}}}},"/v1/proposals/{id}":{"get":{"tags":["Proposals"],"security":[],"parameters":[{"schema":{"type":"number","nullable":true,"description":"Proposal ID","example":1},"required":false,"name":"id","in":"path"}],"responses":{"200":{"description":"Return a proposal by id","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"submitTime":{"type":"string"},"votingStartTime":{"type":"string"},"votingEndTime":{"type":"string"},"totalDeposit":{"type":"number"},"tally":{"type":"object","properties":{"yes":{"type":"number"},"abstain":{"type":"number"},"no":{"type":"number"},"noWithVeto":{"type":"number"},"total":{"type":"number"}},"required":["yes","abstain","no","noWithVeto","total"]},"paramChanges":{"type":"array","items":{"type":"object","properties":{"subspace":{"type":"string"},"key":{"type":"string"},"value":{"nullable":true}},"required":["subspace","key"]}}},"required":["id","title","description","status","submitTime","votingStartTime","votingEndTime","totalDeposit","tally","paramChanges"]}}}},"400":{"description":"Invalid proposal id"},"404":{"description":"Proposal not found"}}}},"/v1/templates-list":{"get":{"tags":["Other"],"security":[],"responses":{"200":{"description":"Returns a list of deployment templates grouped by categories","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"logoUrl":{"type":"string","nullable":true},"summary":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"hardware":{"type":"object","properties":{"cpu":{"type":"number","description":"vCPUs across every service and replica"},"memoryBytes":{"type":"number"},"storageBytes":{"type":"number","description":"Ephemeral and persistent storage combined"},"gpu":{"type":"object","properties":{"units":{"type":"number"},"models":{"type":"array","items":{"type":"string"},"description":"Model names, or a vendor name when any of its models will do; empty when any GPU will do"}},"required":["units","models"]}},"required":["cpu","memoryBytes","storageBytes"],"description":"Absent when the template's SDL cannot be read"}},"required":["id","name","logoUrl","summary"]}}},"required":["title","templates"]}}},"required":["data"]}}}}}}},"/v1/templates/{id}":{"get":{"tags":["Other"],"security":[],"parameters":[{"schema":{"type":"string","pattern":"^[^/\\\\]+$","description":"Template ID","example":"akash-network-cosmos-omnibus-agoric"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Return a template by id","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"path":{"type":"string"},"logoUrl":{"type":"string","nullable":true},"summary":{"type":"string"},"readme":{"type":"string"},"deploy":{"type":"string"},"persistentStorageEnabled":{"type":"boolean"},"guide":{"type":"string"},"githubUrl":{"type":"string"},"config":{"type":"object","properties":{"ssh":{"type":"boolean"}}}},"required":["id","name","path","logoUrl","summary","readme","deploy","persistentStorageEnabled","githubUrl","config"]}},"required":["data"]}}}},"400":{"description":"Invalid template ID"},"404":{"description":"Template not found"}}}},"/v1/leases-duration/{owner}":{"get":{"summary":"Get leases durations.","tags":["Analytics"],"security":[],"parameters":[{"schema":{"type":"string","example":"akash13265twfqejnma6cc93rw5dxk4cldyz2zyy8cdm"},"required":true,"name":"owner","in":"path"},{"schema":{"type":"string","pattern":"^0*[1-9]\\d*$"},"required":false,"name":"dseq","in":"query"},{"schema":{"type":"string","format":"YYYY-MM-DD","default":"2000-01-01"},"required":false,"name":"startDate","in":"query"},{"schema":{"type":"string","format":"YYYY-MM-DD","default":"2100-01-01"},"required":false,"name":"endDate","in":"query"}],"responses":{"200":{"description":"List of leases durations and total duration.","content":{"application/json":{"schema":{"type":"object","properties":{"leaseCount":{"type":"number"},"totalDurationInSeconds":{"type":"number"},"totalDurationInHours":{"type":"number"},"leases":{"type":"array","items":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^0*[1-9]\\d*$"},"oseq":{"type":"number"},"gseq":{"type":"number"},"provider":{"type":"string"},"startHeight":{"type":"number"},"startDate":{"type":"string"},"closedHeight":{"type":"number"},"closedDate":{"type":"string"},"durationInBlocks":{"type":"number"},"durationInSeconds":{"type":"number"},"durationInHours":{"type":"number"}},"required":["dseq","oseq","gseq","provider","startHeight","startDate","closedHeight","closedDate","durationInBlocks","durationInSeconds","durationInHours"]}}},"required":["leaseCount","totalDurationInSeconds","totalDurationInHours","leases"]}}}},"400":{"description":"Invalid start date, must be in the following format: YYYY-MM-DD"}}}},"/v1/addresses/{address}":{"get":{"summary":"Get address details","tags":["Addresses"],"security":[],"parameters":[{"schema":{"type":"string","description":"Account Address","example":"akash13265twfqejnma6cc93rw5dxk4cldyz2zyy8cdm"},"required":true,"name":"address","in":"path"}],"responses":{"200":{"description":"Returns address details","content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"number"},"delegations":{"type":"array","items":{"type":"object","properties":{"validator":{"type":"object","properties":{"address":{"type":"string"},"moniker":{"type":"string"},"operatorAddress":{"type":"string"},"avatarUrl":{"type":"string"}}},"amount":{"type":"number"},"reward":{"type":"number","nullable":true}},"required":["validator","amount","reward"]}},"available":{"type":"number"},"delegated":{"type":"number"},"rewards":{"type":"number"},"assets":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"ibcToken":{"type":"string"},"logoUrl":{"type":"string"},"description":{"type":"string"},"amount":{"type":"number"}},"required":["amount"]}},"redelegations":{"type":"array","items":{"type":"object","properties":{"srcAddress":{"type":"object","properties":{"address":{"type":"string"},"moniker":{"type":"string"},"operatorAddress":{"type":"string"},"avatarUrl":{"type":"string"}}},"dstAddress":{"type":"object","properties":{"address":{"type":"string"},"moniker":{"type":"string"},"operatorAddress":{"type":"string"},"avatarUrl":{"type":"string"}}},"creationHeight":{"type":"number"},"completionTime":{"type":"string"},"amount":{"type":"number"}},"required":["srcAddress","dstAddress","creationHeight","completionTime","amount"]}},"commission":{"type":"number"},"latestTransactions":{"type":"array","items":{"type":"object","properties":{"height":{"type":"number"},"datetime":{"type":"string"},"hash":{"type":"string"},"isSuccess":{"type":"boolean"},"error":{"type":"string","nullable":true},"gasUsed":{"type":"number"},"gasWanted":{"type":"number"},"fee":{"type":"number"},"memo":{"type":"string","nullable":true},"isSigner":{"type":"boolean"},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"amount":{"type":"number"},"isReceiver":{"type":"boolean"}},"required":["id","type","amount","isReceiver"]}}},"required":["height","datetime","hash","isSuccess","error","gasUsed","gasWanted","fee","memo","isSigner","messages"]}}},"required":["total","delegations","available","delegated","rewards","assets","redelegations","commission","latestTransactions"]}}}},"400":{"description":"Invalid address"}}}},"/v1/addresses/{address}/transactions/{skip}/{limit}":{"get":{"summary":"Get a list of transactions for a given address.","tags":["Addresses","Transactions"],"security":[],"parameters":[{"schema":{"type":"string","description":"Wallet Address","example":"akash13265twfqejnma6cc93rw5dxk4cldyz2zyy8cdm"},"required":true,"name":"address","in":"path"},{"schema":{"type":"number","nullable":true,"minimum":0,"description":"Transactions to skip","example":10},"required":false,"name":"skip","in":"path"},{"schema":{"type":"number","minimum":1,"maximum":100,"description":"Transactions to return","example":10},"required":true,"name":"limit","in":"path"}],"responses":{"200":{"description":"Returns transaction list","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"height":{"type":"number"},"datetime":{"type":"string"},"hash":{"type":"string"},"isSuccess":{"type":"boolean"},"error":{"type":"string","nullable":true},"gasUsed":{"type":"number"},"gasWanted":{"type":"number"},"fee":{"type":"number"},"memo":{"type":"string","nullable":true},"isSigner":{"type":"boolean"},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"amount":{"type":"number"},"isReceiver":{"type":"boolean"}},"required":["id","type","amount","isReceiver"]}}},"required":["height","datetime","hash","isSuccess","error","gasUsed","gasWanted","fee","memo","isSigner","messages"]}},"hasMore":{"type":"boolean","description":"Whether a further page exists."}},"required":["results","hasMore"]}}}},"400":{"description":"Invalid address or parameters"}}}},"/v1/blockchain-status":{"get":{"summary":"Get Akash Network reachability status","tags":["Network"],"security":[],"responses":{"200":{"description":"Returns whether the Akash Network is reachable","content":{"application/json":{"schema":{"type":"object","properties":{"isBlockchainReachable":{"type":"boolean","description":"Whether the console can reach the Akash Network right now."}},"required":["isBlockchainReachable"]}}}}}}},"/v1/bid-screening":{"post":{"operationId":"screenProviders","summary":"Screen providers by deployment resource requirements","tags":["Bid Screening"],"security":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"requirements":{"type":"object","properties":{"signedBy":{"type":"object","properties":{"allOf":{"type":"array","items":{"type":"string"},"default":[]},"anyOf":{"type":"array","items":{"type":"string"},"default":[]}},"default":{}},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128,"pattern":"^([a-zA-Z][\\w/.-]{1,126}[\\w*]?)$","description":"Attribute key","example":"persistent"},"value":{"type":"string","description":"Attribute value","example":"false"}},"required":["key","value"]},"default":[]}},"default":{}},"resources":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"object","properties":{"id":{"type":"integer","description":"Resource unit ID","example":1},"cpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string","maxLength":80}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128,"pattern":"^([a-zA-Z][\\w/.-]{1,126}[\\w*]?)$","description":"Attribute key","example":"persistent"},"value":{"type":"string","description":"Attribute value","example":"false"}},"required":["key","value"]}}},"required":["units"]},"memory":{"type":"object","properties":{"quantity":{"type":"object","properties":{"val":{"type":"string","maxLength":80}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128,"pattern":"^([a-zA-Z][\\w/.-]{1,126}[\\w*]?)$","description":"Attribute key","example":"persistent"},"value":{"type":"string","description":"Attribute value","example":"false"}},"required":["key","value"]}}},"required":["quantity"]},"gpu":{"type":"object","properties":{"units":{"type":"object","properties":{"val":{"type":"string","maxLength":80}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128,"pattern":"^([a-zA-Z][\\w/.-]{1,126}[\\w*]?)$","description":"Attribute key","example":"persistent"},"value":{"type":"string","description":"Attribute value","example":"false"}},"required":["key","value"]}}},"required":["units"]},"storage":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Storage volume name","example":"default"},"quantity":{"type":"object","properties":{"val":{"type":"string","maxLength":80}},"required":["val"]},"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128,"pattern":"^([a-zA-Z][\\w/.-]{1,126}[\\w*]?)$","description":"Attribute key","example":"persistent"},"value":{"type":"string","description":"Attribute value","example":"false"}},"required":["key","value"]}}},"required":["name","quantity"]}},"endpoints":{"type":"array","items":{"nullable":true}}},"required":["id","cpu","memory","gpu","storage"]},"count":{"type":"integer","minimum":1,"description":"Replica count","example":1},"price":{"type":"object","properties":{"denom":{"type":"string"},"amount":{"type":"string","pattern":"^\\d+$"}},"required":["denom","amount"]}},"required":["resource","count","price"]},"description":"Resource units with replica counts"},"timezone":{"type":"string","description":"Client IANA timezone, validated against zones the runtime recognizes","example":"America/Chicago"},"reclamationWindow":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Optional reclamation window in seconds; if provided, only providers with a reclamationWindow greater than or equal to this value will be considered","example":3600}},"required":["resources","timezone"]}}}},"responses":{"200":{"description":"Returns matching providers","content":{"application/json":{"schema":{"type":"object","properties":{"providers":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"string","description":"Provider address","example":"akash1q7spv2cw06yszgfp4f9ed59lkka6ytn8g4tkjf"},"hostUri":{"type":"string","description":"Provider HTTPS endpoint","example":"https://provider.europlots.com:8443"},"isAudited":{"type":"boolean","description":"True if signed by a known auditor"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp marking when the provider was first enrolled in the inventory","example":"2026-01-01T00:00:00.000Z"},"location":{"type":"string","nullable":true,"description":"Provider region from the location-region attribute (signed preferred, else self-declared); null if unset","example":"us-west"},"organization":{"type":"string","nullable":true,"description":"Provider organization from the organization attribute (signed preferred, else self-declared); null if unset","example":"Akash"},"availableGpus":{"type":"integer","minimum":0,"description":"Free GPUs matching the request on nodes that can also fit one replica of it; 0 when the request asks for no GPU","example":4},"incidents":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Local calendar day, YYYY-MM-DD","example":"2026-06-01"},"hasOpenIncident":{"type":"boolean","description":"True if the provider currently has any open incident"},"incidentCount":{"type":"integer","description":"Number of incident intervals overlapping that day"},"downtimeSeconds":{"type":"integer","description":"Downtime clipped to that day, in seconds (max 86400)"}},"required":["date","hasOpenIncident","incidentCount","downtimeSeconds"]},"description":"Per-day downtime over a rolling 7-day window"}},"required":["owner","hostUri","isAudited","createdAt","location","organization","availableGpus","incidents"]}}},"required":["providers"]}}}},"400":{"description":"Invalid request body"}}}},"/v1/placement-options":{"get":{"operationId":"listPlacementOptions","summary":"List the regions and GPUs online providers can currently serve","tags":["Placement Options"],"security":[],"responses":{"200":{"description":"Returns the regions and GPUs available across online providers","content":{"application/json":{"schema":{"type":"object","properties":{"regions":{"type":"array","items":{"type":"string"},"description":"Regions declared by at least one online provider and signed by the Console auditor","example":["eu-west","na-us-west"]},"regionProviderCounts":{"type":"object","additionalProperties":{"type":"integer"},"description":"Audited online providers in each region, keyed by region","example":{"eu-west":2,"na-us-west":5}},"gpus":{"type":"array","items":{"type":"object","properties":{"vendor":{"type":"string","description":"Vendor as it appears in an SDL GPU attribute","example":"nvidia"},"models":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Model as it appears in an SDL GPU attribute","example":"a100"},"memory":{"type":"array","items":{"type":"string"},"description":"Memory sizes a provider would bid on with the interface left unpinned","example":["40Gi"]},"interface":{"type":"array","items":{"type":"string"},"description":"Interfaces a provider would bid on with the memory left unpinned","example":["pcie"]},"providerCount":{"type":"integer","description":"Audited providers with free capacity that would bid on this model with memory and interface unpinned","example":3},"availableUnits":{"type":"integer","description":"Free GPUs across those providers' nodes, counting on each node no more than it would bid on","example":40},"maxNodeFreeUnits":{"type":"integer","description":"Most GPUs a single node would bid on, which bounds the GPUs one replica can ask for","example":8},"variants":{"type":"array","items":{"type":"object","properties":{"memory":{"type":"string","nullable":true,"description":"Memory size the SDL pins, or null to leave it unpinned","example":"80Gi"},"interface":{"type":"string","nullable":true,"description":"Interface the SDL pins, or null to leave it unpinned","example":"sxm"},"providerCount":{"type":"integer","description":"Audited providers with free capacity that advertise this exact GPU key","example":2},"availableUnits":{"type":"integer","description":"Free GPUs across those providers' nodes, counting on each node no more than it would bid on","example":40},"maxNodeFreeUnits":{"type":"integer","description":"Most GPUs a single node would bid on, which bounds the GPUs one replica can ask for","example":8}},"required":["memory","interface","providerCount","availableUnits","maxNodeFreeUnits"]},"description":"Every memory and interface combination at least one provider would bid on, the model alone included"}},"required":["name","memory","interface","providerCount","availableUnits","maxNodeFreeUnits","variants"]}}},"required":["vendor","models"]},"description":"GPUs that audited online providers have free capacity for and would bid on, grouped by vendor"}},"required":["regions","regionProviderCounts","gpus"]}}}}}}},"/v1/confidential-compute/attestation/validate":{"post":{"operationId":"validateConfidentialComputeAttestation","summary":"Validate confidential compute attestation evidence against the hardware vendors (AMD SEV-SNP, Intel TDX, NVIDIA)","tags":["Confidential Compute"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nonce":{"type":"string","description":"Per-request freshness challenge sent to the hardware, base64 (64 bytes, AEP-83 §5)"},"report":{"type":"string","description":"CPU attestation report (AMD SEV-SNP or Intel TDX quote), base64","example":"BQAAAAAA..."},"tee_platform":{"type":"string","enum":["snp","tdx","snp-gpu","tdx-gpu"],"description":"TEE platform that produced the evidence"},"cert_chain":{"type":"string","default":"","description":"CPU vendor cert chain, base64; may be empty (e.g. AMD VCEK fetched from KDS)","example":"BQAAAAAA..."},"auxblob":{"type":"string","default":"","description":"Platform auxiliary blob (e.g. TDX collateral), base64; may be empty","example":"BQAAAAAA..."},"gpu_reports":{"type":"array","items":{"type":"object","properties":{"device_index":{"type":"integer","minimum":0,"description":"GPU device index this report attests","example":0},"report":{"type":"string","description":"Hardware-signed GPU attestation report (embeds the device cert chain), base64","example":"BQAAAAAA..."}},"required":["device_index","report"]},"default":[],"description":"Per-GPU attestation reports; empty for CPU-only platforms"}},"required":["nonce","report","tee_platform"]}}}},"responses":{"200":{"description":"Per-report attestation verdicts","content":{"application/json":{"schema":{"type":"object","properties":{"overall":{"type":"string","enum":["valid","invalid","unverifiable"],"description":"Rollup: valid only if every report is valid; invalid if any report is invalid; otherwise unverifiable"},"nonce":{"type":"string","description":"Echo of the request nonce, for client correlation"},"reports":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["cpu"]},"vendor":{"type":"string","enum":["amd-sev-snp","intel-tdx"]},"status":{"type":"string","enum":["valid","invalid","unverifiable"],"description":"valid = chained to the vendor root, signature/EAT verified, and bound to the request nonce; invalid = a check ran and failed (bad signature, untrusted chain, nonce mismatch); unverifiable = the check could not be completed (vendor service unreachable, not configured, missing material)"},"detail":{"type":"string","description":"Human-readable explanation of the verdict"},"checks":{"type":"object","properties":{"certChainValid":{"type":"boolean","description":"Evidence chains to the vendor root certificate"},"signatureValid":{"type":"boolean","description":"The report/EAT signature verified"},"nonceMatch":{"type":"boolean","description":"The evidence is bound to the request nonce"},"notRevoked":{"type":"boolean","description":"Revocation status; omitted when revocation was not checked"}},"description":"Granular sub-results behind the verdict; fields are omitted when not evaluated"}},"required":["kind","vendor","status","detail"]},{"type":"object","properties":{"kind":{"type":"string","enum":["gpu"]},"device_index":{"type":"integer","minimum":0},"vendor":{"type":"string","enum":["nvidia"]},"status":{"type":"string","enum":["valid","invalid","unverifiable"],"description":"valid = chained to the vendor root, signature/EAT verified, and bound to the request nonce; invalid = a check ran and failed (bad signature, untrusted chain, nonce mismatch); unverifiable = the check could not be completed (vendor service unreachable, not configured, missing material)"},"detail":{"type":"string","description":"Human-readable explanation of the verdict"},"checks":{"type":"object","properties":{"certChainValid":{"type":"boolean","description":"Evidence chains to the vendor root certificate"},"signatureValid":{"type":"boolean","description":"The report/EAT signature verified"},"nonceMatch":{"type":"boolean","description":"The evidence is bound to the request nonce"},"notRevoked":{"type":"boolean","description":"Revocation status; omitted when revocation was not checked"}},"description":"Granular sub-results behind the verdict; fields are omitted when not evaluated"}},"required":["kind","device_index","vendor","status","detail"]}]}}},"required":["overall","nonce","reports"]}}}},"400":{"description":"Invalid request body"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/hardware-requests":{"post":{"operationId":"createHardwareRequest","summary":"Ask the Akash team for a GPU model, more capacity or a region that is not available yet","tags":["Hardware Requests"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["gpu_model"]},"gpuModel":{"type":"string","minLength":1,"maxLength":100},"quantity":{"type":"integer","minimum":1,"maximum":1000},"details":{"type":"string","maxLength":2000},"email":{"type":"string","maxLength":255,"format":"email"},"configuration":{"type":"object","properties":{"summary":{"type":"string","maxLength":500},"cpu":{"type":"number","minimum":0},"memoryBytes":{"type":"integer","minimum":0},"storageBytes":{"type":"integer","minimum":0},"region":{"type":"string","nullable":true,"maxLength":100},"gpu":{"type":"object","properties":{"count":{"type":"integer","minimum":0},"models":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":20}},"required":["count","models"]}},"required":["summary","cpu","memoryBytes","storageBytes","region"]}},"required":["category","gpuModel","quantity","email"]},{"type":"object","properties":{"category":{"type":"string","enum":["capacity"]},"gpuModel":{"type":"string","minLength":1,"maxLength":100},"quantity":{"type":"integer","minimum":1,"maximum":1000},"details":{"type":"string","maxLength":2000},"email":{"type":"string","maxLength":255,"format":"email"},"configuration":{"type":"object","properties":{"summary":{"type":"string","maxLength":500},"cpu":{"type":"number","minimum":0},"memoryBytes":{"type":"integer","minimum":0},"storageBytes":{"type":"integer","minimum":0},"region":{"type":"string","nullable":true,"maxLength":100},"gpu":{"type":"object","properties":{"count":{"type":"integer","minimum":0},"models":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":20}},"required":["count","models"]}},"required":["summary","cpu","memoryBytes","storageBytes","region"]}},"required":["category","quantity","email"]},{"type":"object","properties":{"category":{"type":"string","enum":["region"]},"region":{"type":"string","minLength":1,"maxLength":100},"details":{"type":"string","maxLength":2000},"email":{"type":"string","maxLength":255,"format":"email"},"configuration":{"type":"object","properties":{"summary":{"type":"string","maxLength":500},"cpu":{"type":"number","minimum":0},"memoryBytes":{"type":"integer","minimum":0},"storageBytes":{"type":"integer","minimum":0},"region":{"type":"string","nullable":true,"maxLength":100},"gpu":{"type":"object","properties":{"count":{"type":"integer","minimum":0},"models":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":20}},"required":["count","models"]}},"required":["summary","cpu","memoryBytes","storageBytes","region"]}},"required":["category","region","email"]},{"type":"object","properties":{"category":{"type":"string","enum":["other"]},"details":{"type":"string","minLength":1,"maxLength":2000},"email":{"type":"string","maxLength":255,"format":"email"},"configuration":{"type":"object","properties":{"summary":{"type":"string","maxLength":500},"cpu":{"type":"number","minimum":0},"memoryBytes":{"type":"integer","minimum":0},"storageBytes":{"type":"integer","minimum":0},"region":{"type":"string","nullable":true,"maxLength":100},"gpu":{"type":"object","properties":{"count":{"type":"integer","minimum":0},"models":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":20}},"required":["count","models"]}},"required":["summary","cpu","memoryBytes","storageBytes","region"]}},"required":["category","details","email"]}]}},"required":["data"]}}}},"responses":{"201":{"description":"The request was recorded and the Akash team will follow up by email","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","createdAt"]}},"required":["data"]}}}},"400":{"description":"Invalid request body"},"401":{"description":"Unauthorized"},"429":{"description":"Too many requests sent recently"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/activities":{"get":{"operationId":"listActivities","summary":"List the user's recent actions and their outcomes, newest first, with how many are still unseen","tags":["Activities"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Activities per page, at most 100."},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Where the page starts: the `nextCursor` of the page before it. Omit it for the newest activities."},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["pending","succeeded","failed"],"description":"`pending` while the action is still being confirmed, then `succeeded` or `failed`."},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["deployment_close"],"description":"What the action was."},"required":false,"name":"type","in":"query"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"One page of activities","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"activities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["deployment_close"],"description":"What the action was."},"status":{"type":"string","enum":["pending","succeeded","failed"],"description":"`pending` while the action is still being confirmed, then `succeeded` or `failed`."},"initiator":{"type":"string","enum":["user","system"],"description":"Who started the action: `user` for the user's own request, `system` for a close Console made on the user's behalf."},"meta":{"type":"object","properties":{"dseq":{"type":"string","description":"The deployment the action was about."},"batchId":{"type":"string","description":"The bulk close the action was part of, as its request named it."},"txHash":{"type":"string","description":"Reference of a pending action whose outcome is still being confirmed."},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"description":"Why a failed action did not go through."},"reason":{"type":"string","enum":["runtime_limit_reached","trial_ended","provider_unreachable","no_lease"],"description":"Why Console closed the deployment, on a close it made on the user's behalf: `runtime_limit_reached` (the runtime limit set for it ran out), `trial_ended` (the trial it ran on ended), `provider_unreachable` (its provider stopped responding) or `no_lease` (it had no lease, and closing it returned its deposit)."}}},"seenAt":{"type":"string","nullable":true,"format":"date-time","description":"When the user first marked the activity seen."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","type","status","initiator","meta","seenAt","createdAt","updatedAt"]},"description":"Newest first."},"unseenCount":{"type":"integer","description":"Activities the user has not marked seen, whatever the filters."},"pagination":{"type":"object","properties":{"limit":{"type":"number"},"hasMore":{"type":"boolean","description":"Whether a further page exists."},"nextCursor":{"type":"string","nullable":true,"description":"Pass it as `cursor` to read the next page. Null on the last page."}},"required":["limit","hasMore","nextCursor"]}},"required":["activities","unseenCount","pagination"]}},"required":["data"]}}}},"400":{"description":"Invalid query or cursor"},"401":{"description":"Unauthorized"}}}},"/v1/activities/{id}":{"get":{"operationId":"getActivity","summary":"Get one of the user's activities, for example to follow a close running in the background","tags":["Activities"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The activity's id, as a background action's request returned it."},"required":true,"name":"id","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"The activity","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["deployment_close"],"description":"What the action was."},"status":{"type":"string","enum":["pending","succeeded","failed"],"description":"`pending` while the action is still being confirmed, then `succeeded` or `failed`."},"initiator":{"type":"string","enum":["user","system"],"description":"Who started the action: `user` for the user's own request, `system` for a close Console made on the user's behalf."},"meta":{"type":"object","properties":{"dseq":{"type":"string","description":"The deployment the action was about."},"batchId":{"type":"string","description":"The bulk close the action was part of, as its request named it."},"txHash":{"type":"string","description":"Reference of a pending action whose outcome is still being confirmed."},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"description":"Why a failed action did not go through."},"reason":{"type":"string","enum":["runtime_limit_reached","trial_ended","provider_unreachable","no_lease"],"description":"Why Console closed the deployment, on a close it made on the user's behalf: `runtime_limit_reached` (the runtime limit set for it ran out), `trial_ended` (the trial it ran on ended), `provider_unreachable` (its provider stopped responding) or `no_lease` (it had no lease, and closing it returned its deposit)."}}},"seenAt":{"type":"string","nullable":true,"format":"date-time","description":"When the user first marked the activity seen."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","type","status","initiator","meta","seenAt","createdAt","updatedAt"]}},"required":["data"]}}}},"400":{"description":"The id is not a uuid"},"401":{"description":"Unauthorized"},"404":{"description":"No activity of the user's has this id"}}}},"/v1/activities/seen":{"post":{"operationId":"markActivitiesSeen","summary":"Mark activities seen, either by id or every one created up to a time","tags":["Activities"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":100,"description":"The activities to mark seen."}},"required":["ids"]},{"type":"object","properties":{"upTo":{"type":"string","format":"date-time","description":"Marks every activity created at or before this time."}},"required":["upTo"]}]}},"required":["data"]}}}},"responses":{"200":{"description":"How many activities are still unseen","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"unseenCount":{"type":"integer","description":"Activities the user has not marked seen, whatever the filters."}},"required":["unseenCount"]}},"required":["data"]}}}},"400":{"description":"Invalid request body"},"401":{"description":"Unauthorized"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/favorite-providers":{"get":{"operationId":"listFavoriteProviders","summary":"List the providers the user marked as favorites","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"responses":{"200":{"description":"The user's favorite providers","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"providerAddresses":{"type":"array","items":{"type":"string"},"description":"In the order they were added, oldest first."}},"required":["providerAddresses"]}},"required":["data"]}}}},"401":{"description":"Unauthorized"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]},"post":{"operationId":"createFavoriteProviders","summary":"Add providers to the user's favorites","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"providerAddresses":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":500,"description":"Providers to add. One already a favorite keeps its place. A user keeps at most 500."}},"required":["providerAddresses"]}},"required":["data"]}}}},"responses":{"200":{"description":"The user's favorite providers","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"providerAddresses":{"type":"array","items":{"type":"string"},"description":"In the order they were added, oldest first."}},"required":["providerAddresses"]}},"required":["data"]}}}},"400":{"description":"Invalid request body"},"401":{"description":"Unauthorized"},"422":{"description":"The user would have more favorite providers than allowed"}},"parameters":[{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}]}},"/v1/favorite-providers/{providerAddress}":{"delete":{"operationId":"deleteFavoriteProvider","summary":"Remove a provider from the user's favorites","tags":["Users"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"providerAddress","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"The user's favorite providers","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"providerAddresses":{"type":"array","items":{"type":"string"},"description":"In the order they were added, oldest first."}},"required":["providerAddresses"]}},"required":["data"]}}}},"400":{"description":"Invalid provider address"},"401":{"description":"Unauthorized"}}}},"/v1/configure-drafts/{draftId}":{"get":{"operationId":"getConfigureDraft","summary":"Read an unfinished deployment configuration the user saved","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$","description":"The id the client gave the draft when it started the session."},"required":true,"name":"draftId","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"The draft as the account holds it","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"sdl":{"type":"string","minLength":1,"maxLength":524288,"description":"The SDL being edited, with secret values replaced by their references."},"startingSdl":{"type":"string","maxLength":524288,"description":"The SDL the session started from, which a reset goes back to."},"name":{"type":"string","maxLength":256},"runtimeLimitHours":{"type":"integer","minimum":1,"maximum":8760},"inheritSecretsFrom":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"The deployment whose secrets a redeploy carries forward."},"placementRegions":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":50},"description":"Regions picked per placement beyond the one the SDL can carry."},"draftId":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["sdl","draftId","updatedAt"]}},"required":["data"]}}}},"400":{"description":"Invalid draft id"},"401":{"description":"Unauthorized"},"404":{"description":"The user has no such draft, or it expired"}}},"put":{"operationId":"updateConfigureDraft","summary":"Save an unfinished deployment configuration, creating the draft or replacing it","description":"A user keeps at most 20 drafts: saving a new one drops the least recently saved. A draft expires 30 days after it was last saved. Secret values never belong in a draft, only the references the SDL carries.","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$","description":"The id the client gave the draft when it started the session."},"required":true,"name":"draftId","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"sdl":{"type":"string","minLength":1,"maxLength":524288,"description":"The SDL being edited, with secret values replaced by their references."},"startingSdl":{"type":"string","maxLength":524288,"description":"The SDL the session started from, which a reset goes back to."},"name":{"type":"string","maxLength":256},"runtimeLimitHours":{"type":"integer","minimum":1,"maximum":8760},"inheritSecretsFrom":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"The deployment whose secrets a redeploy carries forward."},"placementRegions":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":50},"description":"Regions picked per placement beyond the one the SDL can carry."}},"required":["sdl"]}},"required":["data"]}}}},"responses":{"200":{"description":"The draft as the account holds it","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"sdl":{"type":"string","minLength":1,"maxLength":524288,"description":"The SDL being edited, with secret values replaced by their references."},"startingSdl":{"type":"string","maxLength":524288,"description":"The SDL the session started from, which a reset goes back to."},"name":{"type":"string","maxLength":256},"runtimeLimitHours":{"type":"integer","minimum":1,"maximum":8760},"inheritSecretsFrom":{"type":"string","pattern":"^0*[1-9]\\d*$","description":"The deployment whose secrets a redeploy carries forward."},"placementRegions":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":50},"description":"Regions picked per placement beyond the one the SDL can carry."},"draftId":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["sdl","draftId","updatedAt"]}},"required":["data"]}}}},"400":{"description":"Invalid draft id or body"},"401":{"description":"Unauthorized"}}},"delete":{"operationId":"deleteConfigureDraft","summary":"Discard a saved deployment configuration","tags":["Deployments"],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$","description":"The id the client gave the draft when it started the session."},"required":true,"name":"draftId","in":"path"},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"204":{"description":"The draft is gone, or there was none"},"400":{"description":"Invalid draft id"},"401":{"description":"Unauthorized"}}}},"/v1/alerts":{"post":{"operationId":"createAlert","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertCreateInput"}}}},"responses":{"201":{"description":"Returns the created alert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertOutputResponse"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["Alert"]},"get":{"operationId":"listAlerts","parameters":[{"name":"limit","required":false,"in":"query","description":"Number of items per page","schema":{"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number","schema":{"type":"number"}},{"name":"type","required":false,"in":"query","description":"Matches the alert's `params.type` (not its top-level `type`), such as `DEPLOYMENT_CLOSED`. Used with `dseq` to filter the alerts linked to a specific deployment.","schema":{"type":"string"}},{"name":"dseq","required":false,"in":"query","description":"Linked deployment's dseq","schema":{"type":"string"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns the list of alerts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertListOutputResponse"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["Alert"]}},"/v1/alerts/{id}":{"get":{"operationId":"getAlert","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns the requested alert by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertOutputResponse"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["Alert"]},"patch":{"operationId":"updateAlert","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertPatchInput"}}}},"responses":{"200":{"description":"Returns the updated alert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertOutputResponse"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["Alert"]},"delete":{"operationId":"deleteAlert","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns the deleted alert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertOutputResponse"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["Alert"]}},"/v1/notification-channels":{"post":{"operationId":"createNotificationChannel","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelCreateInput"}}}},"responses":{"201":{"description":"Returns the created notification channel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelOutput"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["NotificationChannel"]},"get":{"operationId":"listNotificationChannels","parameters":[{"name":"limit","required":false,"in":"query","description":"Number of items per page","schema":{"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number","schema":{"type":"number"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns a paginated list of notification channels","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelListOutput"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["NotificationChannel"]}},"/v1/notification-channels/default":{"post":{"operationId":"createDefaultNotificationChannel","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelCreateDefaultInput"}}}},"responses":{"204":{"description":"Creates the default notification channel only if it doesn't exist."},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["NotificationChannel"]}},"/v1/notification-channels/{id}":{"get":{"operationId":"getNotificationChannel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns the requested notification channel by id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelOutput"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"404":{"description":"Returns 404 if the notification channel is not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["NotificationChannel"]},"patch":{"operationId":"updateNotificationChannel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelPatchInput"}}}},"responses":{"200":{"description":"Returns the updated notification channel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelOutput"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"404":{"description":"Returns 404 if the notification channel is not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["NotificationChannel"]},"delete":{"operationId":"deleteNotificationChannel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns the deleted notification channel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelOutput"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"404":{"description":"Returns 404 if the notification channel is not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["NotificationChannel"]}},"/v1/deployment-alerts/{dseq}":{"post":{"operationId":"upsertDeploymentAlert","parameters":[{"name":"dseq","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-owner-address","required":false,"in":"header","description":"The address of the user who owns the deployment","schema":{"type":"string"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentAlertCreateInput"}}}},"responses":{"201":{"description":"Returns the created alert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentAlertsResponse"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["DeploymentAlert"]},"get":{"operationId":"listDeploymentAlerts","parameters":[{"name":"dseq","required":true,"in":"path","schema":{"type":"string"}},{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/OrganizationIdHeader"},{"$ref":"#/components/parameters/ProjectIdHeader"}],"responses":{"200":{"description":"Returns alerts for the specified deployment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentAlertsResponse"}}}},"400":{"description":"Validation error responded when some request parameters are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized error responded when the user is not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedErrorResponse"}}}},"403":{"description":"Forbidden error responded when the user is not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenErrorResponse"}}}},"500":{"description":"Internal server error, should probably be reported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorResponse"}}}}},"tags":["DeploymentAlert"]}}},"components":{"schemas":{"AlertCreateInput":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean","default":true},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"params":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^\\d+$"},"type":{"type":"string"},"suppressedBySystem":{"type":"boolean"},"reclaimNotifiedAt":{"type":"string"},"leaseClosedNotifiedAt":{"type":"string"}},"required":["dseq","type"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}]},"type":{"type":"string","enum":["CHAIN_MESSAGE"]}},"required":["notificationChannelId","name","summary","description","conditions","type"]},{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean","default":true},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"params":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^\\d+$"},"type":{"type":"string"},"suppressedBySystem":{"type":"boolean"},"reclaimNotifiedAt":{"type":"string"},"leaseClosedNotifiedAt":{"type":"string"}},"required":["dseq","type"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}]},"type":{"type":"string","enum":["CHAIN_EVENT"]}},"required":["notificationChannelId","name","summary","description","conditions","type"]},{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean","default":true},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"type":{"type":"string","enum":["DEPLOYMENT_BALANCE"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}]},"params":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^\\d+$"},"owner":{"type":"string"},"suppressedBySystem":{"type":"boolean"}},"required":["dseq","owner"]}},"required":["notificationChannelId","name","summary","description","type","conditions","params"]},{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean","default":true},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"type":{"type":"string","enum":["WALLET_BALANCE"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}]},"params":{"type":"object","properties":{"owner":{"type":"string"},"denom":{"type":"string"},"suppressedBySystem":{"type":"boolean"}},"required":["owner","denom"]}},"required":["notificationChannelId","name","summary","description","type","conditions","params"]}]}},"required":["data"]},"AlertOutputResponse":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean"},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"notificationChannelName":{"type":"string"},"status":{"type":"string"},"createdAt":{},"updatedAt":{},"params":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^\\d+$"},"type":{"type":"string"},"suppressedBySystem":{"type":"boolean"},"reclaimNotifiedAt":{"type":"string"},"leaseClosedNotifiedAt":{"type":"string"}},"required":["dseq","type"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}]},"type":{"type":"string","enum":["CHAIN_MESSAGE"]}},"required":["notificationChannelId","name","enabled","summary","description","id","userId","status","createdAt","updatedAt","conditions","type"]},{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean"},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"notificationChannelName":{"type":"string"},"status":{"type":"string"},"createdAt":{},"updatedAt":{},"params":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^\\d+$"},"type":{"type":"string"},"suppressedBySystem":{"type":"boolean"},"reclaimNotifiedAt":{"type":"string"},"leaseClosedNotifiedAt":{"type":"string"}},"required":["dseq","type"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}]},"type":{"type":"string","enum":["CHAIN_EVENT"]}},"required":["notificationChannelId","name","enabled","summary","description","id","userId","status","createdAt","updatedAt","conditions","type"]},{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean"},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"notificationChannelName":{"type":"string"},"status":{"type":"string"},"createdAt":{},"updatedAt":{},"type":{"type":"string","enum":["DEPLOYMENT_BALANCE"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}]},"params":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^\\d+$"},"owner":{"type":"string"},"suppressedBySystem":{"type":"boolean"}},"required":["dseq","owner"]}},"required":["notificationChannelId","name","enabled","summary","description","id","userId","status","createdAt","updatedAt","type","conditions","params"]},{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean"},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"notificationChannelName":{"type":"string"},"status":{"type":"string"},"createdAt":{},"updatedAt":{},"type":{"type":"string","enum":["WALLET_BALANCE"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}]},"params":{"type":"object","properties":{"owner":{"type":"string"},"denom":{"type":"string"},"suppressedBySystem":{"type":"boolean"}},"required":["owner","denom"]}},"required":["notificationChannelId","name","enabled","summary","description","id","userId","status","createdAt","updatedAt","type","conditions","params"]}]}},"required":["data"]},"ValidationErrorResponse":{"type":"object","properties":{"statusCode":{"type":"number","minimum":400,"maximum":400},"message":{"type":"string"},"errors":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{}}}},"required":["issues"]}},"required":["statusCode","message","errors"]},"UnauthorizedErrorResponse":{"type":"object","properties":{"statusCode":{"type":"number","minimum":401,"maximum":401},"message":{"type":"string"}},"required":["statusCode","message"]},"ForbiddenErrorResponse":{"type":"object","properties":{"statusCode":{"type":"number","minimum":403,"maximum":403},"message":{"type":"string"}},"required":["statusCode","message"]},"InternalServerErrorResponse":{"type":"object","properties":{"statusCode":{"type":"number","minimum":500,"maximum":500},"message":{"type":"string"}},"required":["statusCode","message"]},"AlertListOutputResponse":{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean"},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"notificationChannelName":{"type":"string"},"status":{"type":"string"},"createdAt":{},"updatedAt":{},"params":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^\\d+$"},"type":{"type":"string"},"suppressedBySystem":{"type":"boolean"},"reclaimNotifiedAt":{"type":"string"},"leaseClosedNotifiedAt":{"type":"string"}},"required":["dseq","type"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}]},"type":{"type":"string","enum":["CHAIN_MESSAGE"]}},"required":["notificationChannelId","name","enabled","summary","description","id","userId","status","createdAt","updatedAt","conditions","type"]},{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean"},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"notificationChannelName":{"type":"string"},"status":{"type":"string"},"createdAt":{},"updatedAt":{},"params":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^\\d+$"},"type":{"type":"string"},"suppressedBySystem":{"type":"boolean"},"reclaimNotifiedAt":{"type":"string"},"leaseClosedNotifiedAt":{"type":"string"}},"required":["dseq","type"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}]},"type":{"type":"string","enum":["CHAIN_EVENT"]}},"required":["notificationChannelId","name","enabled","summary","description","id","userId","status","createdAt","updatedAt","conditions","type"]},{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean"},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"notificationChannelName":{"type":"string"},"status":{"type":"string"},"createdAt":{},"updatedAt":{},"type":{"type":"string","enum":["DEPLOYMENT_BALANCE"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}]},"params":{"type":"object","properties":{"dseq":{"type":"string","pattern":"^\\d+$"},"owner":{"type":"string"},"suppressedBySystem":{"type":"boolean"}},"required":["dseq","owner"]}},"required":["notificationChannelId","name","enabled","summary","description","id","userId","status","createdAt","updatedAt","type","conditions","params"]},{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean"},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"notificationChannelName":{"type":"string"},"status":{"type":"string"},"createdAt":{},"updatedAt":{},"type":{"type":"string","enum":["WALLET_BALANCE"]},"conditions":{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}]},"params":{"type":"object","properties":{"owner":{"type":"string"},"denom":{"type":"string"},"suppressedBySystem":{"type":"boolean"}},"required":["owner","denom"]}},"required":["notificationChannelId","name","enabled","summary","description","id","userId","status","createdAt","updatedAt","type","conditions","params"]}]}},"pagination":{"type":"object","properties":{"page":{"type":"number","minimum":0,"exclusiveMinimum":false},"limit":{"type":"number","minimum":0,"exclusiveMinimum":false,"maximum":1000,"exclusiveMaximum":false},"total":{"type":"number","minimum":0,"exclusiveMinimum":false},"totalPages":{"type":"number","minimum":0,"exclusiveMinimum":false},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPreviousPage"]}},"required":["data","pagination"]},"AlertPatchInput":{"type":"object","properties":{"data":{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":3},"enabled":{"type":"boolean","default":true},"summary":{"type":"string","minLength":3},"description":{"type":"string","minLength":3},"conditions":{"oneOf":[{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["operator","field","value"]}]},{"oneOf":[{"type":"object","properties":{"operator":{"type":"string","enum":["and"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"type":"string","enum":["or"]},"value":{"type":"array","minItems":2,"items":{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}}},"required":["operator","value"]},{"type":"object","properties":{"operator":{"oneOf":[{"type":"string","enum":["eq"]},{"type":"string","enum":["lt"]},{"type":"string","enum":["gt"]},{"type":"string","enum":["lte"]},{"type":"string","enum":["gte"]}]},"field":{"type":"string","enum":["balance"]},"value":{"type":"number"}},"required":["operator","field","value"]}]}]}}}},"required":["data"]},"NotificationChannelCreateInput":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["email"]},"config":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","format":"email"}}},"required":["addresses"]},"isDefault":{"type":"boolean"}},"required":["name","type","config"]}},"required":["data"]},"NotificationChannelOutput":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["email"]},"config":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","format":"email"}}},"required":["addresses"]},"isDefault":{"type":"boolean"},"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"createdAt":{},"updatedAt":{}},"required":["name","type","config","isDefault","id","userId","createdAt","updatedAt"]}},"required":["data"]},"NotificationChannelCreateDefaultInput":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["email"]},"config":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","format":"email"}}},"required":["addresses"]}},"required":["name","type","config"]}},"required":["data"]},"NotFoundErrorResponse":{"type":"object","properties":{"statusCode":{"type":"number","minimum":404,"maximum":404},"message":{"type":"string"}},"required":["statusCode","message"]},"NotificationChannelListOutput":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["email"]},"config":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","format":"email"}}},"required":["addresses"]},"isDefault":{"type":"boolean"},"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"createdAt":{},"updatedAt":{}},"required":["name","type","config","isDefault","id","userId","createdAt","updatedAt"]}},"pagination":{"type":"object","properties":{"page":{"type":"number","minimum":0,"exclusiveMinimum":false},"limit":{"type":"number","minimum":0,"exclusiveMinimum":false,"maximum":1000,"exclusiveMaximum":false},"total":{"type":"number","minimum":0,"exclusiveMinimum":false},"totalPages":{"type":"number","minimum":0,"exclusiveMinimum":false},"hasNextPage":{"type":"boolean"},"hasPreviousPage":{"type":"boolean"}},"required":["page","limit","total","totalPages","hasNextPage","hasPreviousPage"]}},"required":["data","pagination"]},"NotificationChannelPatchInput":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["email"]},"config":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","format":"email"}}},"required":["addresses"]}}}},"required":["data"]},"DeploymentAlertCreateInput":{"type":"object","properties":{"data":{"type":"object","properties":{"alerts":{"type":"object","properties":{"deploymentBalance":{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"enabled":{"type":"boolean","default":true},"threshold":{"type":"number","minimum":0,"exclusiveMinimum":false}},"required":["notificationChannelId","threshold"]},"deploymentClosed":{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"enabled":{"type":"boolean","default":true}},"required":["notificationChannelId"]}}}},"required":["alerts"]}},"required":["data"]},"DeploymentAlertsResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"dseq":{"type":"string"},"owner":{"type":"string"},"alerts":{"type":"object","properties":{"deploymentBalance":{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"enabled":{"type":"boolean","default":true},"threshold":{"type":"number","minimum":0,"exclusiveMinimum":false},"id":{"type":"string","format":"uuid"},"status":{"type":"string"},"suppressedBySystem":{"type":"boolean"}},"required":["notificationChannelId","threshold","id","status"]},"deploymentClosed":{"type":"object","properties":{"notificationChannelId":{"type":"string","format":"uuid"},"enabled":{"type":"boolean","default":true},"id":{"type":"string","format":"uuid"},"status":{"type":"string"},"suppressedBySystem":{"type":"boolean"}},"required":["notificationChannelId","id","status"]}}}},"required":["dseq","alerts"]}},"required":["data"]}},"parameters":{"OrganizationIdHeader":{"name":"x-organization-id","in":"header","required":false,"schema":{"type":"string"},"description":"Id or slug of the organization the request runs in. Defaults to the organization used last, or the caller's personal one. Answers 403 `organization_forbidden` when the caller is not a member, and 400 `organization_mismatch` when it names another organization than the API key's."},"ProjectIdHeader":{"name":"x-project-id","in":"header","required":false,"schema":{"type":"string","format":"uuid"},"description":"Id of a project of the active organization to limit the request to. Answers 403 `project_forbidden` when the caller cannot reach the project, or the API key is limited to another one."}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token for authenticated users, sent in \"Authorization: Bearer %token\" header."},"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key for programmatic access."},"x-user-id":{"type":"apiKey","in":"header","name":"x-user-id"},"x-owner-address":{"type":"apiKey","in":"header","name":"x-owner-address"}}}}