---
title: Update cloud provider ingestion configuration
slug: reference/update-cloud-provider-ingestion-configuration
docTags: 
createdAt: 2025-07-15T20:02:27.589Z
---

{
  "id": "h3BwH36YwZUB3MJ8Od49O",
  "type": "api-oas-v2",
  "data": {
    "method": "PUT",
    "url": "https://app.amberflo.io/focus/configuration",
    "servers": [
      {
        "url": "https://app.amberflo.io/focus/configuration"
      }
    ],
    "name": "Update cloud provider ingestion configuration",
    "description": "<p>Update an existing FOCUS ingestion configuration to modify cloud provider connection settings, authentication credentials, or data source parameters. Validates updated configuration against provider requirements and tests connectivity when configuration is enabled for production use.</p>",
    "contentType": "application/json",
    "request": {
      "pathParameters": [],
      "headerParameters": [],
      "queryParameters": [],
      "bodyDataParameters": [
        {
          "kind": "optional",
          "name": "body",
          "type": "object",
          "description": "",
          "customType": "focus.ingestion.FocusIngestionConfiguration.in",
          "schema": [
            {
              "name": "enabled",
              "kind": "optional",
              "type": "boolean",
              "description": "Controls whether this FOCUS ingestion configuration actively processes cost reports from the cloud provider",
              "example": ""
            },
            {
              "name": "provider",
              "kind": "required",
              "type": "string",
              "description": "Cloud provider for FOCUS report ingestion. Supported values: AWS (Amazon Web Services), AZURE (Microsoft Azure), GOOGLE_CLOUD (Google Cloud Platform). Each provider has specific configuration requirements and supported FOCUS versions.",
              "modelRef": "#/components/schemas/focus.common.FocusProvider.in",
              "customType": "focus.common.FocusProvider.in",
              "schema": []
            },
            {
              "name": "type",
              "kind": "required",
              "type": "string",
              "description": "Type of cost data for ingestion and analysis. FOCUS represents FinOps Cost and Usage Specification compliant data, COST_OPTIMIZATION represents cloud provider recommendations data for cost optimization insights.",
              "modelRef": "#/components/schemas/focus.common.CostDataType.in",
              "customType": "focus.common.CostDataType.in",
              "schema": []
            },
            {
              "name": "bucketName",
              "kind": "optional",
              "type": "string",
              "description": "Cloud provider storage location for FOCUS cost data.\n\n**Provider-specific formats:**\n- **AWS:** S3 bucket name\n- **Azure FOCUS data:** `{storage account name}/{container name}`\n- **Google Cloud:** `{project id}/{dataset id}`\n\n**Important note:** For Azure COST_OPTIMIZATION data, this field is not used.\n",
              "example": ""
            },
            {
              "name": "prefix",
              "kind": "optional",
              "type": "string",
              "description": "Directory path and report name for locating cost export files.\n\n**Provider-specific formats:**\n- **AWS:** `{s3 prefix}/{report name}` as configured in AWS BCM data export\n- **Azure FOCUS data:** `{directory path}/{report name}` as configured in Azure Cost Management export\n\n**Important note:** Not used for Azure COST_OPTIMIZATION data or Google Cloud.\n",
              "example": ""
            },
            {
              "name": "billingAccountId",
              "kind": "optional",
              "type": "string",
              "description": "Google Cloud billing account identifier required for FOCUS data access.\n\n**Important note:** Only used for Google Cloud. Not required for AWS and Azure.\n",
              "example": ""
            },
            {
              "name": "label",
              "kind": "optional",
              "type": "string",
              "description": "Display name for this configuration to help identify it in user interfaces",
              "example": ""
            },
            {
              "name": "description",
              "kind": "optional",
              "type": "string",
              "description": "Optional description explaining the purpose and context of this FOCUS ingestion configuration",
              "example": ""
            },
            {
              "name": "deduplicationId",
              "kind": "optional",
              "type": "string",
              "description": "Unique identifier to prevent duplicate processing of FOCUS files.\n\n**Auto-generated behavior:**\n- **AWS/Azure:** Defaults to the report name from the prefix field\n- **Google Cloud:** Uses the billingAccountId automatically\n",
              "example": ""
            },
            {
              "name": "version",
              "kind": "optional",
              "type": "string",
              "description": "FOCUS specification version when type is FOCUS (defaults to 1.0).\n\n**Supported versions by provider:**\n- **AWS:** 1.0\n- **Azure:** 1.0, 1.2\n- **Google Cloud:** 1.0\n- **Oracle:** 1.0-preview\n",
              "example": ""
            },
            {
              "name": "azureAppSecret",
              "kind": "optional",
              "type": "object",
              "description": "",
              "modelRef": "#/components/schemas/focus.ingestion.AzureAppSecret.in",
              "customType": "focus.ingestion.AzureAppSecret.in",
              "schema": [
                {
                  "name": "clientId",
                  "kind": "required",
                  "type": "string",
                  "description": "Application (client) ID of the Azure Application",
                  "example": ""
                },
                {
                  "name": "tenantId",
                  "kind": "required",
                  "type": "string",
                  "description": "Directory (tenant) ID of the Azure Application",
                  "example": ""
                },
                {
                  "name": "secret",
                  "kind": "required",
                  "type": "string",
                  "description": "Value of the client secret of the Azure Application",
                  "example": ""
                }
              ]
            },
            {
              "name": "oracleConfig",
              "kind": "optional",
              "type": "object",
              "description": "",
              "modelRef": "#/components/schemas/focus.config.OracleConfig.in",
              "customType": "focus.config.OracleConfig.in",
              "schema": []
            }
          ],
          "modelRef": "#/components/schemas/focus.ingestion.FocusIngestionConfiguration.in",
          "isExpanded": true
        }
      ],
      "formDataParameters": [],
      "oAuthParameters": [
        {
          "id": "apiKey",
          "name": "X-API-KEY",
          "kind": "optional",
          "type": "apiKey",
          "in": "header"
        }
      ]
    },
    "responses": [
      {
        "statusCode": "200",
        "description": "Successful request",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "customType": "focus.ingestion.FocusIngestionConfiguration.out",
            "schema": [
              {
                "name": "accountId",
                "kind": "optional",
                "type": "string",
                "description": "Account identifier that owns this FOCUS ingestion configuration for multi-tenant access control",
                "example": ""
              },
              {
                "name": "id",
                "kind": "optional",
                "type": "string",
                "description": "Unique UUID identifier for this specific FOCUS ingestion configuration instance",
                "example": ""
              },
              {
                "name": "enabled",
                "kind": "optional",
                "type": "boolean",
                "description": "Controls whether this FOCUS ingestion configuration actively processes cost reports from the cloud provider",
                "example": ""
              },
              {
                "name": "provider",
                "kind": "required",
                "type": "string",
                "description": "Cloud provider for FOCUS report ingestion. Supported values: AWS (Amazon Web Services), AZURE (Microsoft Azure), GOOGLE_CLOUD (Google Cloud Platform). Each provider has specific configuration requirements and supported FOCUS versions.",
                "modelRef": "#/components/schemas/focus.common.FocusProvider.out",
                "customType": "focus.common.FocusProvider.out",
                "schema": []
              },
              {
                "name": "type",
                "kind": "required",
                "type": "string",
                "description": "Type of cost data for ingestion and analysis. FOCUS represents FinOps Cost and Usage Specification compliant data, COST_OPTIMIZATION represents cloud provider recommendations data for cost optimization insights.",
                "modelRef": "#/components/schemas/focus.common.CostDataType.out",
                "customType": "focus.common.CostDataType.out",
                "schema": []
              },
              {
                "name": "bucketName",
                "kind": "optional",
                "type": "string",
                "description": "Cloud provider storage location for FOCUS cost data.\n\n**Provider-specific formats:**\n- **AWS:** S3 bucket name\n- **Azure FOCUS data:** `{storage account name}/{container name}`\n- **Google Cloud:** `{project id}/{dataset id}`\n\n**Important note:** For Azure COST_OPTIMIZATION data, this field is not used.\n",
                "example": ""
              },
              {
                "name": "bucketRegion",
                "kind": "optional",
                "type": "string",
                "description": "AWS S3 bucket region automatically detected and stored for optimization purposes",
                "example": ""
              },
              {
                "name": "prefix",
                "kind": "optional",
                "type": "string",
                "description": "Directory path and report name for locating cost export files.\n\n**Provider-specific formats:**\n- **AWS:** `{s3 prefix}/{report name}` as configured in AWS BCM data export\n- **Azure FOCUS data:** `{directory path}/{report name}` as configured in Azure Cost Management export\n\n**Important note:** Not used for Azure COST_OPTIMIZATION data or Google Cloud.\n",
                "example": ""
              },
              {
                "name": "billingAccountId",
                "kind": "optional",
                "type": "string",
                "description": "Google Cloud billing account identifier required for FOCUS data access.\n\n**Important note:** Only used for Google Cloud. Not required for AWS and Azure.\n",
                "example": ""
              },
              {
                "name": "label",
                "kind": "optional",
                "type": "string",
                "description": "Display name for this configuration to help identify it in user interfaces",
                "example": ""
              },
              {
                "name": "description",
                "kind": "optional",
                "type": "string",
                "description": "Optional description explaining the purpose and context of this FOCUS ingestion configuration",
                "example": ""
              },
              {
                "name": "deduplicationId",
                "kind": "optional",
                "type": "string",
                "description": "Unique identifier to prevent duplicate processing of FOCUS files.\n\n**Auto-generated behavior:**\n- **AWS/Azure:** Defaults to the report name from the prefix field\n- **Google Cloud:** Uses the billingAccountId automatically\n",
                "example": ""
              },
              {
                "name": "version",
                "kind": "optional",
                "type": "string",
                "description": "FOCUS specification version when type is FOCUS (defaults to 1.0).\n\n**Supported versions by provider:**\n- **AWS:** 1.0\n- **Azure:** 1.0, 1.2\n- **Google Cloud:** 1.0\n- **Oracle:** 1.0-preview\n",
                "example": ""
              },
              {
                "name": "azureAppSecret",
                "kind": "optional",
                "type": "object",
                "description": "",
                "modelRef": "#/components/schemas/focus.ingestion.AzureAppSecret.out",
                "customType": "focus.ingestion.AzureAppSecret.out",
                "schema": [
                  {
                    "name": "clientId",
                    "kind": "required",
                    "type": "string",
                    "description": "Application (client) ID of the Azure Application",
                    "example": ""
                  },
                  {
                    "name": "tenantId",
                    "kind": "required",
                    "type": "string",
                    "description": "Directory (tenant) ID of the Azure Application",
                    "example": ""
                  },
                  {
                    "name": "secret",
                    "kind": "required",
                    "type": "string",
                    "description": "Value of the client secret of the Azure Application",
                    "example": ""
                  }
                ]
              },
              {
                "name": "oracleConfig",
                "kind": "optional",
                "type": "object",
                "description": "",
                "modelRef": "#/components/schemas/focus.config.OracleConfig.out",
                "customType": "focus.config.OracleConfig.out",
                "schema": []
              },
              {
                "name": "createTimeInSeconds",
                "kind": "optional",
                "type": "integer<int64>",
                "description": "Unix timestamp when this FOCUS ingestion configuration was initially created",
                "example": 0
              },
              {
                "name": "updateTimeInSeconds",
                "kind": "optional",
                "type": "integer<int64>",
                "description": "Unix timestamp when this FOCUS ingestion configuration was last modified",
                "example": 0
              },
              {
                "name": "lastScanTimeInSeconds",
                "kind": "optional",
                "type": "integer<int64>",
                "description": "Unix timestamp when the last successful FOCUS cost data scan was completed",
                "example": 0
              }
            ],
            "modelRef": "#/components/schemas/focus.ingestion.FocusIngestionConfiguration.out",
            "isExpanded": true
          }
        ]
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "ZYSUxzXw3E37WPE45ejaK",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request PUT \\\n     --url https://app.amberflo.io/focus/configuration \\\n     --header 'accept: application/json' \\\n     --header 'content-type: application/json' \\\n     --data '{\n     \"provider\": \"\",\n     \"type\": \"\",\n     \"azureAppSecret\": {\n     \"clientId\": \"\",\n     \"tenantId\": \"\",\n     \"secret\": \"\"\n     }\n     }'"
        },
        {
          "id": "yKbj6eW9ALTmizTCYZ82g",
          "language": "javascript",
          "label": "javascript",
          "code": "var myHeaders = new Headers();\nmyHeaders.append(\"accept\", \"application/json\");\nmyHeaders.append(\"content-type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"provider\": \"\",\n   \"type\": \"\",\n   \"azureAppSecret\": {\n      \"clientId\": \"\",\n      \"tenantId\": \"\",\n      \"secret\": \"\"\n   }\n});\n\nvar requestOptions = {\n   method: 'PUT',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://app.amberflo.io/focus/configuration\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));"
        },
        {
          "id": "pk2ir9e2EH-a655VIgIPP",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://app.amberflo.io/focus/configuration\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"accept\"] = \"application/json\"\nrequest[\"content-type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"provider\": \"\",\n   \"type\": \"\",\n   \"azureAppSecret\": {\n      \"clientId\": \"\",\n      \"tenantId\": \"\",\n      \"secret\": \"\"\n   }\n})\n\nresponse = https.request(request)\nputs response.read_body\n"
        },
        {
          "id": "dK5cltHvX-xaXa3zldajq",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"https://app.amberflo.io/focus/configuration\"\n\npayload = json.dumps({\n   \"provider\": \"\",\n   \"type\": \"\",\n   \"azureAppSecret\": {\n      \"clientId\": \"\",\n      \"tenantId\": \"\",\n      \"secret\": \"\"\n   }\n})\nheaders = {\n   'accept': 'application/json',\n   'content-type': 'application/json'\n}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        }
      ],
      "selectedLanguageId": "ZYSUxzXw3E37WPE45ejaK"
    },
    "results": {
      "languages": [
        {
          "id": "response-0-200",
          "language": "200",
          "code": "// Successful request\n{\n  \"accountId\": \"\",\n  \"id\": \"\",\n  \"enabled\": false,\n  \"provider\": \"\",\n  \"type\": \"\",\n  \"bucketName\": \"\",\n  \"bucketRegion\": \"\",\n  \"prefix\": \"\",\n  \"billingAccountId\": \"\",\n  \"label\": \"\",\n  \"description\": \"\",\n  \"deduplicationId\": \"\",\n  \"version\": \"\",\n  \"azureAppSecret\": {\n    \"clientId\": \"\",\n    \"tenantId\": \"\",\n    \"secret\": \"\"\n  },\n  \"oracleConfig\": {},\n  \"createTimeInSeconds\": \"\",\n  \"updateTimeInSeconds\": \"\",\n  \"lastScanTimeInSeconds\": \"\"\n}"
        }
      ],
      "selectedLanguageId": "response-0-200"
    }
  },
  "children": [
    {
      "text": "",
      "id": "Ur-pM22zusYaOOG7EpZJ_"
    }
  ]
}