{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/amazon-billing-and-cost-management/json-schema/amazon-billing-and-cost-management-get-dimension-values-request-schema.json",
  "title": "GetDimensionValuesRequest",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/amazon-billing-and-cost-management-cost-and-usage-api-openapi.yml#/components/schemas/GetDimensionValuesRequest",
  "type": "object",
  "properties": {
    "SearchString": {
      "type": "string",
      "description": "The value that you want to search the filter values for."
    },
    "TimePeriod": {
      "$ref": "#/$defs/DateInterval"
    },
    "Dimension": {
      "type": "string",
      "enum": [
        "AZ",
        "INSTANCE_TYPE",
        "LINKED_ACCOUNT",
        "PAYER_ACCOUNT",
        "LINKED_ACCOUNT_NAME",
        "OPERATION",
        "PURCHASE_TYPE",
        "REGION",
        "SERVICE",
        "SERVICE_CODE",
        "USAGE_TYPE",
        "USAGE_TYPE_GROUP",
        "RECORD_TYPE",
        "OPERATING_SYSTEM",
        "TENANCY",
        "SCOPE",
        "PLATFORM",
        "SUBSCRIPTION_ID",
        "LEGAL_ENTITY_NAME",
        "DEPLOYMENT_OPTION",
        "DATABASE_ENGINE",
        "CACHE_ENGINE",
        "INSTANCE_TYPE_FAMILY",
        "BILLING_ENTITY",
        "RESERVATION_ID",
        "RESOURCE_ID",
        "RIGHTSIZING_TYPE",
        "SAVINGS_PLANS_TYPE",
        "SAVINGS_PLAN_ARN",
        "PAYMENT_OPTION",
        "AGREEMENT_END_DATE_TIME_AFTER",
        "AGREEMENT_END_DATE_TIME_BEFORE",
        "INVOICING_ENTITY",
        "ANOMALY_TOTAL_IMPACT_ABSOLUTE",
        "ANOMALY_TOTAL_IMPACT_PERCENTAGE",
        "PRODUCT_ATTRIBUTE"
      ],
      "description": "The name of the dimension. Each Dimension is available for a different Context. For more information, see Context. LINK_ACCOUNT_NAME and SERVICE_CODE can only be used in CostCategoryRule. PRODUCT_ATTRIBUTE returns the product attribute keys that are available for your costs of supported services, or the values of the key that you specify in DimensionKey. PRODUCT_ATTRIBUTE is supported only in the COST_AND_USAGE context."
    },
    "DimensionKey": {
      "type": "string",
      "description": "The product attribute key to return values for, such as model. If you omit DimensionKey or set it to an empty string, the response lists the product attribute keys that are available for your costs of supported services instead. For the supported services, see ProductAttributeValues. If you specify a key, the response lists the values of that key. If some of your costs have no value for the key, the response includes an empty-string value. Keys are case-sensitive, and a key that doesn't exist returns no values other than an empty string. You can specify DimensionKey only when Dimension is PROD"
    },
    "Context": {
      "type": "string",
      "enum": [
        "COST_AND_USAGE",
        "RESERVATIONS",
        "SAVINGS_PLANS"
      ],
      "description": "The context for the call to GetDimensionValues. This can be RESERVATIONS or COST_AND_USAGE. The default value is COST_AND_USAGE. If the context is set to RESERVATIONS, the resulting dimension values can be used in the GetReservationUtilization operation. If the context is set to COST_AND_USAGE, the resulting dimension values can be used in the GetCostAndUsage operation. If you set the context to COST_AND_USAGE, you can use the following dimensions for searching: AZ - The Availability Zone. An example is us-east-1a. BILLING_ENTITY - The Amazon Web Services seller that your account is with. Poss"
    },
    "Filter": {
      "$ref": "#/$defs/Expression"
    },
    "SortBy": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/SortDefinition"
      },
      "description": "The value that you want to sort the data by. The key represents cost and usage metrics. The following values are supported: BlendedCost UnblendedCost AmortizedCost NetAmortizedCost NetUnblendedCost UsageQuantity NormalizedUsageAmount The supported values for the SortOrder key are ASCENDING or DESCENDING. When you specify a SortBy paramater, the context must be COST_AND_USAGE. Further, when using SortBy, NextPageToken and SearchString aren't supported."
    },
    "BillingViewArn": {
      "type": "string",
      "description": "The Amazon Resource Name (ARN) that uniquely identifies a specific billing view. The ARN is used to specify which particular billing view you want to interact with or retrieve information from when making API calls related to Amazon Web Services Billing and Cost Management features. The BillingViewArn can be retrieved by calling the ListBillingViews API."
    },
    "MaxResults": {
      "type": "integer",
      "description": "This field is only used when SortBy is provided in the request. The maximum number of objects that are returned for this request. If MaxResults isn't specified with SortBy, the request returns 1000 results as the default value for this parameter. For GetDimensionValues, MaxResults has an upper limit of 1000."
    },
    "NextPageToken": {
      "type": "string",
      "description": "The token to retrieve the next set of results. Amazon Web Services provides the token when the response from a previous call has more results than the maximum page size."
    }
  },
  "required": [
    "TimePeriod",
    "Dimension"
  ],
  "$defs": {
    "CostCategoryValues": {
      "type": "object",
      "properties": {
        "Key": {
          "type": "string"
        },
        "Values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The specific value of the cost category."
        },
        "MatchOptions": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "EQUALS",
              "ABSENT",
              "STARTS_WITH",
              "ENDS_WITH",
              "CONTAINS",
              "CASE_SENSITIVE",
              "CASE_INSENSITIVE",
              "GREATER_THAN_OR_EQUAL"
            ]
          },
          "description": "The match options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category. The default values for MatchOptions is EQUALS and CASE_SENSITIVE."
        }
      }
    },
    "DateInterval": {
      "type": "object",
      "properties": {
        "Start": {
          "type": "string",
          "description": "The beginning of the time period. The start date is inclusive. For example, if start is 2017-01-01, Amazon Web Services retrieves cost and usage data starting at 2017-01-01 up to the end date. The start date must be equal to or no later than the current date to avoid a validation error."
        },
        "End": {
          "type": "string",
          "description": "The end of the time period. The end date is exclusive. For example, if end is 2017-05-01, Amazon Web Services retrieves cost and usage data from the start date up to, but not including, 2017-05-01."
        }
      },
      "required": [
        "Start",
        "End"
      ]
    },
    "DimensionValues": {
      "type": "object",
      "properties": {
        "Key": {
          "type": "string",
          "enum": [
            "AZ",
            "INSTANCE_TYPE",
            "LINKED_ACCOUNT",
            "PAYER_ACCOUNT",
            "LINKED_ACCOUNT_NAME",
            "OPERATION",
            "PURCHASE_TYPE",
            "REGION",
            "SERVICE",
            "SERVICE_CODE",
            "USAGE_TYPE",
            "USAGE_TYPE_GROUP",
            "RECORD_TYPE",
            "OPERATING_SYSTEM",
            "TENANCY",
            "SCOPE",
            "PLATFORM",
            "SUBSCRIPTION_ID",
            "LEGAL_ENTITY_NAME",
            "DEPLOYMENT_OPTION",
            "DATABASE_ENGINE",
            "CACHE_ENGINE",
            "INSTANCE_TYPE_FAMILY",
            "BILLING_ENTITY",
            "RESERVATION_ID",
            "RESOURCE_ID",
            "RIGHTSIZING_TYPE",
            "SAVINGS_PLANS_TYPE",
            "SAVINGS_PLAN_ARN",
            "PAYMENT_OPTION",
            "AGREEMENT_END_DATE_TIME_AFTER",
            "AGREEMENT_END_DATE_TIME_BEFORE",
            "INVOICING_ENTITY",
            "ANOMALY_TOTAL_IMPACT_ABSOLUTE",
            "ANOMALY_TOTAL_IMPACT_PERCENTAGE",
            "PRODUCT_ATTRIBUTE"
          ],
          "description": "The names of the metadata types that you can use to filter and group your results. For example, AZ returns a list of Availability Zones. Not all dimensions are supported in each API. Refer to the documentation for each specific API to see what is supported. LINKED_ACCOUNT_NAME and SERVICE_CODE can only be used in CostCategoryRule. ANOMALY_TOTAL_IMPACT_ABSOLUTE and ANOMALY_TOTAL_IMPACT_PERCENTAGE can only be used in AnomalySubscriptions. Use PRODUCT_ATTRIBUTE only as the Dimension in GetDimensionValues. To filter or group by product attributes, use the ProductAttributes field of Expression or t"
        },
        "Values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The metadata values that you can use to filter and group your results. You can use GetDimensionValues to find specific values."
        },
        "MatchOptions": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "EQUALS",
              "ABSENT",
              "STARTS_WITH",
              "ENDS_WITH",
              "CONTAINS",
              "CASE_SENSITIVE",
              "CASE_INSENSITIVE",
              "GREATER_THAN_OR_EQUAL"
            ]
          },
          "description": "The match options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category and Anomaly Subscriptions. Refer to the documentation for each specific API to see what is supported. The default values for MatchOptions are EQUALS and CASE_SENSITIVE."
        }
      }
    },
    "Expression": {
      "type": "object",
      "properties": {
        "Or": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Expression"
          },
          "description": "Return results that match either Dimension object."
        },
        "And": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Expression"
          },
          "description": "Return results that match both Dimension objects."
        },
        "Not": {
          "$ref": "#/$defs/Expression"
        },
        "Dimensions": {
          "$ref": "#/$defs/DimensionValues"
        },
        "Tags": {
          "$ref": "#/$defs/TagValues"
        },
        "CostCategories": {
          "$ref": "#/$defs/CostCategoryValues"
        },
        "ProductAttributes": {
          "$ref": "#/$defs/ProductAttributeValues"
        }
      }
    },
    "ProductAttributeValues": {
      "type": "object",
      "properties": {
        "Key": {
          "type": "string",
          "description": "The name of the product attribute, such as model. The keys that are available depend on the service. For the keys of each supported service, see ProductAttributeValues . Keys are case-sensitive. A key that doesn't exist doesn't return an error: EQUALS matches no costs, and ABSENT matches all costs of supported services."
        },
        "Values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The specific values of the product attribute, such as Claude Sonnet 5 for the model key. Values are matched exactly, including case. To list the values of a key, use GetDimensionValues with Dimension set to PRODUCT_ATTRIBUTE and DimensionKey set to the key. To match costs that have no value for the key, set MatchOptions to ABSENT and omit Values. Otherwise, Values is required."
        },
        "MatchOptions": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "EQUALS",
              "ABSENT",
              "STARTS_WITH",
              "ENDS_WITH",
              "CONTAINS",
              "CASE_SENSITIVE",
              "CASE_INSENSITIVE",
              "GREATER_THAN_OR_EQUAL"
            ]
          },
          "description": "The match options that you can use to filter your results. Valid values: EQUALS - Matches the values that you specify. ABSENT - Matches costs that have no value for the key. Omit Values. CASE_SENSITIVE - Use only with EQUALS. Values are always matched case-sensitively. Default values are EQUALS and CASE_SENSITIVE."
        }
      },
      "required": [
        "Key"
      ]
    },
    "SortDefinition": {
      "type": "object",
      "properties": {
        "Key": {
          "type": "string",
          "description": "The key that's used to sort the data."
        },
        "SortOrder": {
          "type": "string",
          "enum": [
            "ASCENDING",
            "DESCENDING"
          ],
          "description": "The order that's used to sort the data."
        }
      },
      "required": [
        "Key"
      ]
    },
    "TagValues": {
      "type": "object",
      "properties": {
        "Key": {
          "type": "string",
          "description": "The key for the tag."
        },
        "Values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The specific value of the tag."
        },
        "MatchOptions": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "EQUALS",
              "ABSENT",
              "STARTS_WITH",
              "ENDS_WITH",
              "CONTAINS",
              "CASE_SENSITIVE",
              "CASE_INSENSITIVE",
              "GREATER_THAN_OR_EQUAL"
            ]
          },
          "description": "The match options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category. The default values for MatchOptions are EQUALS and CASE_SENSITIVE."
        }
      }
    }
  }
}