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

GET https://api.ap1.datadoghq.com/api/v2/product-catalog/skushttps://api.ap2.datadoghq.com/api/v2/product-catalog/skushttps://api.datadoghq.eu/api/v2/product-catalog/skushttps://api.ddog-gov.com/api/v2/product-catalog/skushttps://api.us2.ddog-gov.com/api/v2/product-catalog/skushttps://api.uk1.datadoghq.com/api/v2/product-catalog/skushttps://api.datadoghq.com/api/v2/product-catalog/skushttps://api.us3.datadoghq.com/api/v2/product-catalog/skushttps://api.us5.datadoghq.com/api/v2/product-catalog/skus

개요

요청을 처리하는 Datadog 사이트에 대해, 일반적으로 이용 가능한 모든 Datadog SKU와 해당 SKU에 적용되는 가격 및 할당량 메타데이터를 가져옵니다. SKU는 일반적으로 계량 약정 또는 자동 청구를 통해 청구되는 경우 사용 가능하며, 다른 단계에 있는 SKU는 반환되지 않습니다.

요금, 할당량 및 요금 책정 계층은 as_of_date에 유효했던 시점의 상태로 반환되며 as_of_date는 요청 날짜가 기본값입니다. 가격은 공개 정가이므로 계정에 대한 할인, 약정 또는 협의된 요금은 반영되지 않습니다.

각 SKU는 data의 별도 리소스이며 SKU 코드로 식별되고, 해당 코드를 기준으로 오름차순 정렬됩니다. 전체 카탈로그가 단일 응답으로 반환되므로 이 엔드포인트는 페이지별로 표시되지 않습니다.

This endpoint requires any of the following permissions:
  • billing_read
  • usage_read

  • OAuth apps require the usage_read authorization scope to access this endpoint.

    인수

    쿼리 문자열

    이름

    유형

    설명

    version [required]

    enum

    The version of the product catalog response contract to return. v1 is the latest. This is independent of the /api/v2 path segment, which is the version of the Datadog API itself.
    Allowed enum values: v1

    as_of_date

    string

    The date the returned prices, allotments, and pricing tiers are effective as of, in YYYY-MM-DD format. Defaults to the date of the request, and must not be later than it. Set it to a date in a past billing period to reconcile that period against the prices that were in effect then, rather than today.

    응답

    OK

    Response containing the generally available SKUs and their pricing metadata.

    Expand All

    항목

    유형

    설명

    data [required]

    [object]

    The generally available SKUs, sorted by SKU code in ascending order.

    attributes [required]

    object

    The pricing and allotment metadata of a SKU.

    allotments [required]

    [object]

    The allotments the SKU provides to other SKUs. Every entry carries the code of this SKU as its parent_sku_code. Empty when the SKU provides no allotments.

    child_sku_code [required]

    string

    The code of the SKU that receives the allotment.

    hourly_quantity [required]

    double

    The quantity allotted per hour. Fractional for some allotments, and equal to monthly_quantity for others, depending on how the child SKU meters usage.

    monthly_quantity [required]

    int64

    The quantity allotted per month.

    parent_sku_code [required]

    string

    The code of the SKU that provides the allotment. Always the code of the SKU the allotment is returned under.

    billing_dimension [required]

    string

    The identifier of the billing dimension the SKU is billed on, as used by the usage metering endpoints. Several SKUs can share one billing dimension, so this value does not identify a SKU.

    billing_units [required]

    string

    The billable usage unit the SKU is priced per. null for SKUs that are not priced per unit of usage, such as those whose pricing_type is percent.

    currency [required]

    string

    The ISO-4217 code of the currency the prices are expressed in.

    default_on_demand_option [required]

    enum

    The billing frequency applied to on-demand usage of the SKU by default. Allowed enum values: hourly,monthly

    number_of_units_included_in_price [required]

    int64

    The number of billable usage units that one unit of price covers. Divide measured usage by this value before multiplying by the price. For example, a SKU priced at 18.00 with number_of_units_included_in_price of 1 costs 18.00 per host, while a SKU priced at 12.00 with number_of_units_included_in_price of 10000 costs 12.00 per 10,000 requests. It is a scaling factor on the price, not a free allotment; included quantities are in allotments. The same factor applies to the price of a tier in on_demand_tiered whose pricing_unit_type is unit. It does not apply to a tier whose pricing_unit_type is block: that tier's price is charged for the whole block bounded by min_usage_quantity and max_usage_quantity, however much of the block is used. 0 for SKUs that are not priced per unit of usage, such as those whose pricing_type is percent.

    on_demand_list_price [required]

    string

    The public list price of on-demand usage of the SKU, as a decimal string. The number of decimal places is not normalized, so values such as 0, 0.9, and 30000.00 all occur. null when the SKU is priced with tiers, in which case the prices are in on_demand_tiered.

    on_demand_tiered [required]

    object

    The tiered pricing applied to on-demand usage of the SKU. null when the SKU is priced with a single list price instead.

    tiers [required]

    [object]

    The pricing tiers, ordered by ascending usage quantity.

    max_usage_quantity [required]

    int64

    The exclusive upper bound of the usage range the tier prices. null on the final tier, which is unbounded.

    min_usage_quantity [required]

    int64

    The inclusive lower bound of the usage range the tier prices.

    price [required]

    string

    The price applied to usage in the tier, as a decimal string. The number of decimal places is not normalized, so free tiers appear as either 0 or 0.00.

    pricing_unit_type [required]

    enum

    Whether the tier's price applies per unit of usage or to a block of usage. Allowed enum values: block,unit

    pricing_type [required]

    enum

    How the SKU is priced. usage prices each billable usage unit, and percent prices a percentage; percent-priced SKUs have no billing_units. Allowed enum values: usage,percent

    sku_name [required]

    string

    The human-readable name of the SKU.

    id [required]

    string

    The code that identifies the SKU.

    type [required]

    enum

    The SKU resource type. Allowed enum values: Sku

    {
      "data": [
        {
          "attributes": {
            "allotments": [
              {
                "child_sku_code": "CUSTOM-EVENTS",
                "hourly_quantity": 0.684932,
                "monthly_quantity": 500,
                "parent_sku_code": "HOSTS-PRO"
              }
            ],
            "billing_dimension": "infra_host",
            "billing_units": "hosts",
            "currency": "USD",
            "default_on_demand_option": "monthly",
            "number_of_units_included_in_price": 1,
            "on_demand_list_price": "18.00",
            "on_demand_tiered": {
              "tiers": [
                {
                  "max_usage_quantity": 100000,
                  "min_usage_quantity": 1,
                  "price": "120.00",
                  "pricing_unit_type": "unit"
                }
              ]
            },
            "pricing_type": "usage",
            "sku_name": "Infra Host (Pro)"
          },
          "id": "HOSTS-PRO",
          "type": "Sku"
        }
      ]
    }

    Bad Request - version is missing or invalid, or as_of_date is malformed or in the future

    API error response.

    Expand All

    항목

    유형

    설명

    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 - the caller has neither the billing_read nor the usage_read permission

    API error response.

    Expand All

    항목

    유형

    설명

    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 - the requested catalog version is not supported

    API error response.

    Expand All

    항목

    유형

    설명

    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

    항목

    유형

    설명

    errors [required]

    [string]

    A list of errors.

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

    코드 예시

                      # Required query arguments
    export version="v1"
    # Use a Personal Access Token or Service Access Token
    export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

    # Curl command
    curl -X GET "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/product-catalog/skus?version=${version}" \ -H "Accept: application/json" \ -H "Authorization: Bearer ${DD_BEARER_TOKEN}"
    """
    List SKUs returns "OK" response
    """
    
    from os import environ
    from datadog_api_client import ApiClient, Configuration
    from datadog_api_client.v2.api.product_catalog_api import ProductCatalogApi
    from datadog_api_client.v2.model.product_catalog_sk_us_api_version import ProductCatalogSKUsAPIVersion
    
    configuration = Configuration()
    configuration.access_token = environ["DD_BEARER_TOKEN"]
    configuration.unstable_operations["list_product_catalog_sk_us"] = True
    with ApiClient(configuration) as api_client:
        api_instance = ProductCatalogApi(api_client)
        response = api_instance.list_product_catalog_sk_us(
            version=ProductCatalogSKUsAPIVersion.V1,
        )
    
        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_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"
    # List SKUs returns "OK" response
    
    require "datadog_api_client"
    DatadogAPIClient.configure do |config|
      config.access_token = ENV["DD_BEARER_TOKEN"]
      config.unstable_operations["v2.list_product_catalog_sk_us".to_sym] = true
    end
    api_instance = DatadogAPIClient::V2::ProductCatalogAPI.new
    p api_instance.list_product_catalog_sk_us(ProductCatalogSKUsAPIVersion::V1)
    

    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_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"
    // List SKUs 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() {
    	ctx := datadog.NewDefaultContext(context.Background())
    	ctx = context.WithValue(ctx, datadog.ContextAccessToken, os.Getenv("DD_BEARER_TOKEN"))
    	configuration := datadog.NewConfiguration()
    	configuration.SetUnstableOperationEnabled("v2.ListProductCatalogSKUs", true)
    	apiClient := datadog.NewAPIClient(configuration)
    	api := datadogV2.NewProductCatalogApi(apiClient)
    	resp, r, err := api.ListProductCatalogSKUs(ctx, datadogV2.PRODUCTCATALOGSKUSAPIVERSION_V1, *datadogV2.NewListProductCatalogSKUsOptionalParameters())
    
    	if err != nil {
    		fmt.Fprintf(os.Stderr, "Error when calling `ProductCatalogApi.ListProductCatalogSKUs`: %v\n", err)
    		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    	}
    
    	responseContent, _ := json.MarshalIndent(resp, "", "  ")
    	fmt.Fprintf(os.Stdout, "Response from `ProductCatalogApi.ListProductCatalogSKUs`:\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_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"
    // List SKUs returns "OK" response
    
    import com.datadog.api.client.ApiClient;
    import com.datadog.api.client.ApiException;
    import com.datadog.api.client.v2.api.ProductCatalogApi;
    import com.datadog.api.client.v2.model.ProductCatalogSKUsAPIVersion;
    import com.datadog.api.client.v2.model.ProductCatalogSKUsResponse;
    
    public class Example {
      public static void main(String[] args) {
        ApiClient defaultClient = ApiClient.getDefaultApiClient();
        defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
        defaultClient.setUnstableOperationEnabled("v2.listProductCatalogSKUs", true);
        ProductCatalogApi apiInstance = new ProductCatalogApi(defaultClient);
    
        try {
          ProductCatalogSKUsResponse result =
              apiInstance.listProductCatalogSKUs(ProductCatalogSKUsAPIVersion.V1);
          System.out.println(result);
        } catch (ApiException e) {
          System.err.println("Exception when calling ProductCatalogApi#listProductCatalogSKUs");
          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_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"
    // List SKUs returns "OK" response
    use datadog_api_client::datadog;
    use datadog_api_client::datadogV2::api_product_catalog::ListProductCatalogSKUsOptionalParams;
    use datadog_api_client::datadogV2::api_product_catalog::ProductCatalogAPI;
    use datadog_api_client::datadogV2::model::ProductCatalogSKUsAPIVersion;
    
    #[tokio::main]
    async fn main() {
        let mut configuration = datadog::Configuration::new();
        configuration.set_unstable_operation_enabled("v2.list_product_catalog_sk_us", true);
        let api = ProductCatalogAPI::with_config(configuration);
        let resp = api
            .list_product_catalog_sk_us(
                ProductCatalogSKUsAPIVersion::V1,
                ListProductCatalogSKUsOptionalParams::default(),
            )
            .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
    /**
     * List SKUs returns "OK" response
     */
    
    import { client, v2 } from "@datadog/datadog-api-client";
    
    const configuration = client.createConfiguration({
      authMethods: {
        AuthZ: {
          accessToken: process.env.DD_BEARER_TOKEN as string,
        },
      },
    });
    configuration.unstableOperations["v2.listProductCatalogSKUs"] = true;
    const apiInstance = new v2.ProductCatalogApi(configuration);
    
    const params: v2.ProductCatalogApiListProductCatalogSKUsRequest = {
      version: "v1",
    };
    
    apiInstance
      .listProductCatalogSKUs(params)
      .then((data: v2.ProductCatalogSKUsResponse) => {
        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_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"