Every API here is available over the APIs.io API and to AI agents over MCP.
{
"swagger": "2.0",
"basePath": "/",
"paths": {
"/account/": {
"post": {
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/account_response"
}
},
"500": {
"description": "Error creating account"
},
"201": {
"description": "Successfully created new account."
}
},
"operationId": "Create an account",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/account_payload"
}
}
],
"tags": [
"account"
]
},
"get": {
"responses": {
"200": {
"description": "Successfully retrieved accounts."
},
"500": {
"description": "Error retrieving accounts."
},
"204": {
"description": "No accounts found."
}
},
"summary": "Gets all accounts",
"operationId": "Retrieve all accounts",
"tags": [
"account"
]
}
},
"/account/search": {
"post": {
"responses": {
"200": {
"description": "Accounts successfully fetched."
},
"500": {
"description": "Error searching."
},
"204": {
"description": "No accounts found."
}
},
"operationId": "Search accounts",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/search_payload"
}
}
],
"tags": [
"account"
]
}
},
"/account/{account_id}": {
"parameters": [
{
"name": "account_id",
"in": "path",
"required": true,
"type": "string"
}
],
"put": {
"responses": {
"200": {
"description": "Successfully updated account."
},
"500": {
"description": "Error updating account."
},
"404": {
"description": "No account with given ID found."
}
},
"operationId": "Update information about a specific account",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/account%20update"
}
}
],
"tags": [
"account"
]
},
"delete": {
"responses": {
"200": {
"description": "Successfully disabled account."
},
"500": {
"description": "Error disabling account."
},
"404": {
"description": "No account with given ID found."
}
},
"operationId": "Disable account by id",
"tags": [
"account"
]
},
"get": {
"responses": {
"200": {
"description": "Successfully retrieved account."
},
"500": {
"description": "Error retrieving account."
},
"404": {
"description": "No account with given ID found."
}
},
"operationId": "Retrieve account by id",
"tags": [
"account"
]
}
},
"/account/{account_id}/is_onboarded": {
"parameters": [
{
"name": "account_id",
"in": "path",
"required": true,
"type": "string"
}
],
"post": {
"responses": {
"200": {
"description": "Successfully updated is_onboarded account"
},
"500": {
"description": "Error updating account."
},
"404": {
"description": "No account with given ID found."
}
},
"operationId": "Update an account is_onboarded",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/account_is_onboarded"
}
}
],
"tags": [
"account"
]
}
},
"/account/{account_id}/platform": {
"parameters": [
{
"name": "account_id",
"in": "path",
"required": true,
"type": "string"
}
],
"get": {
"responses": {
"200": {
"description": "succesfully retrieved platform"
},
"500": {
"description": "Error getting platform linked to account"
},
"404": {
"description": "Account not found."
}
},
"operationId": "Gets a platform based on the account_id",
"tags": [
"account"
]
}
},
"/account/{account_id}/user/{user_id}/relation": {
"parameters": [
{
"name": "account_id",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "user_id",
"in": "path",
"required": true,
"type": "string"
}
],
"post": {
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/account_user_relation_response"
}
},
"500": {
"description": "Error creating account-user relationship."
},
"201": {
"description": "Successfully created new account-user relationship."
}
},
"operationId": "Add a new account-user relationship",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/account_user_relation_payload"
}
}
],
"tags": [
"account"
]
},
"put": {
"responses": {
"200": {
"description": "Successfully modified account-user relationship."
},
"500": {
"description": "Error modifying account-user relationship."
}
},
"operationId": "Modify an existing account-user relationship",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/account_user_relation_payload"
}
}
],
"tags": [
"account"
]
},
"delete": {
"responses": {
"500": {
"description": "Error removing account-user relation."
},
"404": {
"description": "No relation found for the account/user combination."
},
"200": {
"description": "Successfully deleted account-user relation."
}
},
"operationId": "Delete an account-user relation",
"tags": [
"account"
]
},
"get": {
"responses": {
"200": {
"description": "Successfully retrieved relation."
},
"500": {
"description": "Error retrieving relation."
},
"404": {
"description": "No relation found for the account/user combination."
}
},
"operationId": "Get a relation between the account/user",
"tags": [
"account"
]
}
},
"/account/{account_id}/user/{user_id}/relation/activate": {
"parameters": [
{
"name": "account_id",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "user_id",
"in": "path",
"required": true,
"type": "string"
}
],
"post": {
"responses": {
"200": {
"description": "Successfully activated account-user relationship."
},
"500": {
"description": "Error activating account-user relationship."
}
},
"operationId": "Activate an account-user relationship",
"tags": [
"account"
]
}
},
"/account_config/": {
"post": {
"responses": {
"500": {
"description": "Error creating account configs."
},
"409": {
"description": "Account config already exists."
},
"201": {
"description": "Account configs successfully created."
},
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/account_config_response"
}
}
}
},
"operationId": "Create account configurations",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/account_config_payload"
}
}
}
],
"tags": [
"account_config"
]
},
"get": {
"responses": {
"200": {
"description": "Successfully retrieved account config."
},
"500": {
"description": "Error retrieving account config."
},
"204": {
"description": "No account config found."
}
},
"operationId": "Get all account configurations",
"tags": [
"account_config"
]
}
},
"/account_config/account/{account_id}": {
"parameters": [
{
"in": "path",
"description": "The account id related to config",
"name": "account_id",
"required": true,
"type": "string"
}
],
"delete": {
"responses": {
"500": {
"description": "Error deleting account config."
},
"404": {
"description": "Account config not found."
},
"200": {
"description": "Account config successfully deleted."
}
},
"operationId": "delete configuration for an account",
"tags": [
"account_config"
]
},
"get": {
"responses": {
"500": {
"description": "Error fetching account config."
},
"204": {
"description": "Account config not found."
},
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/account_config_response"
}
}
}
},
"operationId": "fetch all configuration for an account",
"parameters": [
{
"description": "Filter by config type",
"type": "String",
"name": "config_type",
"in": "query"
}
],
"tags": [
"account_config"
]
}
},
"/account_config/delete": {
"post": {
"responses": {
"500": {
"description": "Error deleting account config(s)."
},
"409": {
"description": "Account config(s) does not exist."
},
"201": {
"description": "Account configs successfully deleted."
}
},
"operationId": "Delete account configurations by id",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/multi_account_config_ids"
}
}
],
"tags": [
"account_config"
]
}
},
"/account_config/{account_config_id}": {
"parameters": [
{
"in": "path",
"description": "The id of the config object",
"name": "account_config_id",
"required": true,
"type": "string"
}
],
"put": {
"responses": {
"404": {
"description": "Account config not found."
},
"500": {
"description": "Error updating account config."
},
"201": {
"description": "Account config successfully updated."
},
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/account_config_response"
}
}
},
"operationId": "update an account config",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/account_config_payload"
}
}
],
"tags": [
"account_config"
]
},
"delete": {
"responses": {
"404": {
"description": "Account config not found."
},
"500": {
"description": "Error deleting account config."
},
"200": {
"description": "Account config successfully deleted."
}
},
"operationId": "delete an account config by id",
"tags": [
"account_config"
]
},
"get": {
"responses": {
"404": {
"description": "Account config not found."
},
"500": {
"description": "Error fetching account config."
},
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/account_config_response"
}
}
},
"operationId": "fetch an account config object",
"tags": [
"account_config"
]
}
},
"/auth/login": {
"post": {
"responses": {
"500": {
"description": "Error logging in"
},
"403": {
"description": "Inactive user"
},
"401": {
"description": "Invalid credentials"
},
"400": {
"description": "Bad input"
},
"200": {
"description": "Logged in"
}
},
"operationId": "user login",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/auth_details"
}
}
],
"tags": [
"auth"
]
}
},
"/auth/logout": {
"post": {
"responses": {
"500": {
"description": "Error logging out"
},
"401": {
"description": "Invalid auth token"
},
"200": {
"description": "Logged out"
}
},
"operationId": "logout a user",
"parameters": [
{
"name": "Authorization",
"in": "header",
"type": "string",
"required": true
}
],
"tags": [
"auth"
]
}
},
"/auth/refresh": {
"post": {
"responses": {
"401": {
"description": "Error refreshing token"
},
"200": {
"description": "Refresh successful"
}
},
"operationId": "refresh a jwt token",
"tags": [
"auth"
]
}
},
"/auth/status": {
"get": {
"responses": {
"200": {
"description": "OK."
}
},
"summary": "Returns a 200 code",
"operationId": "test request to check status",
"tags": [
"auth"
]
}
},
"/auth/sudo/{user_id}": {
"parameters": [
{
"name": "user_id",
"in": "path",
"required": true,
"type": "string"
}
],
"post": {
"responses": {
"500": {
"description": "Error generating token"
},
"403": {
"description": "Not allowed to generate token"
},
"200": {
"description": "Sudo token generated"
}
},
"operationId": "generates a jwt token with the given user_id",
"tags": [
"auth"
]
}
},
"/auth/switch_account/{account_id}": {
"parameters": [
{
"name": "account_id",
"in": "path",
"required": true,
"type": "string"
}
],
"post": {
"responses": {
"500": {
"description": "Error switching account"
},
"400": {
"description": "Bad input"
},
"200": {
"description": "Switched account"
}
},
"operationId": "switch account",
"tags": [
"auth"
]
}
},
"/auth/verify_token": {
"get": {
"responses": {
"422": {
"description": "Signature verification failed."
},
"401": {
"description": "Unauthorized."
},
"200": {
"description": "OK."
}
},
"summary": "Returns a 200 code if authentication passes",
"operationId": "Verify credentials for reverse proxy",
"security": [
{
"jwt": []
},
{
"apikey": []
}
],
"tags": [
"auth"
]
}
},
"/device/": {
"get": {
"responses": {
"200": {
"description": "Successfully retrieved devices."
},
"500": {
"description": "Error retrieving devices."
},
"404": {
"description": "No devices found."
}
},
"summary": "Gets a listing of the available devices",
"operationId": "Get all devices",
"tags": [
"device"
]
}
},
"/device/account/{account_id}": {
"parameters": [
{
"in": "path",
"description": "The account id",
"name": "account_id",
"required": true,
"type": "string"
}
],
"post": {
"responses": {
"404": {
"description": "Account not found."
},
"500": {
"description": "Error creating device."
},
"409": {
"description": "Device already exists."
},
"400": {
"description": "Bad input."
},
"201": {
"description": "Device successfully created."
},
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/device_response"
}
}
},
"summary": "Creates a new device for account by id",
"operationId": "register a new device for account by id",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/device_payload"
}
}
],
"tags": [
"device"
]
},
"get": {
"responses": {
"404": {
"description": "No devices found for account."
},
"200": {
"description": "Successfully retrieved devices."
},
"500": {
"description": "Error retrieving devices."
}
},
"operationId": "Get all devices for account by id",
"tags": [
"device"
]
}
},
"/device/api_trial": {
"post": {
"responses": {
"500": {
"description": "Error creating api trial."
},
"409": {
"description": "Api trial already exists."
},
"400": {
"description": "Bad input."
},
"201": {
"description": "Api trial successfully created."
},
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/device_response"
}
}
},
"summary": "Creates an api trial api key",
"operationId": "get api trial",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/api_trial_payload"
}
}
],
"tags": [
"device"
]
}
},
"/device/{device_id}": {
"parameters": [
{
"in": "path",
"description": "The device id",
"name": "device_id",
"required": true,
"type": "string"
}
],
"put": {
"responses": {
"404": {
"description": "Device not found."
},
"500": {
"description": "Error updating device."
},
"400": {
"description": "Bad input."
},
"201": {
"description": "Device successfully updated."
},
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/device_response"
}
}
},
"summary": "Updates a device",
"operationId": "update a device",
"parameters": [
{
"name": "payload",
"required": true,
"in": "body",
"schema": {
"$ref": "#/definitions/device_payload"
}
}
],
"tags": [
"device"
]
},
"delete": {
"responses": {
"404": {
"description": "Device not found."
},
"500": {
"description": "Error deleting device."
},
"200": {
"description": "Device successfully deleted."
}
},
"summary": "Deletes a device by id",
"operationId": "delete a device",
"tags": [
"device"
]
},
"get": {
"responses": {
"404": {
"description": "Device not found."
},
"500": {
"description": "Error fetching device."
},
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/device_response"
}
}
},
"operationId": "fetch a device",
"tags": [
"device"
]
}
},
"/email/send": {
# --- truncated at 32 KB (112 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/climateai/refs/heads/main/openapi/_original/climateai-platform-swagger.json