{
  "openapi": "3.1.0",
  "info": {
    "title": "CloudPulse API",
    "description": "CloudPulse product REST API for tenant users and integrations. Authenticate with a Bearer token (scripts) or the httpOnly session cookie on the app host.\n\nBase URL: `https://api.cloudpulse.host/v1` (also `https://app.cloudpulse.host/api/v1`).\n\nHealth check (not under /v1): `GET https://api.cloudpulse.host/health`.",
    "version": "1.1.10"
  },
  "paths": {
    "/auth/oidc/login": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Oidc Login",
        "description": "Public \u2014 start the authorization-code flow for a tenant's IdP.",
        "operationId": "oidc_login_api_v1_auth_oidc_login_get",
        "parameters": [
          {
            "name": "tenant",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/oidc/callback": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Oidc Callback",
        "description": "Public \u2014 IdP redirect target. Exchanges the code, validates the\nid_token signature against the issuer's JWKS, matches the user, and\nhands a CloudPulse session to the frontend via URL fragment (fragments\nnever reach server logs).",
        "operationId": "oidc_callback_api_v1_auth_oidc_callback_get",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Code"
            }
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "State"
            }
          },
          {
            "name": "error",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Error"
            }
          },
          {
            "name": "error_description",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Error Description"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/tenants": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "List Tenants",
        "description": "Provider-scope: all tenants, status-only on SSO. Tenant admin: their own\ntenant with full SSO config (self-service).",
        "operationId": "list_tenants_api_v1_auth_tenants_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/tenants/{tenant_id}": {
      "patch": {
        "tags": [
          "Auth"
        ],
        "summary": "Patch Tenant",
        "operationId": "patch_tenant_api_v1_auth_tenants__tenant_id__patch",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantPatchIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/tenants/{tenant_id}/oidc-test": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Oidc Test",
        "description": "Sanity check: can we discover this org's IdP? Own org only \u2014 the same\nself-service boundary as patch, for providers and tenant admins alike.",
        "operationId": "oidc_test_api_v1_auth_tenants__tenant_id__oidc_test_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/tenant": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Tenant Info",
        "description": "Public \u2014 branding for the per-tenant login page. Name + SSO flag only.",
        "operationId": "tenant_info_api_v1_auth_tenant_get",
        "parameters": [
          {
            "name": "slug",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Slug"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/login": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Login",
        "operationId": "login_api_v1_auth_login_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/logout": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Logout",
        "description": "Clear the browser session cookie. Idempotent.",
        "operationId": "logout_api_v1_auth_logout_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/refresh": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Refresh Session",
        "description": "Slide idle expiry while under the absolute session cap.\n\nKeeps the original `sst` from the current cookie/Bearer token. Returns\na new `token` (scripts) and sets the httpOnly cookie (SPA).",
        "operationId": "refresh_session_api_v1_auth_refresh_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/me": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Me",
        "operationId": "me_api_v1_auth_me_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/mfa/verify": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Mfa Verify",
        "description": "Second login step: redeem the mfa token with TOTP or one recovery code.",
        "operationId": "mfa_verify_api_v1_auth_mfa_verify_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaVerifyIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/mfa/setup": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Mfa Setup",
        "description": "Begin 2FA enrollment: generates a secret (stored, but NOT enabled until\nconfirmed with a valid code) and returns the otpauth URI + a QR PNG for\nMicrosoft/Google Authenticator.\nPassword users must re-enter their password. SSO-only (NULL hash) skip.\nDisabled users cannot enroll (get_active_user).",
        "operationId": "mfa_setup_api_v1_auth_mfa_setup_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaSetupIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/mfa/enable": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Mfa Enable",
        "description": "Confirm enrollment with a live code. Returns recovery codes once.",
        "operationId": "mfa_enable_api_v1_auth_mfa_enable_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaCodeIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/mfa/disable": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Mfa Disable",
        "description": "Turn 2FA off \u2014 TOTP or one recovery code, plus password when set.",
        "operationId": "mfa_disable_api_v1_auth_mfa_disable_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaCodeIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/me/prefs": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Update Prefs",
        "description": "Self-service: toggle one's own email-notification preference.",
        "operationId": "update_prefs_api_v1_auth_me_prefs_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrefsIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/change-password": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Change Password",
        "operationId": "change_password_api_v1_auth_change_password_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePasswordIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/users": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "List Users",
        "operationId": "list_users_api_v1_auth_users_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Create User",
        "operationId": "create_user_api_v1_auth_users_post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserCreateIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/users/{user_id}": {
      "delete": {
        "tags": [
          "Auth"
        ],
        "summary": "Delete User",
        "description": "Permanently remove a user. Their account grants cascade away with them\n(FK ON DELETE CASCADE). Saved dashboards/reports are not user-owned in\nthe current schema, so nothing else references them.",
        "operationId": "delete_user_api_v1_auth_users__user_id__delete",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Auth"
        ],
        "summary": "Patch User",
        "operationId": "patch_user_api_v1_auth_users__user_id__patch",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserPatchIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/users/{user_id}/accounts": {
      "put": {
        "tags": [
          "Auth"
        ],
        "summary": "Set User Accounts",
        "description": "Replace a user's account grants with the given list (idempotent).",
        "operationId": "set_user_accounts_api_v1_auth_users__user_id__accounts_put",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountGrantsIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/users/{user_id}/invite": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Reissue Invite",
        "description": "Regenerate an invite link (e.g. expired or lost). Invalidates the old one.",
        "operationId": "reissue_invite_api_v1_auth_users__user_id__invite_post",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/invite": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Invite Info",
        "description": "Public \u2014 who is this invite for? (email + tenant name for the page).",
        "operationId": "invite_info_api_v1_auth_invite_get",
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/invite/accept": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Invite Accept",
        "description": "Public \u2014 set password via invite token. Single-use; signs the user in.",
        "operationId": "invite_accept_api_v1_auth_invite_accept_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteAcceptIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/tenants": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "List Tenants",
        "description": "List registered tenants.\nProvider-scope: all active tenants.\nTenant-scope: only the caller's own tenant (prevents name enumeration).",
        "operationId": "list_tenants_api_v1_accounts_tenants_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/TenantOut"
                  },
                  "type": "array",
                  "title": "Response List Tenants Api V1 Accounts Tenants Get"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "List Accounts",
        "description": "include_inactive=False (default) keeps scripts and automation on active\naccounts only. The Accounts UI passes include_inactive=true so disabled\naccounts stay visible with their re-enable toggle \u2014 otherwise disable\nis a one-way door.\nViewers only see explicitly granted accounts.",
        "operationId": "list_accounts_api_v1_accounts__get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          },
          {
            "name": "include_inactive",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Include Inactive"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AccountOut"
                  },
                  "title": "Response List Accounts Api V1 Accounts  Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Create Account",
        "operationId": "create_account_api_v1_accounts__post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/aws-stack-template": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Download Aws Stack Template",
        "description": "CloudFormation YAML with External ID and account ID prefilled (unsaved add-account).",
        "operationId": "download_aws_stack_template_api_v1_accounts_aws_stack_template_get",
        "parameters": [
          {
            "name": "audit_account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Audit Account Id"
            }
          },
          {
            "name": "external_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "External Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/azure-setup-script": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Download Azure Setup Script",
        "description": "Customer PowerShell: find/create SP, MG + billing roles, optional local secret.",
        "operationId": "download_azure_setup_script_api_v1_accounts_azure_setup_script_get",
        "parameters": [
          {
            "name": "azure_tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Azure Tenant Id"
            }
          },
          {
            "name": "management_group_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "Management Group Id"
            }
          },
          {
            "name": "app_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "App Id"
            }
          },
          {
            "name": "billing_account_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "Billing Account Id"
            }
          },
          {
            "name": "billing_profile_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "Billing Profile Id"
            }
          },
          {
            "name": "storage_account_resource_ids",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "Storage Account Resource Ids"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/gcp-setup-script": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Download Gcp Setup Script",
        "description": "Customer PowerShell: components SA + org IAM + Azure WIF pool.",
        "operationId": "download_gcp_setup_script_api_v1_accounts_gcp_setup_script_get",
        "parameters": [
          {
            "name": "organization_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Organization Id"
            }
          },
          {
            "name": "host_project_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Host Project Id"
            }
          },
          {
            "name": "billing_account_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "Billing Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/oci-setup-script": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Download Oci Setup Script",
        "description": "Customer PowerShell: components group/user + tenancy read/search policies.",
        "operationId": "download_oci_setup_script_api_v1_accounts_oci_setup_script_get",
        "parameters": [
          {
            "name": "tenancy_ocid",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenancy Ocid"
            }
          },
          {
            "name": "region",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "us-ashburn-1",
              "title": "Region"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/{account_id}/aws-stack-template": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Download Aws Stack Template For Account",
        "description": "Same template, values taken from the saved AWS account.",
        "operationId": "download_aws_stack_template_for_account_api_v1_accounts__account_id__aws_stack_template_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/{account_id}/azure-setup-script": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Download Azure Setup Script For Account",
        "operationId": "download_azure_setup_script_for_account_api_v1_accounts__account_id__azure_setup_script_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/{account_id}/discover-billing": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Discover Billing Exports For Account",
        "description": "Discover billing export location \u2192 billing_storage preview.\n- Azure: Cost Management exports (storage / container / path)\n- AWS: CUR 2.0 Data Exports (bcm-data-exports) + Legacy CUR\n  DescribeReportDefinitions \u2192 cur_bucket / cur_prefix\n- OCI: Oracle Cost and Usage Reports in Object Storage (bling / FOCUS)\nBody: { apply?: bool, force?: bool }. When apply=true, write billing_storage\nonly if currently empty (or force=true). Never creates exports in the cloud \u2014\ncustomer creates CUR 2.0 in the AWS console; OCI reports are Oracle-managed.",
        "operationId": "discover_billing_exports_for_account_api_v1_accounts__account_id__discover_billing_post",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/DiscoverBillingBody"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Payload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/{account_id}/gcp-setup-script": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Download Gcp Setup Script For Account",
        "operationId": "download_gcp_setup_script_for_account_api_v1_accounts__account_id__gcp_setup_script_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/{account_id}/oci-setup-script": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Download Oci Setup Script For Account",
        "operationId": "download_oci_setup_script_for_account_api_v1_accounts__account_id__oci_setup_script_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/{account_id}": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get Account",
        "operationId": "get_account_api_v1_accounts__account_id__get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Accounts"
        ],
        "summary": "Delete Account",
        "description": "Hard-delete an account and its account history (runs + snapshots).\n",
        "operationId": "delete_account_api_v1_accounts__account_id__delete",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Accounts"
        ],
        "summary": "Update Account",
        "operationId": "update_account_api_v1_accounts__account_id__patch",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/assessments/catalog": {
      "get": {
        "tags": [
          "Assessments"
        ],
        "summary": "Aprl Catalog Status",
        "description": "Live vs baked APRL catalog this worker would use. Not a secret.",
        "operationId": "aprl_catalog_status_api_v1_assessments_catalog_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/assessments/resource-groups": {
      "get": {
        "tags": [
          "Assessments"
        ],
        "summary": "List Assessment Resource Groups",
        "description": "RG picker from Resource Groups snaps (fast); fallback = one recent inventory run.",
        "operationId": "list_assessment_resource_groups_api_v1_assessments_resource_groups_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/assessments": {
      "post": {
        "tags": [
          "Assessments"
        ],
        "summary": "Start Assessment",
        "operationId": "start_assessment_api_v1_assessments_post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssessmentIn"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssessmentOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Assessments"
        ],
        "summary": "List Assessments",
        "operationId": "list_assessments_api_v1_assessments_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 50,
              "default": 20,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssessmentOut"
                  },
                  "title": "Response List Assessments Api V1 Assessments Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/assessments/{run_id}": {
      "get": {
        "tags": [
          "Assessments"
        ],
        "summary": "Get Assessment",
        "operationId": "get_assessment_api_v1_assessments__run_id__get",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssessmentOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Assessments"
        ],
        "summary": "Delete Assessment",
        "description": "Hard-delete a workload assessment run and its findings.\nIn-flight runs must be cancelled first (409).",
        "operationId": "delete_assessment_api_v1_assessments__run_id__delete",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/assessments/{run_id}/cancel": {
      "post": {
        "tags": [
          "Assessments"
        ],
        "summary": "Cancel Assessment",
        "description": "Cancel a PENDING/RUNNING workload assessment.\nConditional UPDATE so a concurrent COMPLETED cannot be overwritten.\nWorker still finishes the in-flight components but will not mark COMPLETED.",
        "operationId": "cancel_assessment_api_v1_assessments__run_id__cancel_post",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssessmentOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/assessments/{run_id}/findings": {
      "get": {
        "tags": [
          "Assessments"
        ],
        "summary": "Assessment Findings",
        "operationId": "assessment_findings_api_v1_assessments__run_id__findings_get",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/assessments/{run_id}/export.csv": {
      "get": {
        "tags": [
          "Assessments"
        ],
        "summary": "Assessment Csv",
        "operationId": "assessment_csv_api_v1_assessments__run_id__export_csv_get",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/assessments/{run_id}/export/xlsx": {
      "get": {
        "tags": [
          "Assessments"
        ],
        "summary": "Assessment Xlsx",
        "operationId": "assessment_xlsx_api_v1_assessments__run_id__export_xlsx_get",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/assessments/{run_id}/export/pptx": {
      "get": {
        "tags": [
          "Assessments"
        ],
        "summary": "Assessment Pptx",
        "operationId": "assessment_pptx_api_v1_assessments__run_id__export_pptx_get",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/types": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "List Resource Types",
        "description": "Distinct resource types in scope with optional pagination.",
        "operationId": "list_resource_types_api_v1_resources_meta_types_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by tenant",
              "title": "Tenant Id"
            },
            "description": "Filter by tenant"
          },
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by account",
              "title": "Account Id"
            },
            "description": "Filter by account"
          },
          {
            "name": "infrastructure_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Exclude cloudpulse/* and microsoft.costmanagement/* synthetics (Inventory)",
              "default": false,
              "title": "Infrastructure Only"
            },
            "description": "Exclude cloudpulse/* and microsoft.costmanagement/* synthetics (Inventory)"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 500,
              "default": 200,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/subscriptions": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "List Subscriptions",
        "description": "Distinct Azure subscription GUIDs in scope. Useful for UI filter dropdowns.",
        "operationId": "list_subscriptions_api_v1_resources_meta_subscriptions_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by tenant",
              "title": "Tenant Id"
            },
            "description": "Filter by tenant"
          },
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by account",
              "title": "Account Id"
            },
            "description": "Filter by account"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 500,
              "default": 200,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/summary": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Resource Summary",
        "description": "True resource counts from the latest COMPLETED run(s) \u2014 the dashboard's\n\"Total Resources\" source. Counts resource_snapshots only; deliberately\nEXCLUDES billing line items and rollups (collection_runs.resource_count is\na \"records written\" ops metric that includes those, which is why it reads\nin the millions and must not be presented as a resource inventory).\n\ninfrastructure = real Azure resources (ARG-collected)\nderived        = CloudPulse analysis rows (cloudpulse/*, costmanagement meta)",
        "operationId": "resource_summary_api_v1_resources_summary_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Single account",
              "title": "Account Id"
            },
            "description": "Single account"
          },
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "All accounts of a tenant",
              "title": "Tenant Id"
            },
            "description": "All accounts of a tenant"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "List Resources",
        "description": "Query collected resource snapshots.\nDefaults to latest_only=True so each resource appears exactly once.\nPass latest_only=false to query historical data across all runs.\nPass infrastructure_only=true for client Inventory (hides cloudpulse/*).\nPass slim=true to skip heavy JSONB columns (use for aggregates / name lists).",
        "operationId": "list_resources_api_v1_resources__get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "All resources for a client",
              "title": "Tenant Id"
            },
            "description": "All resources for a client"
          },
          {
            "name": "management_group_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "All resources under a management group",
              "title": "Management Group Id"
            },
            "description": "All resources under a management group"
          },
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Resources for one account",
              "title": "Account Id"
            },
            "description": "Resources for one account"
          },
          {
            "name": "subscription",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by Azure subscription GUID",
              "title": "Subscription"
            },
            "description": "Filter by Azure subscription GUID"
          },
          {
            "name": "resource_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "e.g. microsoft.compute/virtualmachines",
              "title": "Resource Type"
            },
            "description": "e.g. microsoft.compute/virtualmachines"
          },
          {
            "name": "region",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "e.g. eastus",
              "title": "Region"
            },
            "description": "e.g. eastus"
          },
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "azure | gcp | aws | oci",
              "title": "Provider"
            },
            "description": "azure | gcp | aws | oci"
          },
          {
            "name": "run_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Scope to a specific sync",
              "title": "Run Id"
            },
            "description": "Scope to a specific sync"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Substring match on name, id, or resource group",
              "title": "Search"
            },
            "description": "Substring match on name, id, or resource group"
          },
          {
            "name": "latest_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Preferred completed run per account (full/inventory-rich when no type filter)",
              "default": true,
              "title": "Latest Only"
            },
            "description": "Preferred completed run per account (full/inventory-rich when no type filter)"
          },
          {
            "name": "infrastructure_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Exclude cloudpulse/* and costmanagement synthetics (Inventory)",
              "default": false,
              "title": "Infrastructure Only"
            },
            "description": "Exclude cloudpulse/* and costmanagement synthetics (Inventory)"
          },
          {
            "name": "rbac_privileged",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Azure roleassignments: Owner/Contributor/UAA only",
              "default": false,
              "title": "Rbac Privileged"
            },
            "description": "Azure roleassignments: Owner/Contributor/UAA only"
          },
          {
            "name": "slim",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Omit properties/tags/normalized JSONB (counts/heroes)",
              "default": false,
              "title": "Slim"
            },
            "description": "Omit properties/tags/normalized JSONB (counts/heroes)"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceOut"
                  },
                  "title": "Response List Resources Api V1 Resources  Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/pillar-scores": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Pillar Scores",
        "description": "Compute all five Well-Architected pillar scores server-side in a handful of\naggregate queries scoped to the latest completed run that has inventory.\nReturns: { cost, reliability, security, opex, perf } each = {score, detail}.\nAzure uses Advisor / Defender / Policy. AWS / GCP / OCI use collected analogs.",
        "operationId": "pillar_scores_api_v1_resources_meta_pillar_scores_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Account to score",
              "title": "Account Id"
            },
            "description": "Account to score"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/action-center": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Action Center",
        "description": "Action Center findings rollup \u2014 SPA-shaped cards from SQL aggregates on the\npreferred completed run. Browser does not page inventory for counts.\nBudgets stay on GET /budgets/. Identified Wastage is a separate endpoint\n(`/meta/action-center-wastage`) so findings can paint first.\n\nCost anomalies (and all other findings) are scoped to the selected account /\nCLOUD \u2014 not fan-in across the tenant.",
        "operationId": "action_center_api_v1_resources_meta_action_center_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Account to roll up Action Center findings for",
              "title": "Account Id"
            },
            "description": "Account to roll up Action Center findings for"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/action-center-wastage": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Action Center Wastage",
        "description": "Identified Wastage (wastage_engine) + Est. Annual Savings recs in one response.\nSPA loads after findings paint. Empty wastage is authoritative zero \u2014 do not\nfall back to paging inventory for aggregates.",
        "operationId": "action_center_wastage_api_v1_resources_meta_action_center_wastage_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Account for Identified Wastage rollup",
              "title": "Account Id"
            },
            "description": "Account for Identified Wastage rollup"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/exposure": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Meta Exposure",
        "description": "Internet Exposure counts for heroes / Boards \u2014 not full inventory tables.",
        "operationId": "meta_exposure_api_v1_resources_meta_exposure_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Account for Internet Exposure aggregates",
              "title": "Account Id"
            },
            "description": "Account for Internet Exposure aggregates"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/action-center-high": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Action Center High",
        "description": "Critical/warning subset of /meta/action-center (early-paint / digests).",
        "operationId": "action_center_high_api_v1_resources_meta_action_center_high_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Account to roll up High findings for",
              "title": "Account Id"
            },
            "description": "Account to roll up High findings for"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/reliability-extended": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Reliability Extended",
        "description": "Expanded reliability signals from per-type preferred runs (union):\n  - backup:       Azure VM backup coverage; GCP snapshot-schedule join;\n                  AWS snapshot inventory count (no fake coverage %);\n                  OCI volume/boot-volume backup join (real coverage, no fake %)\n  - spof:         Azure VMs with no AZ; GCP sole running VM in project\u00d7region;\n                  AWS EC2 with no AZ + RDS single-AZ;\n                  OCI instances with no AD + ADB without Data Guard\n  - multi_region: VMs + disks + SQL/DBaaS (or RDS / ADB) per region",
        "operationId": "reliability_extended_api_v1_resources_meta_reliability_extended_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/owner-attribution": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Owner Attribution",
        "description": "Owner attribution across resources, resolved at the RESOURCE level\n(resource owner tag -> resource group owner tag -> Unassigned). Surfaces the\nunattributed pile as a headline metric to drive tagging compliance.\n\nReturns: per-owner counts, attribution rate, and a sample of unassigned\nresources (the actionable tagging backlog).",
        "operationId": "owner_attribution_api_v1_resources_meta_owner_attribution_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "resource_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "optional: scope to one resource type",
              "title": "Resource Type"
            },
            "description": "optional: scope to one resource type"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/rightsizing-owners": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Rightsizing Owners",
        "description": "Resolves an owner for each VM that has a rightsizing recommendation, by\njoining the VM's own tags (and its resource group's owner) via the resource\n-level resolver. Returns { vm_id_lower: {owner, source} } for the frontend\nto join onto the rightsizing table. Anomalies are intentionally NOT given an\nowner \u2014 they are service-level (subscription|service) and have no single owner.",
        "operationId": "rightsizing_owners_api_v1_resources_meta_rightsizing_owners_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/rightsizing-tags": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Rightsizing Tags",
        "description": "Returns the VM tags for every VM that has a rightsizing recommendation, so\nthe frontend can offer an ad-hoc \"filter by tag key = value\" control. This is\nclient-agnostic: rather than hardcoding which tag means \"owner\", the user\npicks any tag key (e.g. appowner, CostCenter, team, BusinessUnit) and value.\n\nResponse:\n  {\n    \"tags\":  { vm_id_lower: { tagkey_lower: value, ... }, ... },\n    \"keys\":  [\"appowner\", \"costcenter\", \"environment\", ...],  # distinct, sorted\n    \"values\": { tagkey_lower: [\"v1\", \"v2\", ...] }              # distinct per key\n  }\nTag keys/values preserve original casing in the value strings; keys are\nlowercased for stable matching (Azure tag keys are case-insensitive).\n\nRun alignment: rightsizing from its preferred run; VM tags from the VM\npreferred run (may differ when Rightsizing was a thin custom collect).",
        "operationId": "rightsizing_tags_api_v1_resources_meta_rightsizing_tags_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/estate-distribution": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Estate Distribution",
        "description": "OpEx estate charts \u2014 counts from the broadest inventory COMPLETED run\n(most distinct infra types), not merely the newest run. A later thin\ncustom collect (Compute-only / Lambda-only / CapRes-only) must not blank\nEstate Distribution. SQL aggregates only.",
        "operationId": "estate_distribution_api_v1_resources_meta_estate_distribution_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "include_derived",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include cloudpulse/* and costmanagement synthetics (default: infrastructure only)",
              "default": false,
              "title": "Include Derived"
            },
            "description": "Include cloudpulse/* and costmanagement synthetics (default: infrastructure only)"
          },
          {
            "name": "top",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 5,
              "description": "Max rows per breakdown",
              "default": 20,
              "title": "Top"
            },
            "description": "Max rows per breakdown"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/meta/type-freshness": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Type Freshness",
        "description": "Reports whether the data served for `resource_type` (under latest_only) comes\nfrom the account's newest completed run or an earlier one (because the type's\ncomponents failed/returned 0 in the newest run). Lets the UI show an\n'as of <date>' indicator when data is not from the latest run.\n\nReturns:\n  {\n    \"is_latest\": bool,           # true = from the newest run\n    \"data_run_id\": str|None,     # the run the data actually comes from\n    \"data_as_of\": iso|None,      # that run's completed_at\n    \"latest_run_id\": str|None,   # the account's newest completed run\n    \"latest_as_of\": iso|None,    # newest run's completed_at\n  }",
        "operationId": "type_freshness_api_v1_resources_meta_type_freshness_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "resource_type",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Resource Type"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/resources/{snapshot_id}": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Get Resource",
        "description": "Return a single resource snapshot by its ID.",
        "operationId": "get_resource_api_v1_resources__snapshot_id__get",
        "parameters": [
          {
            "name": "snapshot_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Snapshot Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/tag-keys": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Tag Keys",
        "description": "Tag keys for Cost Explorer group-by / filter dropdowns.\n\nBilling warehouse (+ AWS CE cost-allocation snaps) only \u2014 inventory\nsnapshot tags are excluded. Those often appear on Azure estates (Product /\nEnvironment on VMs) while Query API / bill-summary spend has no tags, so\npicking them made Cost Explorer show an empty chart.",
        "operationId": "get_tag_keys_api_v1_billing__account_id__tag_keys_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/tag-values": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Tag Values",
        "description": "Returns distinct values for a given tag key from the tags JSONB.\nUsed by the frontend to populate the Tag Value dropdown after a key pick.",
        "operationId": "get_tag_values_api_v1_billing__account_id__tag_values_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "tag_key",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tag Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/daily-usage": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Daily Usage",
        "description": "Aggregated billing data with dynamic tag filter support.\ngroup_by: service, subscription, resource_group, etc., OR \"tag:<key>\" for any tag,\nOR \"enrichment:<dataset_id>.<column>\" for Custom Business Data dimensions.\ntag_key + tag_value: generic tag filter \u2014 any tag key present in the data.",
        "operationId": "get_daily_usage_api_v1_billing__account_id__daily_usage_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "group_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "service",
              "title": "Group By"
            }
          },
          {
            "name": "granularity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "total",
              "title": "Granularity"
            }
          },
          {
            "name": "from_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM or YYYY-MM-DD",
              "title": "From Date"
            },
            "description": "YYYY-MM or YYYY-MM-DD"
          },
          {
            "name": "to_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM or YYYY-MM-DD",
              "title": "To Date"
            },
            "description": "YYYY-MM or YYYY-MM-DD"
          },
          {
            "name": "subscription_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Subscription Id"
            }
          },
          {
            "name": "service",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Service"
            }
          },
          {
            "name": "tag_key",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Tag key (any key present in the data)",
              "title": "Tag Key"
            },
            "description": "Tag key (any key present in the data)"
          },
          {
            "name": "tag_value",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Tag value to filter by",
              "title": "Tag Value"
            },
            "description": "Tag value to filter by"
          },
          {
            "name": "charge_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Charge Type"
            }
          },
          {
            "name": "pricing_model",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pricing Model"
            }
          },
          {
            "name": "billing_profile",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Billing Profile"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 50000,
              "default": 500,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/available-months": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Available Months",
        "description": "Distinct months with data \u2014 for date picker.\n\nUnions Billing Export warehouse months with Cost Management Query API\ncurrent-month actuals so Azure accounts without export still show This month.",
        "operationId": "get_available_months_api_v1_billing__account_id__available_months_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/top-resources": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Top Resources",
        "description": "Top resources by cost over a month range \u2014 served from the\nbilling_resource_monthly table (per-resource monthly grain, populated by\nthe billing components). One row per resource, summed across the range.",
        "operationId": "get_top_resources_api_v1_billing__account_id__top_resources_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "from_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive YYYY-MM lower bound",
              "title": "From Month"
            },
            "description": "Inclusive YYYY-MM lower bound"
          },
          {
            "name": "to_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive YYYY-MM upper bound",
              "title": "To Month"
            },
            "description": "Inclusive YYYY-MM upper bound"
          },
          {
            "name": "subscription_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Subscription Id"
            }
          },
          {
            "name": "service",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Service"
            }
          },
          {
            "name": "resource_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Resource Type"
            }
          },
          {
            "name": "metric",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "actual | amortized",
              "default": "actual",
              "title": "Metric"
            },
            "description": "actual | amortized"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 500,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/filter-values": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Filter Values",
        "description": "Returns distinct values for non-tag filter dropdowns (subscription, service, charge_type).\nTag filters are handled by /tag-keys and /tag-values endpoints.",
        "operationId": "get_filter_values_api_v1_billing__account_id__filter_values_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/summary": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Billing Summary",
        "description": "Quick billing summary for Dashboard stat cards.",
        "operationId": "get_billing_summary_api_v1_billing__account_id__summary_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/forecast": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Cost Forecast",
        "description": "Month-to-date run-rate forecast. Takes the current month's spend so far and\nthe number of days with billing data, computes a daily run-rate, and\nprojects it across the full month. Compares to the prior month's actual and\n(optionally) a budget threshold.\n\nRun-rate is intentionally simple and explainable: projected = (MTD spend /\ndays_with_data) * days_in_month. Billing data often lags 1-2 days, so we use\ndistinct days that actually have data rather than calendar days elapsed.\n\nMonthly-grain sources (OCI Usage API MONTHLY, one row dated the 1st) must not\ndivide by days_with_data=1 \u2014 that invents $/day = full month cost (~$12k/day \u2192\nmulti-million year-end). Detect that grain and prorate by calendar days elapsed.",
        "operationId": "get_cost_forecast_api_v1_billing__account_id__forecast_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "budget",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional monthly budget for alerting",
              "title": "Budget"
            },
            "description": "Optional monthly budget for alerting"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/reservation-recommendations": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Reservation Recommendations",
        "description": "Two-sided reservation guidance, computed from already-collected data:\n\nWASTE/RISK \u2014 reservation lifecycle issues from microsoft.reservations/order:\n             expired reservations (workloads likely back on on-demand),\n             active reservations expiring soon, and active ones set to not\n             renew (will silently lapse). Azure's reservation export doesn't\n             include utilization %, so we surface lifecycle gaps instead \u2014\n             which are the directly actionable signals.\nBUY        \u2014 steady-state VMs (rightsizing Optimal/Downsize) that are good RI\n             candidates, with estimated savings.\n\nNo new components \u2014 joins cloudpulse/rightsizing + microsoft.reservations/order.",
        "operationId": "reservation_recommendations_api_v1_billing__account_id__reservation_recommendations_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "expiring_days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "active reservations expiring within N days are flagged",
              "default": 60,
              "title": "Expiring Days"
            },
            "description": "active reservations expiring within N days are flagged"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/advisor": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Advisor",
        "description": "Server-side filtered advisor recommendations.\n\nAdvisor emits one row per purchase *variant* (term / lookback / qty). The\nportal keeps the highest-savings variant per recommendation type per\nresource. Dedupe key: (subscription, type_id, impacted_value) \u2014 same intent\nas Scripts/cost_savings_runner.py (historical fix that never hit this API).",
        "operationId": "get_advisor_api_v1_billing__account_id__advisor_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Category"
            }
          },
          {
            "name": "impact",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Impact"
            }
          },
          {
            "name": "subscription_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Subscription Id"
            }
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Search"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 5000,
              "default": 500,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/advisor/summary": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Advisor Summary",
        "description": "Advisor summary by category and impact \u2014 for stat cards.\n\nDedupes Advisor purchase variants (portal math) before SUM \u2014 otherwise\nFabric/RI tips with several near-identical rows inflate Est. Annual Savings.",
        "operationId": "get_advisor_summary_api_v1_billing__account_id__advisor_summary_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/advisor/scores": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Advisor Scores",
        "description": "Advisor score (0-100) per category, averaged across subscriptions.\nSourced from microsoft.advisor/score snapshots collected by advisor_scores.py.\nReturns [] if scores have not been collected yet (needs a new sync\nafter the advisor_scores components is deployed).",
        "operationId": "get_advisor_scores_api_v1_billing__account_id__advisor_scores_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/dimension-breakdown": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Dimension Breakdown",
        "description": "For each billing dimension return the top-N values by cost plus an\n'Others' remainder.  Single request replaces N separate daily-usage calls.\nUsed by the Dimension Explorer (Apptio Tag Explorer equivalent).",
        "operationId": "get_dimension_breakdown_api_v1_billing__account_id__dimension_breakdown_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "from_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM",
              "title": "From Date"
            },
            "description": "YYYY-MM"
          },
          {
            "name": "to_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM",
              "title": "To Date"
            },
            "description": "YYYY-MM"
          },
          {
            "name": "top_n",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 20,
              "default": 6,
              "title": "Top N"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/networking-cost": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Networking Cost",
        "description": "MTD networking spend from mv_billing_daily (AWS CE / GCP BQ / Azure export / OCI Usage),\nrolled up to Cost-by-Type categories. Same role as Azure cloudpulse/egresscost.\nList-price fallback is applied in the UI when a type has no meter.",
        "operationId": "get_networking_cost_api_v1_billing__account_id__networking_cost_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "from_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM (default: current month MTD)",
              "title": "From Date"
            },
            "description": "YYYY-MM (default: current month MTD)"
          },
          {
            "name": "to_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM",
              "title": "To Date"
            },
            "description": "YYYY-MM"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/ai-spend": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Ai Spend",
        "description": "AI Spend rollup for the Insights AI pillar \u2014 one MV scan, four group-bys.\nReplaces four parallel /reports/run calls (service + meter + RG + sub).",
        "operationId": "get_ai_spend_api_v1_billing__account_id__ai_spend_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "from_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM inclusive start",
              "title": "From Month"
            },
            "description": "YYYY-MM inclusive start"
          },
          {
            "name": "to_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM inclusive end",
              "title": "To Month"
            },
            "description": "YYYY-MM inclusive end"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/{account_id}/attribution": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Cost Attribution",
        "description": "Cost grouped by a warehouse dimension, tag/label, or enrichment column.\ntag_key may be a VALID_DIMENSIONS column (service, subscription, \u2026),\n\"tag:<key>\" / a bare tag key, or enrichment:<dataset>.<column>.\nEmpty values land under '(blank)' (columns) or '(untagged)' (tags).",
        "operationId": "get_cost_attribution_api_v1_billing__account_id__attribution_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "tag_key",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Warehouse dimension (service, subscription, \u2026), tag key, tag:<key>, or enrichment:<dataset_id>.<column>",
              "title": "Tag Key"
            },
            "description": "Warehouse dimension (service, subscription, \u2026), tag key, tag:<key>, or enrichment:<dataset_id>.<column>"
          },
          {
            "name": "from_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM lower bound",
              "title": "From Month"
            },
            "description": "YYYY-MM lower bound"
          },
          {
            "name": "to_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM upper bound",
              "title": "To Month"
            },
            "description": "YYYY-MM upper bound"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/tenant-summary": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Tenant Summary",
        "description": "Cross-account YTD summary, monthly series by provider, and top services.\nThe tenant_id is matched against cloud_accounts.tenant_id \u2014 one query\nper aggregation (not per account) so it stays fast at scale.\nViewers are grant-filtered (same account_ids as /auth/me); they no longer\n403 so Dashboards can roll up the accounts they can see.",
        "operationId": "get_tenant_summary_api_v1_billing_tenant_summary_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          },
          {
            "name": "from_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM inclusive start",
              "title": "From Month"
            },
            "description": "YYYY-MM inclusive start"
          },
          {
            "name": "to_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM inclusive end",
              "title": "To Month"
            },
            "description": "YYYY-MM inclusive end"
          },
          {
            "name": "exclude_purchase",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "When true, exclude charge_type=Purchase (one-time / Marketplace purchase) from totals",
              "default": false,
              "title": "Exclude Purchase"
            },
            "description": "When true, exclude charge_type=Purchase (one-time / Marketplace purchase) from totals"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/billing/tenant-tag-coverage": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Get Tenant Tag Coverage",
        "description": "Tag / label coverage across all accounts in a tenant.\nPowers Dashboards \u2192 Tag Explorer (taggable vs untagged spend by key).\nViewers are grant-filtered the same way as tenant-summary.",
        "operationId": "get_tenant_tag_coverage_api_v1_billing_tenant_tag_coverage_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          },
          {
            "name": "from_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM inclusive start",
              "title": "From Month"
            },
            "description": "YYYY-MM inclusive start"
          },
          {
            "name": "to_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM inclusive end",
              "title": "To Month"
            },
            "description": "YYYY-MM inclusive end"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/datasets": {
      "get": {
        "tags": [
          "Enrichment"
        ],
        "summary": "List Datasets",
        "description": "List enrichment datasets for the caller's tenant (optionally scoped to an account).\n\nPass tenant_id (provider) to list all Lookups for that client \u2014 used by Allocation Profiles.",
        "operationId": "list_datasets_api_v1_enrichment_datasets_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Account Id"
            }
          },
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Create Dataset",
        "operationId": "create_dataset_api_v1_enrichment_datasets_post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatasetCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/datasets/{dataset_id}": {
      "get": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Get Dataset",
        "operationId": "get_dataset_api_v1_enrichment_datasets__dataset_id__get",
        "parameters": [
          {
            "name": "dataset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dataset Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Patch Dataset",
        "operationId": "patch_dataset_api_v1_enrichment_datasets__dataset_id__patch",
        "parameters": [
          {
            "name": "dataset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dataset Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatasetPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Delete Dataset",
        "operationId": "delete_dataset_api_v1_enrichment_datasets__dataset_id__delete",
        "parameters": [
          {
            "name": "dataset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dataset Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/datasets/{dataset_id}/refresh": {
      "post": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Refresh From Path",
        "description": "Manually re-ingest from source_uri (path / https).",
        "operationId": "refresh_from_path_api_v1_enrichment_datasets__dataset_id__refresh_post",
        "parameters": [
          {
            "name": "dataset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dataset Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/datasets/{dataset_id}/upload": {
      "post": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Upload Dataset",
        "description": "Parse CSV/XLSX, replace rows. If columns omitted, guess from headers.\nPass columns as a JSON string in the multipart form to confirm roles.",
        "operationId": "upload_dataset_api_v1_enrichment_datasets__dataset_id__upload_post",
        "parameters": [
          {
            "name": "dataset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dataset Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_dataset_api_v1_enrichment_datasets__dataset_id__upload_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/datasets/{dataset_id}/rows": {
      "get": {
        "tags": [
          "Enrichment"
        ],
        "summary": "List Rows",
        "operationId": "list_rows_api_v1_enrichment_datasets__dataset_id__rows_get",
        "parameters": [
          {
            "name": "dataset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dataset Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 500,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/dimensions": {
      "get": {
        "tags": [
          "Enrichment"
        ],
        "summary": "List Enrichment Dimensions",
        "description": "Synthetic dimensions available for Cost Explorer / Attribution group-by.",
        "operationId": "list_enrichment_dimensions_api_v1_enrichment_dimensions_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/datasets/{dataset_id}/match-preview": {
      "get": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Match Preview",
        "description": "% of billing join keys that match enrichment rows (and vice versa).",
        "operationId": "match_preview_api_v1_enrichment_datasets__dataset_id__match_preview_get",
        "parameters": [
          {
            "name": "dataset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dataset Id"
            }
          },
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/datasets/{dataset_id}/unit-economics": {
      "get": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Unit Economics",
        "description": "cost \u00f7 measure by dimension (or total). Measure is summed once per join key\nso billing fan-out does not inflate drivers.",
        "operationId": "unit_economics_api_v1_enrichment_datasets__dataset_id__unit_economics_get",
        "parameters": [
          {
            "name": "dataset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dataset Id"
            }
          },
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "measure",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Measure column name in payload",
              "title": "Measure"
            },
            "description": "Measure column name in payload"
          },
          {
            "name": "dimension",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Dimension column; omit for total",
              "title": "Dimension"
            },
            "description": "Dimension column; omit for total"
          },
          {
            "name": "from_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From Month"
            }
          },
          {
            "name": "to_month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To Month"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/flex-catalog": {
      "get": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Get Flex Catalog",
        "description": "Measures / dimensions / filter ops for the Flex Reports builder.",
        "operationId": "get_flex_catalog_api_v1_enrichment_flex_catalog_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/flex-report": {
      "post": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Post Flex Report",
        "description": "Run a Flex Report (measures \u00d7 dimensions \u00d7 filters; optional enrichment).",
        "operationId": "post_flex_report_api_v1_enrichment_flex_report_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FlexReportBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/datasets/{dataset_id}/seed-sample": {
      "post": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Seed Allocation Sample",
        "description": "Fill an Allocation map from real billing join keys + sample BU/Owner/Product.\n\nCombines live subscription/project/account IDs with demo business attributes\nso Attribution / Reports / a published board show real spend in business language.",
        "operationId": "seed_allocation_sample_api_v1_enrichment_datasets__dataset_id__seed_sample_post",
        "parameters": [
          {
            "name": "dataset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dataset Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeedSampleBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/enrichment/datasets/{dataset_id}/publish-board": {
      "post": {
        "tags": [
          "Enrichment"
        ],
        "summary": "Publish Allocation Board",
        "description": "Create saved Reports + a Custom Dashboard that groups spend by this map's\ndimensions (Business_Unit / Owner / Product / \u2026).",
        "operationId": "publish_allocation_board_api_v1_enrichment_datasets__dataset_id__publish_board_post",
        "parameters": [
          {
            "name": "dataset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dataset Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishBoardBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/profiles": {
      "get": {
        "tags": [
          "Allocation"
        ],
        "summary": "List Profiles",
        "operationId": "list_profiles_api_v1_allocation_profiles_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Allocation"
        ],
        "summary": "Create Profile",
        "operationId": "create_profile_api_v1_allocation_profiles_post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProfileCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/profiles/{profile_id}": {
      "get": {
        "tags": [
          "Allocation"
        ],
        "summary": "Get Profile",
        "operationId": "get_profile_api_v1_allocation_profiles__profile_id__get",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Allocation"
        ],
        "summary": "Patch Profile",
        "operationId": "patch_profile_api_v1_allocation_profiles__profile_id__patch",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProfilePatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Allocation"
        ],
        "summary": "Delete Profile",
        "operationId": "delete_profile_api_v1_allocation_profiles__profile_id__delete",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/profiles/{profile_id}/dimensions": {
      "post": {
        "tags": [
          "Allocation"
        ],
        "summary": "Add Dimension",
        "operationId": "add_dimension_api_v1_allocation_profiles__profile_id__dimensions_post",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DimensionCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/profiles/{profile_id}/dimensions/{dimension_id}": {
      "patch": {
        "tags": [
          "Allocation"
        ],
        "summary": "Patch Dimension",
        "operationId": "patch_dimension_api_v1_allocation_profiles__profile_id__dimensions__dimension_id__patch",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          },
          {
            "name": "dimension_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dimension Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DimensionPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Allocation"
        ],
        "summary": "Delete Dimension",
        "operationId": "delete_dimension_api_v1_allocation_profiles__profile_id__dimensions__dimension_id__delete",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          },
          {
            "name": "dimension_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dimension Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/profiles/{profile_id}/dimensions/{dimension_id}/rules": {
      "post": {
        "tags": [
          "Allocation"
        ],
        "summary": "Add Rule",
        "operationId": "add_rule_api_v1_allocation_profiles__profile_id__dimensions__dimension_id__rules_post",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          },
          {
            "name": "dimension_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dimension Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuleCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/profiles/{profile_id}/rules/{rule_id}": {
      "patch": {
        "tags": [
          "Allocation"
        ],
        "summary": "Patch Rule",
        "operationId": "patch_rule_api_v1_allocation_profiles__profile_id__rules__rule_id__patch",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          },
          {
            "name": "rule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Rule Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RulePatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Allocation"
        ],
        "summary": "Delete Rule",
        "operationId": "delete_rule_api_v1_allocation_profiles__profile_id__rules__rule_id__delete",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          },
          {
            "name": "rule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Rule Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/profiles/{profile_id}/dimensions/{dimension_id}/reorder": {
      "post": {
        "tags": [
          "Allocation"
        ],
        "summary": "Reorder Rules",
        "operationId": "reorder_rules_api_v1_allocation_profiles__profile_id__dimensions__dimension_id__reorder_post",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          },
          {
            "name": "dimension_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dimension Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/profiles/{profile_id}/use-lookup": {
      "post": {
        "tags": [
          "Allocation"
        ],
        "summary": "Use Lookup In Profile",
        "description": "Wire an enrichment dataset column into a dimension as a Match-lookup rule.",
        "operationId": "use_lookup_in_profile_api_v1_allocation_profiles__profile_id__use_lookup_post",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UseLookupBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/profiles/{profile_id}/preview": {
      "get": {
        "tags": [
          "Allocation"
        ],
        "summary": "Preview Profile",
        "description": "Sample resolved dimension values vs spend for one account (or first tenant account).\nUses the same Reports engine path (alloc: dim).",
        "operationId": "preview_profile_api_v1_allocation_profiles__profile_id__preview_get",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          },
          {
            "name": "dimension",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "Business_Unit",
              "title": "Dimension"
            }
          },
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Account Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/profiles/{profile_id}/publish-board": {
      "post": {
        "tags": [
          "Allocation"
        ],
        "summary": "Publish Profile Board",
        "description": "All-accounts Custom Dashboard + saved reports for profile dimensions.",
        "operationId": "publish_profile_board_api_v1_allocation_profiles__profile_id__publish_board_post",
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/allocation/dimensions": {
      "get": {
        "tags": [
          "Allocation"
        ],
        "summary": "List Alloc Dimensions",
        "description": "Synthetic alloc: dims for Cost Attribution / Reports catalogs.",
        "operationId": "list_alloc_dimensions_api_v1_allocation_dimensions_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tenant Id"
            }
          },
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/catalog": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get Reports Catalog",
        "operationId": "get_reports_catalog_api_v1_reports_catalog_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          },
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": "__all",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/tag-values": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get Reports Tag Values",
        "description": "Distinct values for a billing tag \u2014 powers Reports Customize filter picker.",
        "operationId": "get_reports_tag_values_api_v1_reports_tag_values_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          },
          {
            "name": "tag_key",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tag Key"
            }
          },
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": "__all",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/dim-values": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get Reports Dim Values",
        "description": "Distinct values for a billing dimension \u2014 Reports Customize filter picker.",
        "operationId": "get_reports_dim_values_api_v1_reports_dim_values_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          },
          {
            "name": "field",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Billing dimension key, e.g. service or meter",
              "title": "Field"
            },
            "description": "Billing dimension key, e.g. service or meter"
          },
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": "__all",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/inventory-prop-values": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get Reports Inventory Prop Values",
        "description": "Distinct live values for an inventory prop \u2014 custom board / Reports filters.",
        "operationId": "get_reports_inventory_prop_values_api_v1_reports_inventory_prop_values_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          },
          {
            "name": "field",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Whitelisted inventory prop, e.g. prop:plink_status",
              "title": "Field"
            },
            "description": "Whitelisted inventory prop, e.g. prop:plink_status"
          },
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": "__all",
              "title": "Account Id"
            }
          },
          {
            "name": "resource_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional resource_type scope (e.g. microsoft.network/privateendpoints)",
              "title": "Resource Type"
            },
            "description": "Optional resource_type scope (e.g. microsoft.network/privateendpoints)"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/run": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Post Reports Run",
        "operationId": "post_reports_run_api_v1_reports_run_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportRunBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/saved": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "List Saved Reports",
        "operationId": "list_saved_reports_api_v1_reports_saved_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Create Saved Report",
        "operationId": "create_saved_report_api_v1_reports_saved_post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavedReportCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/saved/{report_id}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Get Saved Report",
        "operationId": "get_saved_report_api_v1_reports_saved__report_id__get",
        "parameters": [
          {
            "name": "report_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Report Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Reports"
        ],
        "summary": "Patch Saved Report",
        "operationId": "patch_saved_report_api_v1_reports_saved__report_id__patch",
        "parameters": [
          {
            "name": "report_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Report Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavedReportPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Reports"
        ],
        "summary": "Delete Saved Report",
        "operationId": "delete_saved_report_api_v1_reports_saved__report_id__delete",
        "parameters": [
          {
            "name": "report_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Report Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/saved/{report_id}/run": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Run Saved Report",
        "operationId": "run_saved_report_api_v1_reports_saved__report_id__run_post",
        "parameters": [
          {
            "name": "report_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Report Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/email-schedules": {
      "get": {
        "tags": [
          "Report Email"
        ],
        "summary": "List Email Schedules",
        "operationId": "list_email_schedules_api_v1_reports_email_schedules_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Kind"
            }
          },
          {
            "name": "saved_report_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Saved Report Id"
            }
          },
          {
            "name": "dashboard_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Dashboard Id"
            }
          },
          {
            "name": "preset_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Preset Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Report Email"
        ],
        "summary": "Create Email Schedule",
        "operationId": "create_email_schedule_api_v1_reports_email_schedules_post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailScheduleIn"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/email-schedules/{schedule_id}": {
      "patch": {
        "tags": [
          "Report Email"
        ],
        "summary": "Patch Email Schedule",
        "operationId": "patch_email_schedule_api_v1_reports_email_schedules__schedule_id__patch",
        "parameters": [
          {
            "name": "schedule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Schedule Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailSchedulePatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Report Email"
        ],
        "summary": "Delete Email Schedule",
        "operationId": "delete_email_schedule_api_v1_reports_email_schedules__schedule_id__delete",
        "parameters": [
          {
            "name": "schedule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Schedule Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/reports/email-schedules/{schedule_id}/send-now": {
      "post": {
        "tags": [
          "Report Email"
        ],
        "summary": "Send Email Schedule Now",
        "operationId": "send_email_schedule_now_api_v1_reports_email_schedules__schedule_id__send_now_post",
        "parameters": [
          {
            "name": "schedule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Schedule Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dashboards/sources": {
      "get": {
        "tags": [
          "Dashboards"
        ],
        "summary": "List Sources",
        "description": "Return the widget-source catalog (for the add-widget picker).",
        "operationId": "list_sources_api_v1_dashboards_sources_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/dashboards/query-catalog": {
      "get": {
        "tags": [
          "Dashboards"
        ],
        "summary": "Query Catalog",
        "description": "Return the structured-query catalog (tables, their dimensions, measures, and\nfilter operators) so the widget editor can offer 'pick a metric' dropdowns.",
        "operationId": "query_catalog_api_v1_dashboards_query_catalog_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/dashboards/cost-catalog": {
      "get": {
        "tags": [
          "Dashboards"
        ],
        "summary": "Cost Catalog",
        "description": "Cost Analysis catalog: provider-aware group-by dimensions, granularity,\noperators, plus ACTUAL tag keys (billing + AWS CE + inventory) and\nenrichment dimensions. Pass account_id and/or tenant_id (All-accounts\nunion when tenant_id is set without a single account).",
        "operationId": "cost_catalog_api_v1_dashboards_cost_catalog_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dashboards/cost-query": {
      "post": {
        "tags": [
          "Dashboards"
        ],
        "summary": "Run Cost Widget Query",
        "description": "Execute an Azure-style cost analysis query against mv_billing_daily.\nReturns rows shaped { period?, group?, cost } depending on granularity and\ngroup-by. Actual cost only (amortized pending a components change).\n\nfrom_date / to_date may be supplied at the top level (convenience) or inside\nspec \u2014 top-level values are merged into spec so _build_cost_sql sees them.",
        "operationId": "run_cost_widget_query_api_v1_dashboards_cost_query_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CostQueryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dashboards/query": {
      "post": {
        "tags": [
          "Dashboards"
        ],
        "summary": "Run Widget Query",
        "description": "Execute a structured query for a custom-query widget. The spec is validated\nagainst the whitelist (table/dimension/measure/filter) and all user values\nare bound parameters \u2014 no raw SQL. Returns rows shaped as\n{ <dimension fields...>, measure } for the frontend to chart.",
        "operationId": "run_widget_query_api_v1_dashboards_query_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueryWidgetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dashboards/": {
      "get": {
        "tags": [
          "Dashboards"
        ],
        "summary": "List Dashboards",
        "description": "List boards for a tenant (preferred) or a single account (legacy).",
        "operationId": "list_dashboards_api_v1_dashboards__get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Account Id"
            }
          },
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tenant Id"
            }
          },
          {
            "name": "include_templates",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true,
              "title": "Include Templates"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DashboardOut"
                  },
                  "title": "Response List Dashboards Api V1 Dashboards  Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Dashboards"
        ],
        "summary": "Create Dashboard",
        "operationId": "create_dashboard_api_v1_dashboards__post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DashboardCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dashboards/{dashboard_id}": {
      "get": {
        "tags": [
          "Dashboards"
        ],
        "summary": "Get Dashboard",
        "operationId": "get_dashboard_api_v1_dashboards__dashboard_id__get",
        "parameters": [
          {
            "name": "dashboard_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dashboard Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Dashboards"
        ],
        "summary": "Update Dashboard",
        "operationId": "update_dashboard_api_v1_dashboards__dashboard_id__patch",
        "parameters": [
          {
            "name": "dashboard_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dashboard Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DashboardUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Dashboards"
        ],
        "summary": "Delete Dashboard",
        "operationId": "delete_dashboard_api_v1_dashboards__dashboard_id__delete",
        "parameters": [
          {
            "name": "dashboard_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dashboard Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dashboards/{dashboard_id}/clone": {
      "post": {
        "tags": [
          "Dashboards"
        ],
        "summary": "Clone Dashboard",
        "description": "Clone a dashboard (or template) into an editable copy for a tenant.",
        "operationId": "clone_dashboard_api_v1_dashboards__dashboard_id__clone_post",
        "parameters": [
          {
            "name": "dashboard_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dashboard Id"
            }
          },
          {
            "name": "account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Account Id"
            }
          },
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tenant Id"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Name"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/": {
      "get": {
        "tags": [
          "Budgets"
        ],
        "summary": "List Budgets",
        "operationId": "list_budgets_api_v1_budgets__get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Budgets"
        ],
        "summary": "Create Budget",
        "operationId": "create_budget_api_v1_budgets__post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BudgetIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/{budget_id}": {
      "patch": {
        "tags": [
          "Budgets"
        ],
        "summary": "Patch Budget",
        "operationId": "patch_budget_api_v1_budgets__budget_id__patch",
        "parameters": [
          {
            "name": "budget_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Budget Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BudgetPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Budgets"
        ],
        "summary": "Delete Budget",
        "operationId": "delete_budget_api_v1_budgets__budget_id__delete",
        "parameters": [
          {
            "name": "budget_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Budget Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/notifications": {
      "get": {
        "tags": [
          "Budgets"
        ],
        "summary": "List Notifications",
        "operationId": "list_notifications_api_v1_budgets_notifications_get",
        "parameters": [
          {
            "name": "unread_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Unread Only"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/notifications/read": {
      "post": {
        "tags": [
          "Budgets"
        ],
        "summary": "Mark Read",
        "description": "Mark specific notifications read, or all of the caller's if ids omitted.\n\nViewers are grant-scoped (same as list): only notifications for budgets on\ngranted accounts \u2014 never mass-mark the whole tenant inbox.",
        "operationId": "mark_read_api_v1_budgets_notifications_read_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Ids"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/digest/config": {
      "get": {
        "tags": [
          "Budgets"
        ],
        "summary": "Get Digest Config",
        "description": "Return digest schedule for the caller's tenant (tenant self-service).",
        "operationId": "get_digest_config_api_v1_budgets_digest_config_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Budgets"
        ],
        "summary": "Put Digest Config",
        "description": "Create or update digest schedule for the scoped tenant.",
        "operationId": "put_digest_config_api_v1_budgets_digest_config_put",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigestScheduleIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/webhooks/config": {
      "get": {
        "tags": [
          "Budgets"
        ],
        "summary": "Get Webhook Config",
        "operationId": "get_webhook_config_api_v1_budgets_webhooks_config_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Budgets"
        ],
        "summary": "Put Webhook Config",
        "operationId": "put_webhook_config_api_v1_budgets_webhooks_config_put",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookConfigIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/webhooks/test": {
      "post": {
        "tags": [
          "Budgets"
        ],
        "summary": "Test Webhook",
        "description": "Post a test (and optional live high-findings) message to the tenant webhook.",
        "operationId": "test_webhook_api_v1_budgets_webhooks_test_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/WebhookTestIn"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Body"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/webhooks/send-digest-now": {
      "post": {
        "tags": [
          "Budgets"
        ],
        "summary": "Send Webhook Digest Now",
        "description": "Send the Slack digest now \u2014 same rollup + cadence filter as the schedule.",
        "operationId": "send_webhook_digest_now_api_v1_budgets_webhooks_send_digest_now_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/WebhookDigestSendNowIn"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Body"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/servicenow/config": {
      "get": {
        "tags": [
          "Budgets"
        ],
        "summary": "Get Servicenow Config",
        "operationId": "get_servicenow_config_api_v1_budgets_servicenow_config_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Budgets"
        ],
        "summary": "Put Servicenow Config",
        "operationId": "put_servicenow_config_api_v1_budgets_servicenow_config_put",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceNowConfigIn"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/servicenow/test": {
      "post": {
        "tags": [
          "Budgets"
        ],
        "summary": "Test Servicenow",
        "description": "Ping ServiceNow (OAuth/basic + table GET); optionally create a test incident.",
        "operationId": "test_servicenow_api_v1_budgets_servicenow_test_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ServiceNowTestIn"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Body"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/budgets/digest/send-now": {
      "post": {
        "tags": [
          "Budgets"
        ],
        "summary": "Send Digest Now",
        "description": "Send the Action Center digest immediately (test / manual).",
        "operationId": "send_digest_now_api_v1_budgets_digest_send_now_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/DigestSendNowIn"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Body"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/approvals": {
      "get": {
        "tags": [
          "Approvals"
        ],
        "summary": "List Ledger",
        "operationId": "list_ledger_api_v1_approvals_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Approvals"
        ],
        "summary": "Create Ledger Item",
        "description": "Queue a CloudPulse action for approval \u2014 does not execute yet.",
        "operationId": "create_ledger_item_api_v1_approvals_post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LedgerCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/approvals/channels": {
      "get": {
        "tags": [
          "Approvals"
        ],
        "summary": "List Notify Channels",
        "description": "Enabled Alerts channels for Queue (ServiceNow / Slack / Email only).",
        "operationId": "list_notify_channels_api_v1_approvals_channels_get",
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Tenant Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/approvals/{item_id}/approve": {
      "post": {
        "tags": [
          "Approvals"
        ],
        "summary": "Approve Item",
        "operationId": "approve_item_api_v1_approvals__item_id__approve_post",
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/LedgerDecide"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Body"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/approvals/{item_id}/reject": {
      "post": {
        "tags": [
          "Approvals"
        ],
        "summary": "Reject Item",
        "operationId": "reject_item_api_v1_approvals__item_id__reject_post",
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/LedgerDecide"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Body"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/approvals/{item_id}/execute": {
      "post": {
        "tags": [
          "Approvals"
        ],
        "summary": "Execute Item",
        "description": "Run an approved CloudPulse action (SNOW / digest / Slack). No cloud mutate.",
        "operationId": "execute_item_api_v1_approvals__item_id__execute_post",
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/LedgerDecide"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Body"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/approvals/{item_id}/approve-execute": {
      "post": {
        "tags": [
          "Approvals"
        ],
        "summary": "Approve And Execute",
        "description": "Approve then execute in one step (editor convenience).",
        "operationId": "approve_and_execute_api_v1_approvals__item_id__approve_execute_post",
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Item Id"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/LedgerDecide"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Body"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/federation/config": {
      "get": {
        "tags": [
          "Federation"
        ],
        "summary": "Get Federation Config",
        "description": "Return the CloudPulse Managed Identity values needed by a client to create\na federated credential on their service principal in Entra ID.\n\nRequires an authenticated user (any role) \u2014 no operator scope needed because\nthis is public-ish setup information (not secrets).",
        "operationId": "get_federation_config_api_v1_federation_config_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FederationConfig"
                }
              }
            }
          }
        }
      }
    },
    "/federation/gcp-config": {
      "get": {
        "tags": [
          "Federation"
        ],
        "summary": "Get Gcp Federation Config",
        "description": "Return the Azure OIDC issuer / audience / subject that a GCP customer binds\nas a Workload Identity Federation provider, then grants\nroles/iam.workloadIdentityUser on the components SA to the pool principal.",
        "operationId": "get_gcp_federation_config_api_v1_federation_gcp_config_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GcpFederationConfig"
                }
              }
            }
          }
        }
      }
    },
    "/federation/aws-config": {
      "get": {
        "tags": [
          "Federation"
        ],
        "summary": "Get Aws Federation Config",
        "description": "Return the Entra OIDC issuer / audience / subject a customer binds on\naws_audit via AssumeRoleWithWebIdentity. ExternalId is per-account\n(generated at register) \u2014 not a platform constant.",
        "operationId": "get_aws_federation_config_api_v1_federation_aws_config_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AwsFederationConfig"
                }
              }
            }
          }
        }
      }
    },
    "/federation/oci-config": {
      "get": {
        "tags": [
          "Federation"
        ],
        "summary": "Get Oci Federation Config",
        "description": "Return the Entra issuer / audience / subject a customer binds on an OCI\nIdentity Propagation Trust so CloudPulse MI can exchange a JWT for a UPST\n(TokenExchangeSigner). Customer still creates the Identity Domain\nconfidential OAuth client + stores domain URL / client id+secret on the\nCloudPulse account (secret encrypted at rest).",
        "operationId": "get_oci_federation_config_api_v1_federation_oci_config_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OciFederationConfig"
                }
              }
            }
          }
        }
      }
    },
    "/platform/azure-updates": {
      "get": {
        "tags": [
          "Platform"
        ],
        "summary": "Get Azure Updates",
        "description": "Return parsed Azure Updates from the public RSS feed.\nResults are cached for 60 minutes.\n\nQuery params:\n    limit   \u2014 max items to return (default 100, max 500)",
        "operationId": "get_azure_updates_api_v1_platform_azure_updates_get",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/platform/gcp-updates": {
      "get": {
        "tags": [
          "Platform"
        ],
        "summary": "Get Gcp Updates",
        "description": "Return parsed Google Cloud Service Health public Atom feed.\nResults are cached for 60 minutes. No cloud credentials required.\n\nQuery params:\n    limit   \u2014 max items to return (default 100, max 500)",
        "operationId": "get_gcp_updates_api_v1_platform_gcp_updates_get",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/platform/gcp-release-notes": {
      "get": {
        "tags": [
          "Platform"
        ],
        "summary": "Get Gcp Release Notes",
        "description": "Google Cloud product release notes (What's New analog).\nDistinct from /gcp-updates (status.cloud.google.com incidents).",
        "operationId": "get_gcp_release_notes_api_v1_platform_gcp_release_notes_get",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/platform/aws-updates": {
      "get": {
        "tags": [
          "Platform"
        ],
        "summary": "Get Aws Updates",
        "description": "AWS What's New public RSS \u2014 product announcements (not AWS Health incidents).",
        "operationId": "get_aws_updates_api_v1_platform_aws_updates_get",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/platform/oci-updates": {
      "get": {
        "tags": [
          "Platform"
        ],
        "summary": "Get Oci Updates",
        "description": "OCI product release notes (all-services RSS) \u2014 Platform Health Updates.\nDistinct from tenancy Announcements and ocistatus.oraclecloud.com.",
        "operationId": "get_oci_updates_api_v1_platform_oci_updates_get",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/platform/oci-status": {
      "get": {
        "tags": [
          "Platform"
        ],
        "summary": "Get Oci Status",
        "description": "OCI public Statuspage incident RSS \u2014 Platform Health OCI Status.\nDistinct from tenancy Announcements (Service Health) and product Updates.",
        "operationId": "get_oci_status_api_v1_platform_oci_status_get",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/public/contact": {
      "post": {
        "tags": [
          "Public"
        ],
        "summary": "Public Contact",
        "description": "Marketing demo/contact form \u2192 ACS email to CONTACT_INBOX (hello@\u2026).\n\nOps still must forward/MX hello@ to a real inbox; this only *sends* via the\nconfigured EMAIL_PROVIDER (same as budget alerts). Honeypot `company` must\nstay empty.",
        "operationId": "public_contact_api_v1_public_contact_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/ai/model-leaderboard": {
      "get": {
        "tags": [
          "AI"
        ],
        "summary": "Get Model Leaderboard",
        "description": "Return Foundry model benchmark aggregates for the leaderboard UI.\nRequires account_id so viewer grants and tenant isolation apply.\nPrefers the public modelcache CDN; falls back to a baked snapshot.",
        "operationId": "get_model_leaderboard_api_v1_ai_model_leaderboard_get",
        "parameters": [
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "CloudPulse cloud account id",
              "title": "Account Id"
            },
            "description": "CloudPulse cloud account id"
          },
          {
            "name": "refresh",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Bypass in-process Foundry cache",
              "default": false,
              "title": "Refresh"
            },
            "description": "Bypass in-process Foundry cache"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/ai/model-retirements": {
      "get": {
        "tags": [
          "AI"
        ],
        "summary": "Get Model Retirements",
        "description": "Curated Azure OpenAI / Foundry model retirement catalog (static JSON).\nGlobal reference data \u2014 any active user may read; join to deployments in UI.",
        "operationId": "get_model_retirements_api_v1_ai_model_retirements_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AccountCreate": {
        "properties": {
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "provider": {
            "$ref": "#/components/schemas/CloudProvider"
          },
          "display_name": {
            "type": "string",
            "title": "Display Name"
          },
          "scope_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ScopeType"
              }
            ],
            "default": "subscription"
          },
          "account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id"
          },
          "management_group_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Management Group Id"
          },
          "subscription_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subscription Ids"
          },
          "azure_tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Tenant Id"
          },
          "azure_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Client Id"
          },
          "azure_client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Client Secret"
          },
          "use_federated_identity": {
            "type": "boolean",
            "title": "Use Federated Identity",
            "default": false
          },
          "azure_billing_account": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Billing Account"
          },
          "azure_billing_profile": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Billing Profile"
          },
          "sentinel_workspaces": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sentinel Workspaces"
          },
          "billing_storage": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Billing Storage"
          },
          "dr_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dr Config"
          },
          "backup_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backup Config"
          },
          "credentials_json": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Credentials Json"
          }
        },
        "type": "object",
        "required": [
          "tenant_id",
          "provider",
          "display_name"
        ],
        "title": "AccountCreate"
      },
      "AccountGrantsIn": {
        "properties": {
          "account_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Account Ids"
          }
        },
        "type": "object",
        "required": [
          "account_ids"
        ],
        "title": "AccountGrantsIn"
      },
      "AccountOut": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "provider": {
            "$ref": "#/components/schemas/CloudProvider"
          },
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "display_name": {
            "type": "string",
            "title": "Display Name"
          },
          "scope_type": {
            "$ref": "#/components/schemas/ScopeType"
          },
          "management_group_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Management Group Id"
          },
          "subscription_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subscription Ids"
          },
          "azure_tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Tenant Id"
          },
          "azure_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Client Id"
          },
          "use_federated_identity": {
            "type": "boolean",
            "title": "Use Federated Identity",
            "default": false
          },
          "azure_billing_account": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Billing Account"
          },
          "azure_billing_profile": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Billing Profile"
          },
          "sentinel_workspaces": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sentinel Workspaces"
          },
          "billing_storage": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Billing Storage"
          },
          "dr_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dr Config"
          },
          "rightsizing_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rightsizing Config"
          },
          "backup_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backup Config"
          },
          "macc_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Macc Config"
          },
          "collection_interval_hours": {
            "type": "integer",
            "title": "Collection Interval Hours",
            "default": 0
          },
          "collection_schedule_enabled": {
            "type": "boolean",
            "title": "Collection Schedule Enabled",
            "default": false
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active"
          },
          "last_collected_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Collected At"
          },
          "has_credentials": {
            "type": "boolean",
            "title": "Has Credentials",
            "default": false
          },
          "gcp_auth_mode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gcp Auth Mode"
          },
          "gcp_wif": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gcp Wif"
          },
          "gcp_sa_email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gcp Sa Email"
          },
          "aws_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Aws Config"
          },
          "oci_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Oci Config"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "provider",
          "account_id",
          "display_name",
          "scope_type",
          "management_group_id",
          "subscription_ids",
          "is_active"
        ],
        "title": "AccountOut"
      },
      "AccountUpdate": {
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "azure_tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Tenant Id"
          },
          "azure_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Client Id"
          },
          "azure_billing_account": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Billing Account"
          },
          "azure_billing_profile": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Billing Profile"
          },
          "collection_interval_hours": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Collection Interval Hours"
          },
          "collection_schedule_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Collection Schedule Enabled"
          },
          "azure_client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Azure Client Secret"
          },
          "use_federated_identity": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Federated Identity"
          },
          "scope_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ScopeType"
              },
              {
                "type": "null"
              }
            ]
          },
          "account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id"
          },
          "sentinel_workspaces": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sentinel Workspaces"
          },
          "billing_storage": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Billing Storage"
          },
          "dr_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dr Config"
          },
          "rightsizing_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rightsizing Config"
          },
          "backup_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backup Config"
          },
          "macc_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Macc Config"
          },
          "credentials_json": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Credentials Json"
          },
          "management_group_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Management Group Id"
          }
        },
        "type": "object",
        "title": "AccountUpdate"
      },
      "AssessmentIn": {
        "properties": {
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "resource_group_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "minItems": 1,
            "title": "Resource Group Ids"
          },
          "workloads": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Workloads"
          },
          "name": {
            "type": "string",
            "maxLength": 120,
            "title": "Name",
            "default": ""
          },
          "customer_name": {
            "type": "string",
            "title": "Customer Name",
            "default": ""
          },
          "workload_name": {
            "type": "string",
            "title": "Workload Name",
            "default": ""
          }
        },
        "type": "object",
        "required": [
          "account_id",
          "resource_group_ids"
        ],
        "title": "AssessmentIn"
      },
      "AssessmentOut": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "status": {
            "$ref": "#/components/schemas/RunStatus"
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "title": "Started At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "resource_count": {
            "type": "integer",
            "title": "Resource Count",
            "default": 0
          },
          "error_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Message"
          },
          "collectors": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "components"
          },
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "run_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Run Config"
          }
        },
        "type": "object",
        "required": [
          "id",
          "account_id",
          "status",
          "started_at"
        ],
        "title": "AssessmentOut"
      },
      "AwsFederationConfig": {
        "properties": {
          "issuer": {
            "type": "string",
            "title": "Issuer"
          },
          "oidc_url": {
            "type": "string",
            "title": "Oidc Url"
          },
          "audience": {
            "type": "string",
            "title": "Audience"
          },
          "subject": {
            "type": "string",
            "title": "Subject"
          },
          "client_id": {
            "type": "string",
            "title": "Client Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "principal_id": {
            "type": "string",
            "title": "Principal Id"
          },
          "notes": {
            "type": "string",
            "title": "Notes"
          }
        },
        "type": "object",
        "required": [
          "issuer",
          "oidc_url",
          "audience",
          "subject",
          "client_id",
          "tenant_id",
          "principal_id",
          "notes"
        ],
        "title": "AwsFederationConfig",
        "description": "Values to bind on the customer aws_audit role (OIDC + ExternalId)."
      },
      "Body_upload_dataset_api_v1_enrichment_datasets__dataset_id__upload_post": {
        "properties": {
          "file": {
            "type": "string",
            "format": "binary",
            "title": "File"
          },
          "columns": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Columns"
          }
        },
        "type": "object",
        "required": [
          "file"
        ],
        "title": "Body_upload_dataset_api_v1_enrichment_datasets__dataset_id__upload_post"
      },
      "BudgetIn": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "amount": {
            "type": "number",
            "exclusiveMinimum": 0.0,
            "title": "Amount"
          },
          "account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id"
          },
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "tag_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tag Key"
          },
          "tag_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tag Value"
          },
          "thresholds": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Thresholds",
            "default": [
              80,
              100
            ]
          },
          "forecast_pct": {
            "type": "integer",
            "maximum": 500.0,
            "minimum": 1.0,
            "title": "Forecast Pct",
            "default": 100
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "default": true
          },
          "notify_emails": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Notify Emails",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "name",
          "amount"
        ],
        "title": "BudgetIn"
      },
      "BudgetPatch": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount"
          },
          "account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id"
          },
          "tag_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tag Key"
          },
          "tag_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tag Value"
          },
          "thresholds": {
            "anyOf": [
              {
                "items": {
                  "type": "integer"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thresholds"
          },
          "forecast_pct": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 500.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Forecast Pct"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "notify_emails": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notify Emails"
          }
        },
        "type": "object",
        "title": "BudgetPatch"
      },
      "ChangePasswordIn": {
        "properties": {
          "current_password": {
            "type": "string",
            "maxLength": 128,
            "title": "Current Password"
          },
          "new_password": {
            "type": "string",
            "maxLength": 128,
            "minLength": 8,
            "title": "New Password"
          }
        },
        "type": "object",
        "required": [
          "current_password",
          "new_password"
        ],
        "title": "ChangePasswordIn"
      },
      "CloudProvider": {
        "type": "string",
        "enum": [
          "azure",
          "aws",
          "gcp",
          "oci"
        ],
        "title": "CloudProvider"
      },
      "ContactIn": {
        "properties": {
          "email": {
            "type": "string",
            "maxLength": 320,
            "title": "Email"
          },
          "message": {
            "type": "string",
            "maxLength": 4000,
            "title": "Message",
            "default": ""
          },
          "company": {
            "type": "string",
            "maxLength": 200,
            "title": "Company",
            "default": ""
          },
          "source": {
            "type": "string",
            "maxLength": 80,
            "title": "Source",
            "default": "website"
          }
        },
        "type": "object",
        "required": [
          "email"
        ],
        "title": "ContactIn"
      },
      "CostQueryRequest": {
        "properties": {
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "spec": {
            "type": "object",
            "title": "Spec"
          },
          "from_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "From Date"
          },
          "to_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "To Date"
          }
        },
        "type": "object",
        "required": [
          "account_id",
          "spec"
        ],
        "title": "CostQueryRequest"
      },
      "DashboardCreate": {
        "properties": {
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "widgets": {
            "items": {
              "$ref": "#/components/schemas/Widget"
            },
            "type": "array",
            "title": "Widgets"
          },
          "layout": {
            "type": "object",
            "title": "Layout"
          },
          "is_template": {
            "type": "boolean",
            "title": "Is Template",
            "default": false
          },
          "is_default": {
            "type": "boolean",
            "title": "Is Default",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "DashboardCreate"
      },
      "DashboardOut": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id"
          },
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "widgets": {
            "items": {
              "type": "object"
            },
            "type": "array",
            "title": "Widgets"
          },
          "layout": {
            "type": "object",
            "title": "Layout"
          },
          "is_template": {
            "type": "boolean",
            "title": "Is Template",
            "default": false
          },
          "is_default": {
            "type": "boolean",
            "title": "Is Default",
            "default": false
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "title": "DashboardOut"
      },
      "DashboardUpdate": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "widgets": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/Widget"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Widgets"
          },
          "layout": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Layout"
          },
          "is_default": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Default"
          },
          "account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id"
          }
        },
        "type": "object",
        "title": "DashboardUpdate"
      },
      "DatasetCreate": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "Name"
          },
          "account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id"
          },
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "join_target": {
            "type": "string",
            "title": "Join Target",
            "default": "subscription_id"
          },
          "source_type": {
            "type": "string",
            "title": "Source Type",
            "default": "upload"
          },
          "source_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Uri"
          },
          "columns": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Columns"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "DatasetCreate"
      },
      "DatasetPatch": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "join_target": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Join Target"
          },
          "source_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Type"
          },
          "source_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Uri"
          },
          "columns": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Columns"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          }
        },
        "type": "object",
        "title": "DatasetPatch"
      },
      "DigestFindingIn": {
        "properties": {
          "severity": {
            "type": "string",
            "title": "Severity",
            "default": "info"
          },
          "pillar": {
            "type": "string",
            "title": "Pillar",
            "default": ""
          },
          "pillarId": {
            "type": "string",
            "title": "Pillarid",
            "default": "cost"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "detail": {
            "type": "string",
            "title": "Detail",
            "default": ""
          },
          "count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Count"
          },
          "savingsPerMonth": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Savingspermonth"
          },
          "subId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subid"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider"
          },
          "accountId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accountid"
          },
          "account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id"
          },
          "account_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Name"
          },
          "samples": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Samples"
          }
        },
        "type": "object",
        "required": [
          "title"
        ],
        "title": "DigestFindingIn"
      },
      "DigestSavingsBreakdownIn": {
        "properties": {
          "label": {
            "type": "string",
            "title": "Label"
          },
          "annualValue": {
            "type": "number",
            "title": "Annualvalue",
            "default": 0
          },
          "monthlyValue": {
            "type": "number",
            "title": "Monthlyvalue",
            "default": 0
          }
        },
        "type": "object",
        "required": [
          "label"
        ],
        "title": "DigestSavingsBreakdownIn"
      },
      "DigestSavingsIn": {
        "properties": {
          "annual": {
            "type": "number",
            "title": "Annual",
            "default": 0
          },
          "monthly": {
            "type": "number",
            "title": "Monthly",
            "default": 0
          },
          "breakdown": {
            "items": {
              "$ref": "#/components/schemas/DigestSavingsBreakdownIn"
            },
            "type": "array",
            "title": "Breakdown",
            "default": []
          }
        },
        "type": "object",
        "title": "DigestSavingsIn"
      },
      "DigestScheduleIn": {
        "properties": {
          "schedule": {
            "type": "string",
            "title": "Schedule",
            "default": "off"
          },
          "send_day": {
            "type": "integer",
            "title": "Send Day",
            "default": 1
          },
          "send_hour": {
            "type": "integer",
            "title": "Send Hour",
            "default": 8
          },
          "timezone": {
            "type": "string",
            "title": "Timezone",
            "default": "UTC"
          },
          "recipients": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Recipients",
            "default": []
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "default": true
          },
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          }
        },
        "type": "object",
        "title": "DigestScheduleIn"
      },
      "DigestSendNowIn": {
        "properties": {
          "findings": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DigestFindingIn"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Findings"
          },
          "savings_summary": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DigestSavingsIn"
              },
              {
                "type": "null"
              }
            ]
          },
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          }
        },
        "type": "object",
        "title": "DigestSendNowIn",
        "description": "Optional SPA payload \u2014 when findings are set, email matches Action Center."
      },
      "DimensionCreate": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "default_value": {
            "type": "string",
            "title": "Default Value",
            "default": "(unmapped)"
          },
          "sort_order": {
            "type": "integer",
            "title": "Sort Order",
            "default": 0
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "DimensionCreate"
      },
      "DimensionPatch": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "default_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Value"
          },
          "sort_order": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sort Order"
          }
        },
        "type": "object",
        "title": "DimensionPatch"
      },
      "DiscoverBillingBody": {
        "properties": {
          "apply": {
            "type": "boolean",
            "title": "Apply",
            "default": false
          },
          "force": {
            "type": "boolean",
            "title": "Force",
            "default": false
          }
        },
        "type": "object",
        "title": "DiscoverBillingBody",
        "description": "POST /accounts/{id}/discover-billing \u2014 Azure exports or AWS CUR definitions."
      },
      "EmailScheduleIn": {
        "properties": {
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "kind": {
            "type": "string",
            "title": "Kind"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "saved_report_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Saved Report Id"
          },
          "dashboard_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dashboard Id"
          },
          "preset_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preset Id"
          },
          "run_spec": {
            "type": "object",
            "title": "Run Spec"
          },
          "schedule": {
            "type": "string",
            "title": "Schedule",
            "default": "weekly"
          },
          "send_day": {
            "type": "integer",
            "title": "Send Day",
            "default": 1
          },
          "send_hour": {
            "type": "integer",
            "title": "Send Hour",
            "default": 8
          },
          "timezone": {
            "type": "string",
            "title": "Timezone",
            "default": "UTC"
          },
          "recipients": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Recipients"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "default": true
          }
        },
        "type": "object",
        "required": [
          "tenant_id",
          "kind",
          "name"
        ],
        "title": "EmailScheduleIn"
      },
      "EmailSchedulePatch": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "run_spec": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Run Spec"
          },
          "schedule": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Schedule"
          },
          "send_day": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Send Day"
          },
          "send_hour": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Send Hour"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "recipients": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recipients"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "saved_report_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Saved Report Id"
          },
          "dashboard_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dashboard Id"
          },
          "preset_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preset Id"
          }
        },
        "type": "object",
        "title": "EmailSchedulePatch"
      },
      "EmailTestIn": {
        "properties": {
          "to": {
            "type": "string",
            "title": "To"
          }
        },
        "type": "object",
        "required": [
          "to"
        ],
        "title": "EmailTestIn"
      },
      "FeatureIn": {
        "properties": {
          "cloud": {
            "type": "string",
            "title": "Cloud",
            "default": "azure"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "status": {
            "type": "string",
            "title": "Status",
            "default": "pending"
          },
          "priority": {
            "type": "integer",
            "maximum": 3.0,
            "minimum": 1.0,
            "title": "Priority",
            "default": 2
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          }
        },
        "type": "object",
        "required": [
          "title"
        ],
        "title": "FeatureIn"
      },
      "FeaturePatch": {
        "properties": {
          "cloud": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cloud"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 3.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          }
        },
        "type": "object",
        "title": "FeaturePatch"
      },
      "FederationConfig": {
        "properties": {
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "principal_id": {
            "type": "string",
            "title": "Principal Id"
          },
          "client_id": {
            "type": "string",
            "title": "Client Id"
          },
          "issuer": {
            "type": "string",
            "title": "Issuer"
          },
          "audience": {
            "type": "string",
            "title": "Audience"
          },
          "subject": {
            "type": "string",
            "title": "Subject"
          }
        },
        "type": "object",
        "required": [
          "tenant_id",
          "principal_id",
          "client_id",
          "issuer",
          "audience",
          "subject"
        ],
        "title": "FederationConfig"
      },
      "FlexReportBody": {
        "properties": {
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "measures": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "minItems": 1,
            "title": "Measures"
          },
          "dimensions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Dimensions"
          },
          "filters": {
            "anyOf": [
              {
                "items": {
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Filters"
          },
          "from_month": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "From Month"
          },
          "to_month": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "To Month"
          },
          "granularity": {
            "type": "string",
            "title": "Granularity",
            "default": "none"
          },
          "limit": {
            "type": "integer",
            "title": "Limit",
            "default": 500
          }
        },
        "type": "object",
        "required": [
          "account_id",
          "measures"
        ],
        "title": "FlexReportBody"
      },
      "GcpFederationConfig": {
        "properties": {
          "issuer": {
            "type": "string",
            "title": "Issuer"
          },
          "audience": {
            "type": "string",
            "title": "Audience"
          },
          "subject": {
            "type": "string",
            "title": "Subject"
          },
          "client_id": {
            "type": "string",
            "title": "Client Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "principal_id": {
            "type": "string",
            "title": "Principal Id"
          },
          "allowed_audiences": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Allowed Audiences"
          },
          "notes": {
            "type": "string",
            "title": "Notes"
          }
        },
        "type": "object",
        "required": [
          "issuer",
          "audience",
          "subject",
          "client_id",
          "tenant_id",
          "principal_id",
          "allowed_audiences",
          "notes"
        ],
        "title": "GcpFederationConfig",
        "description": "Values to bind in a GCP Workload Identity Pool Azure OIDC provider."
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "InviteAcceptIn": {
        "properties": {
          "token": {
            "type": "string",
            "title": "Token"
          },
          "password": {
            "type": "string",
            "maxLength": 128,
            "minLength": 8,
            "title": "Password"
          }
        },
        "type": "object",
        "required": [
          "token",
          "password"
        ],
        "title": "InviteAcceptIn"
      },
      "LedgerCreate": {
        "properties": {
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "kind": {
            "type": "string",
            "title": "Kind",
            "default": "snow_incident"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "payload": {
            "type": "object",
            "title": "Payload"
          },
          "evidence": {
            "type": "object",
            "title": "Evidence"
          }
        },
        "type": "object",
        "required": [
          "tenant_id",
          "title"
        ],
        "title": "LedgerCreate"
      },
      "LedgerDecide": {
        "properties": {
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          }
        },
        "type": "object",
        "title": "LedgerDecide"
      },
      "LoginIn": {
        "properties": {
          "email": {
            "type": "string",
            "title": "Email"
          },
          "password": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Password"
          },
          "tenant": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant"
          }
        },
        "type": "object",
        "required": [
          "email",
          "password"
        ],
        "title": "LoginIn"
      },
      "MfaCodeIn": {
        "properties": {
          "code": {
            "type": "string",
            "title": "Code"
          },
          "password": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          }
        },
        "type": "object",
        "required": [
          "code"
        ],
        "title": "MfaCodeIn"
      },
      "MfaSetupIn": {
        "properties": {
          "password": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          }
        },
        "type": "object",
        "title": "MfaSetupIn"
      },
      "MfaVerifyIn": {
        "properties": {
          "mfa_token": {
            "type": "string",
            "title": "Mfa Token"
          },
          "code": {
            "type": "string",
            "title": "Code"
          }
        },
        "type": "object",
        "required": [
          "mfa_token",
          "code"
        ],
        "title": "MfaVerifyIn"
      },
      "OciFederationConfig": {
        "properties": {
          "issuer": {
            "type": "string",
            "title": "Issuer"
          },
          "audience": {
            "type": "string",
            "title": "Audience"
          },
          "subject": {
            "type": "string",
            "title": "Subject"
          },
          "client_id": {
            "type": "string",
            "title": "Client Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "principal_id": {
            "type": "string",
            "title": "Principal Id"
          },
          "public_key_endpoint": {
            "type": "string",
            "title": "Public Key Endpoint"
          },
          "impersonation_rule": {
            "type": "string",
            "title": "Impersonation Rule"
          },
          "notes": {
            "type": "string",
            "title": "Notes"
          }
        },
        "type": "object",
        "required": [
          "issuer",
          "audience",
          "subject",
          "client_id",
          "tenant_id",
          "principal_id",
          "public_key_endpoint",
          "impersonation_rule",
          "notes"
        ],
        "title": "OciFederationConfig",
        "description": "Values for an OCI Identity Propagation Trust (Entra \u2192 UPST)."
      },
      "PrefsIn": {
        "properties": {
          "notify_email": {
            "type": "boolean",
            "title": "Notify Email"
          }
        },
        "type": "object",
        "required": [
          "notify_email"
        ],
        "title": "PrefsIn"
      },
      "ProfileCreate": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "Name"
          },
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "ProfileCreate"
      },
      "ProfilePatch": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          }
        },
        "type": "object",
        "title": "ProfilePatch"
      },
      "PublishBoardBody": {
        "properties": {
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "board_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Board Name"
          },
          "replace_existing": {
            "type": "boolean",
            "title": "Replace Existing",
            "default": true
          }
        },
        "type": "object",
        "required": [
          "account_id"
        ],
        "title": "PublishBoardBody"
      },
      "PublishBody": {
        "properties": {
          "board_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Board Name"
          },
          "replace_existing": {
            "type": "boolean",
            "title": "Replace Existing",
            "default": true
          }
        },
        "type": "object",
        "title": "PublishBody"
      },
      "QueryWidgetRequest": {
        "properties": {
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "spec": {
            "type": "object",
            "title": "Spec"
          }
        },
        "type": "object",
        "required": [
          "account_id",
          "spec"
        ],
        "title": "QueryWidgetRequest"
      },
      "ReorderBody": {
        "properties": {
          "rule_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Rule Ids"
          }
        },
        "type": "object",
        "required": [
          "rule_ids"
        ],
        "title": "ReorderBody"
      },
      "ReportRunBody": {
        "properties": {
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id",
            "default": "__all"
          },
          "domain": {
            "type": "string",
            "title": "Domain",
            "default": "cost"
          },
          "measures": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Measures"
          },
          "dimensions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Dimensions"
          },
          "filters": {
            "items": {
              "type": "object"
            },
            "type": "array",
            "title": "Filters"
          },
          "from_month": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "From Month"
          },
          "to_month": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "To Month"
          },
          "granularity": {
            "type": "string",
            "title": "Granularity",
            "default": "none"
          },
          "limit": {
            "type": "integer",
            "title": "Limit",
            "default": 500
          },
          "preset_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preset Id"
          }
        },
        "type": "object",
        "required": [
          "tenant_id"
        ],
        "title": "ReportRunBody"
      },
      "ResourceOut": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "run_id": {
            "type": "string",
            "title": "Run Id"
          },
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider"
          },
          "resource_type": {
            "type": "string",
            "title": "Resource Type"
          },
          "resource_id": {
            "type": "string",
            "title": "Resource Id"
          },
          "resource_name": {
            "type": "string",
            "title": "Resource Name"
          },
          "region": {
            "type": "string",
            "title": "Region"
          },
          "resource_group": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resource Group"
          },
          "subscription": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subscription"
          },
          "tags": {
            "type": "object",
            "title": "Tags"
          },
          "properties": {
            "type": "object",
            "title": "Properties"
          },
          "normalized": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Normalized"
          },
          "collected_at": {
            "type": "string",
            "format": "date-time",
            "title": "Collected At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "run_id",
          "account_id",
          "tenant_id",
          "resource_type",
          "resource_id",
          "resource_name",
          "region",
          "resource_group",
          "subscription",
          "tags",
          "properties",
          "collected_at"
        ],
        "title": "ResourceOut"
      },
      "RuleCreate": {
        "properties": {
          "conditions": {
            "items": {},
            "type": "array",
            "title": "Conditions"
          },
          "set_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Set Value"
          },
          "set_from_lookup": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Set From Lookup"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority"
          }
        },
        "type": "object",
        "title": "RuleCreate"
      },
      "RulePatch": {
        "properties": {
          "conditions": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conditions"
          },
          "set_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Set Value"
          },
          "set_from_lookup": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Set From Lookup"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority"
          }
        },
        "type": "object",
        "title": "RulePatch"
      },
      "RunOut": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "status": {
            "$ref": "#/components/schemas/RunStatus"
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "title": "Started At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "resource_count": {
            "type": "integer",
            "title": "Resource Count",
            "default": 0
          },
          "inventory_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Inventory Count"
          },
          "billing_row_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Billing Row Count"
          },
          "error_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Message"
          },
          "collectors": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "components"
          },
          "run_config": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Run Config"
          }
        },
        "type": "object",
        "required": [
          "id",
          "account_id",
          "status",
          "started_at"
        ],
        "title": "RunOut"
      },
      "RunStatus": {
        "type": "string",
        "enum": [
          "pending",
          "running",
          "completed",
          "failed"
        ],
        "title": "RunStatus"
      },
      "SavedReportCreate": {
        "properties": {
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "domain": {
            "type": "string",
            "title": "Domain",
            "default": "cost"
          },
          "spec": {
            "type": "object",
            "title": "Spec"
          }
        },
        "type": "object",
        "required": [
          "tenant_id",
          "name"
        ],
        "title": "SavedReportCreate"
      },
      "SavedReportPatch": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "domain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Domain"
          },
          "spec": {
            "anyOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Spec"
          }
        },
        "type": "object",
        "title": "SavedReportPatch"
      },
      "ScheduleCreate": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Name"
          },
          "interval_hours": {
            "type": "integer",
            "title": "Interval Hours"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": true
          },
          "collectors": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "components"
          }
        },
        "type": "object",
        "required": [
          "name",
          "interval_hours"
        ],
        "title": "ScheduleCreate"
      },
      "ScheduleOut": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "interval_hours": {
            "type": "integer",
            "title": "Interval Hours"
          },
          "collectors": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "components"
          },
          "last_run_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Run At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "account_id",
          "name",
          "enabled",
          "interval_hours",
          "created_at",
          "updated_at"
        ],
        "title": "ScheduleOut"
      },
      "ScheduleUpdate": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 120,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "interval_hours": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Interval Hours"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "collectors": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "components"
          }
        },
        "type": "object",
        "title": "ScheduleUpdate"
      },
      "ScopeType": {
        "type": "string",
        "enum": [
          "subscription",
          "management_group",
          "multi_subscription",
          "auto_discover"
        ],
        "title": "ScopeType"
      },
      "SeedSampleBody": {
        "properties": {
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "max_keys": {
            "type": "integer",
            "maximum": 500.0,
            "minimum": 1.0,
            "title": "Max Keys",
            "default": 80
          },
          "include_unmapped_extras": {
            "type": "integer",
            "maximum": 20.0,
            "minimum": 0.0,
            "title": "Include Unmapped Extras",
            "default": 2
          }
        },
        "type": "object",
        "required": [
          "account_id"
        ],
        "title": "SeedSampleBody"
      },
      "ServiceNowConfigIn": {
        "properties": {
          "instance_url": {
            "type": "string",
            "title": "Instance Url",
            "default": ""
          },
          "auth_mode": {
            "type": "string",
            "title": "Auth Mode",
            "default": "oauth"
          },
          "client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Id"
          },
          "client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Secret"
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          },
          "password": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          },
          "table_name": {
            "type": "string",
            "title": "Table Name",
            "default": "incident"
          },
          "assignment_group": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Assignment Group"
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category"
          },
          "subcategory": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subcategory"
          },
          "caller_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Caller Id"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": false
          },
          "events": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Events",
            "default": [
              "ac_high",
              "budget_breach"
            ]
          },
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "clear": {
            "type": "boolean",
            "title": "Clear",
            "default": false
          }
        },
        "type": "object",
        "title": "ServiceNowConfigIn"
      },
      "ServiceNowTestIn": {
        "properties": {
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "create_incident": {
            "type": "boolean",
            "title": "Create Incident",
            "default": true
          },
          "findings": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Findings"
          }
        },
        "type": "object",
        "title": "ServiceNowTestIn"
      },
      "TenantCreateIn": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "slug": {
            "type": "string",
            "title": "Slug"
          }
        },
        "type": "object",
        "required": [
          "name",
          "slug"
        ],
        "title": "TenantCreateIn"
      },
      "TenantOut": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "plan": {
            "type": "string",
            "title": "Plan"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "plan",
          "created_at",
          "is_active"
        ],
        "title": "TenantOut"
      },
      "TenantPatchIn": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "oidc_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Oidc Enabled"
          },
          "oidc_issuer": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Oidc Issuer"
          },
          "oidc_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Oidc Client Id"
          },
          "sso_required": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sso Required"
          },
          "oidc_client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Oidc Client Secret"
          },
          "export_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Export Enabled"
          },
          "provider_data_access": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider Data Access"
          }
        },
        "type": "object",
        "title": "TenantPatchIn"
      },
      "TimingRowOut": {
        "properties": {
          "resource_type": {
            "type": "string",
            "title": "Resource Type",
            "default": "cloudpulse/collectortiming"
          },
          "resource_id": {
            "type": "string",
            "title": "Resource Id"
          },
          "resource_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resource Name"
          },
          "collected_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Collected At"
          },
          "properties": {
            "type": "object",
            "title": "Properties"
          }
        },
        "type": "object",
        "required": [
          "resource_id"
        ],
        "title": "TimingRowOut",
        "description": "Ops telemetry for operations \u2192 components Timing (not estate inventory)."
      },
      "UseLookupBody": {
        "properties": {
          "dataset_id": {
            "type": "string",
            "title": "Dataset Id"
          },
          "column": {
            "type": "string",
            "title": "Column"
          },
          "dimension_name": {
            "type": "string",
            "title": "Dimension Name",
            "default": "Business_Unit"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          }
        },
        "type": "object",
        "required": [
          "dataset_id",
          "column"
        ],
        "title": "UseLookupBody"
      },
      "UserCreateIn": {
        "properties": {
          "email": {
            "type": "string",
            "title": "Email"
          },
          "password": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 8
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          },
          "display_name": {
            "type": "string",
            "title": "Display Name",
            "default": ""
          },
          "role": {
            "type": "string",
            "title": "Role",
            "default": "viewer"
          },
          "scope": {
            "type": "string",
            "title": "Scope",
            "default": "tenant"
          },
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "invite": {
            "type": "boolean",
            "title": "Invite",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "email"
        ],
        "title": "UserCreateIn"
      },
      "UserPatchIn": {
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          },
          "scope": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scope"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "password": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 8
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          },
          "reset_mfa": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reset Mfa"
          }
        },
        "type": "object",
        "title": "UserPatchIn"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "WebhookConfigIn": {
        "properties": {
          "url": {
            "type": "string",
            "title": "Url",
            "default": ""
          },
          "secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secret"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": true
          },
          "events": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Events",
            "default": [
              "budget_breach",
              "ac_high"
            ]
          },
          "digest_schedule": {
            "type": "string",
            "title": "Digest Schedule",
            "default": "off"
          },
          "digest_send_hour": {
            "type": "integer",
            "title": "Digest Send Hour",
            "default": 8
          },
          "digest_send_day": {
            "type": "integer",
            "title": "Digest Send Day",
            "default": 1
          },
          "digest_timezone": {
            "type": "string",
            "title": "Digest Timezone",
            "default": "UTC"
          },
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "clear": {
            "type": "boolean",
            "title": "Clear",
            "default": false
          }
        },
        "type": "object",
        "title": "WebhookConfigIn"
      },
      "WebhookDigestSendNowIn": {
        "properties": {
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          }
        },
        "type": "object",
        "title": "WebhookDigestSendNowIn"
      },
      "WebhookTestIn": {
        "properties": {
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "findings": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Findings"
          }
        },
        "type": "object",
        "title": "WebhookTestIn"
      },
      "Widget": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "type": {
            "type": "string",
            "enum": [
              "stat",
              "timeseries",
              "bar",
              "table",
              "pie",
              "heatmap",
              "area",
              "column",
              "kpi"
            ],
            "title": "Type"
          },
          "title": {
            "type": "string",
            "title": "Title",
            "default": ""
          },
          "source": {
            "type": "string",
            "title": "Source"
          },
          "params": {
            "type": "object",
            "title": "Params"
          },
          "viz": {
            "type": "object",
            "title": "Viz"
          }
        },
        "type": "object",
        "required": [
          "id",
          "type",
          "source"
        ],
        "title": "Widget"
      }
    }
  },
  "servers": [
    {
      "url": "https://api.cloudpulse.host/v1",
      "description": "Production API"
    },
    {
      "url": "https://app.cloudpulse.host/api/v1",
      "description": "App same-origin (browser)"
    },
    {
      "url": "http://localhost:8000/api/v1",
      "description": "Local Docker"
    }
  ]
}
