Update a usage quota

Note: This endpoint is in Preview and is subject to change. If you have any feedback, contact Datadog support.

PATCH https://api.ap1.datadoghq.com/api/v2/usage/quotas/{quota_namespace}/{id}https://api.ap2.datadoghq.com/api/v2/usage/quotas/{quota_namespace}/{id}https://api.datadoghq.eu/api/v2/usage/quotas/{quota_namespace}/{id}https://api.ddog-gov.com/api/v2/usage/quotas/{quota_namespace}/{id}https://api.us2.ddog-gov.com/api/v2/usage/quotas/{quota_namespace}/{id}https://api.uk1.datadoghq.com/api/v2/usage/quotas/{quota_namespace}/{id}https://api.datadoghq.com/api/v2/usage/quotas/{quota_namespace}/{id}https://api.us3.datadoghq.com/api/v2/usage/quotas/{quota_namespace}/{id}https://api.us5.datadoghq.com/api/v2/usage/quotas/{quota_namespace}/{id}

Overview

Updates the supplied fields on a usage quota and leaves omitted fields unchanged. The quota must belong to the caller’s organization or one of its descendants, and its opaque identifier must belong to the requested quota namespace. Requires the user_access_manage, billing_edit, and org_management permissions. This endpoint requires all of the following permissions:

  • user_access_manage
  • billing_edit
  • org_management

  • OAuth apps require the user_access_manage, billing_edit, org_management authorization scope to access this endpoint.

    Arguments

    Path Parameters

    Name

    Type

    Description

    quota_namespace [required]

    string

    The product-specific namespace whose usage quotas are being managed.

    id [required]

    string

    The opaque quota identifier returned by a previous list or create request. Clients must pass this value verbatim.

    Request

    Body Data (required)

    The usage quota fields to update. Omitting an attribute leaves its current value unchanged.

    Expand All

    Field

    Type

    Description

    data [required]

    object

    A usage quota resource to update.

    attributes [required]

    object

    Attributes to update on a usage quota. Omitting a property leaves its current value unchanged.

    enforced

    boolean

    Whether to actively block usage above the limit. Omit this field to leave the current enforcement setting unchanged.

    usage_limit

    int64

    The new quota limit in the usage units defined by the quota namespace. For an organization-wide quota (empty scope), the limit must be greater than the usage already recorded in the current period. Omit this field to leave the current limit unchanged.

    id [required]

    string

    The opaque usage quota identifier, which must match the identifier in the request path.

    type [required]

    enum

    The JSON:API resource type for a usage quota. Allowed enum values: quotas

    {
      "data": {
        "attributes": {
          "enforced": false,
          "usage_limit": 120000
        },
        "id": "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f",
        "type": "quotas"
      }
    }

    Response

    OK

    Response containing a usage quota.

    Expand All

    Field

    Type

    Description

    data [required]

    object

    A usage quota resource.

    attributes [required]

    object

    Attributes of a usage quota.

    enforced [required]

    boolean

    Whether usage above the limit is actively blocked instead of only tracked or alerted on.

    org_public_id [required]

    string

    The public ID of the organization that owns the quota.

    scope

    object

    A namespace-specific key and value identifying what the quota applies to within an organization. The object contains exactly one entry. A value of "*" identifies the default quota applied to entities without a specific quota. This field is omitted for an organization-wide quota.

    <any-key>

    string

    usage_limit [required]

    double

    The quota limit in the usage units defined by the quota namespace. May be fractional for quotas configured before public writes required whole units.

    id [required]

    string

    An opaque usage quota identifier. Clients must pass this value back verbatim in update and delete requests and must not infer any structure from it.

    type [required]

    enum

    The JSON:API resource type for a usage quota. Allowed enum values: quotas

    {
      "data": {
        "attributes": {
          "enforced": true,
          "org_public_id": "abcdef12345",
          "scope": {
            "<any-key>": "jane@example.com"
          },
          "usage_limit": 100000
        },
        "id": "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f",
        "type": "quotas"
      }
    }

    Bad Request. Returned if the request is malformed, or if the `id` in the request body does not match the `id` in the request path.

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "Bad Request"
        }
      ]
    }

    Forbidden

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "Bad Request"
        }
      ]
    }

    Not Found

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "Bad Request"
        }
      ]
    }

    Too many requests

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Code Example

                      ## default
    # 
    
    # Path parameters
    export quota_namespace="ai_credits"
    export id="MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f"
    # Curl command
    curl -X PATCH "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.uk1.datadoghq.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/usage/quotas/${quota_namespace}/${id}" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "DD-API-KEY: ${DD_API_KEY}" \ -H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \ -d @- << EOF { "data": { "attributes": { "enforced": false, "usage_limit": 120000 }, "id": "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f", "type": "quotas" } } EOF
    """
    Update a usage quota returns "OK" response
    """
    
    from datadog_api_client import ApiClient, Configuration
    from datadog_api_client.v2.api.usage_metering_api import UsageMeteringApi
    from datadog_api_client.v2.model.usage_quota_type import UsageQuotaType
    from datadog_api_client.v2.model.usage_quota_update_attributes import UsageQuotaUpdateAttributes
    from datadog_api_client.v2.model.usage_quota_update_data import UsageQuotaUpdateData
    from datadog_api_client.v2.model.usage_quota_update_request import UsageQuotaUpdateRequest
    
    body = UsageQuotaUpdateRequest(
        data=UsageQuotaUpdateData(
            attributes=UsageQuotaUpdateAttributes(
                enforced=False,
                usage_limit=120000,
            ),
            id="MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f",
            type=UsageQuotaType.QUOTAS,
        ),
    )
    
    configuration = Configuration()
    configuration.unstable_operations["update_quota"] = True
    with ApiClient(configuration) as api_client:
        api_instance = UsageMeteringApi(api_client)
        response = api_instance.update_quota(
            quota_namespace="ai_credits", id="MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f", body=body
        )
    
        print(response)
    

    Instructions

    First install the library and its dependencies and then save the example to example.py and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python3 "example.py"
    # Update a usage quota returns "OK" response
    
    require "datadog_api_client"
    DatadogAPIClient.configure do |config|
      config.unstable_operations["v2.update_quota".to_sym] = true
    end
    api_instance = DatadogAPIClient::V2::UsageMeteringAPI.new
    
    body = DatadogAPIClient::V2::UsageQuotaUpdateRequest.new({
      data: DatadogAPIClient::V2::UsageQuotaUpdateData.new({
        attributes: DatadogAPIClient::V2::UsageQuotaUpdateAttributes.new({
          enforced: false,
          usage_limit: 120000,
        }),
        id: "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f",
        type: DatadogAPIClient::V2::UsageQuotaType::QUOTAS,
      }),
    })
    p api_instance.update_quota("ai_credits", "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f", body)
    

    Instructions

    First install the library and its dependencies and then save the example to example.rb and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"
    // Update a usage quota returns "OK" response
    
    package main
    
    import (
    	"context"
    	"encoding/json"
    	"fmt"
    	"os"
    
    	"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
    	"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
    )
    
    func main() {
    	body := datadogV2.UsageQuotaUpdateRequest{
    		Data: datadogV2.UsageQuotaUpdateData{
    			Attributes: datadogV2.UsageQuotaUpdateAttributes{
    				Enforced:   *datadog.NewNullableBool(datadog.PtrBool(false)),
    				UsageLimit: *datadog.NewNullableInt64(datadog.PtrInt64(120000)),
    			},
    			Id:   "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f",
    			Type: datadogV2.USAGEQUOTATYPE_QUOTAS,
    		},
    	}
    	ctx := datadog.NewDefaultContext(context.Background())
    	configuration := datadog.NewConfiguration()
    	configuration.SetUnstableOperationEnabled("v2.UpdateQuota", true)
    	apiClient := datadog.NewAPIClient(configuration)
    	api := datadogV2.NewUsageMeteringApi(apiClient)
    	resp, r, err := api.UpdateQuota(ctx, "ai_credits", "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f", body)
    
    	if err != nil {
    		fmt.Fprintf(os.Stderr, "Error when calling `UsageMeteringApi.UpdateQuota`: %v\n", err)
    		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    	}
    
    	responseContent, _ := json.MarshalIndent(resp, "", "  ")
    	fmt.Fprintf(os.Stdout, "Response from `UsageMeteringApi.UpdateQuota`:\n%s\n", responseContent)
    }
    

    Instructions

    First install the library and its dependencies and then save the example to main.go and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" go run "main.go"
    // Update a usage quota returns "OK" response
    
    import com.datadog.api.client.ApiClient;
    import com.datadog.api.client.ApiException;
    import com.datadog.api.client.v2.api.UsageMeteringApi;
    import com.datadog.api.client.v2.model.UsageQuotaResponse;
    import com.datadog.api.client.v2.model.UsageQuotaType;
    import com.datadog.api.client.v2.model.UsageQuotaUpdateAttributes;
    import com.datadog.api.client.v2.model.UsageQuotaUpdateData;
    import com.datadog.api.client.v2.model.UsageQuotaUpdateRequest;
    
    public class Example {
      public static void main(String[] args) {
        ApiClient defaultClient = ApiClient.getDefaultApiClient();
        defaultClient.setUnstableOperationEnabled("v2.updateQuota", true);
        UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient);
    
        UsageQuotaUpdateRequest body =
            new UsageQuotaUpdateRequest()
                .data(
                    new UsageQuotaUpdateData()
                        .attributes(
                            new UsageQuotaUpdateAttributes().enforced(false).usageLimit(120000L))
                        .id("MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f")
                        .type(UsageQuotaType.QUOTAS));
    
        try {
          UsageQuotaResponse result =
              apiInstance.updateQuota(
                  "ai_credits", "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f", body);
          System.out.println(result);
        } catch (ApiException e) {
          System.err.println("Exception when calling UsageMeteringApi#updateQuota");
          System.err.println("Status code: " + e.getCode());
          System.err.println("Reason: " + e.getResponseBody());
          System.err.println("Response headers: " + e.getResponseHeaders());
          e.printStackTrace();
        }
      }
    }
    

    Instructions

    First install the library and its dependencies and then save the example to Example.java and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" java "Example.java"
    // Update a usage quota returns "OK" response
    use datadog_api_client::datadog;
    use datadog_api_client::datadogV2::api_usage_metering::UsageMeteringAPI;
    use datadog_api_client::datadogV2::model::UsageQuotaType;
    use datadog_api_client::datadogV2::model::UsageQuotaUpdateAttributes;
    use datadog_api_client::datadogV2::model::UsageQuotaUpdateData;
    use datadog_api_client::datadogV2::model::UsageQuotaUpdateRequest;
    
    #[tokio::main]
    async fn main() {
        let body = UsageQuotaUpdateRequest::new(UsageQuotaUpdateData::new(
            UsageQuotaUpdateAttributes::new()
                .enforced(Some(false))
                .usage_limit(Some(120000)),
            "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f".to_string(),
            UsageQuotaType::QUOTAS,
        ));
        let mut configuration = datadog::Configuration::new();
        configuration.set_unstable_operation_enabled("v2.UpdateQuota", true);
        let api = UsageMeteringAPI::with_config(configuration);
        let resp = api
            .update_quota(
                "ai_credits".to_string(),
                "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f".to_string(),
                body,
            )
            .await;
        if let Ok(value) = resp {
            println!("{:#?}", value);
        } else {
            println!("{:#?}", resp.unwrap_err());
        }
    }
    

    Instructions

    First install the library and its dependencies and then save the example to src/main.rs and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
    /**
     * Update a usage quota returns "OK" response
     */
    
    import { client, v2 } from "@datadog/datadog-api-client";
    
    const configuration = client.createConfiguration();
    configuration.unstableOperations["v2.updateQuota"] = true;
    const apiInstance = new v2.UsageMeteringApi(configuration);
    
    const params: v2.UsageMeteringApiUpdateQuotaRequest = {
      body: {
        data: {
          attributes: {
            enforced: false,
            usageLimit: 120000,
          },
          id: "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f",
          type: "quotas",
        },
      },
      quotaNamespace: "ai_credits",
      id: "MjAfYWlfY3JlZGl0c1911c2VyX2hhbmRsZTpfX0FMTF9f",
    };
    
    apiInstance
      .updateQuota(params)
      .then((data: v2.UsageQuotaResponse) => {
        console.log(
          "API called successfully. Returned data: " + JSON.stringify(data)
        );
      })
      .catch((error: any) => console.error(error));
    

    Instructions

    First install the library and its dependencies and then save the example to example.ts and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" tsc "example.ts"