{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2025-08-18",
    "auth":["aws.auth#sigv4"],
    "endpointPrefix":"bcm-dashboards",
    "jsonVersion":"1.0",
    "protocol":"json",
    "protocols":["json"],
    "serviceFullName":"AWS Billing and Cost Management Dashboards",
    "serviceId":"BCM Dashboards",
    "signatureVersion":"v4",
    "signingName":"bcm-dashboards",
    "targetPrefix":"AWSBCMDashboardsService",
    "uid":"bcm-dashboards-2025-08-18"
  },
  "operations":{
    "CreateDashboard":{
      "name":"CreateDashboard",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateDashboardRequest"},
      "output":{"shape":"CreateDashboardResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"}
      ]
    },
    "DeleteDashboard":{
      "name":"DeleteDashboard",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteDashboardRequest"},
      "output":{"shape":"DeleteDashboardResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"}
      ]
    },
    "GetDashboard":{
      "name":"GetDashboard",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDashboardRequest"},
      "output":{"shape":"GetDashboardResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "GetResourcePolicy":{
      "name":"GetResourcePolicy",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetResourcePolicyRequest"},
      "output":{"shape":"GetResourcePolicyResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "ListDashboards":{
      "name":"ListDashboards",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListDashboardsRequest"},
      "output":{"shape":"ListDashboardsResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"}
      ]
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ]
    },
    "UpdateDashboard":{
      "name":"UpdateDashboard",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateDashboardRequest"},
      "output":{"shape":"UpdateDashboardResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"}
      ]
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"GenericString"}
      },
      "exception":true
    },
    "CostAndUsageQuery":{
      "type":"structure",
      "required":[
        "metrics",
        "timeRange",
        "granularity"
      ],
      "members":{
        "metrics":{"shape":"MetricNames"},
        "timeRange":{"shape":"DateTimeRange"},
        "granularity":{"shape":"Granularity"},
        "groupBy":{"shape":"GroupDefinitions"},
        "filter":{"shape":"Expression"}
      }
    },
    "CostCategoryValues":{
      "type":"structure",
      "members":{
        "key":{"shape":"String"},
        "values":{"shape":"StringList"},
        "matchOptions":{"shape":"MatchOptions"}
      }
    },
    "CreateDashboardRequest":{
      "type":"structure",
      "required":[
        "name",
        "widgets"
      ],
      "members":{
        "name":{"shape":"DashboardName"},
        "description":{"shape":"Description"},
        "widgets":{"shape":"WidgetList"},
        "resourceTags":{"shape":"ResourceTagList"}
      }
    },
    "CreateDashboardResponse":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"DashboardArn"}
      }
    },
    "DashboardArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:aws[-a-z0-9]*:bcm-dashboards::[0-9]{12}:dashboard/(\\*|[-a-z0-9]+)"
    },
    "DashboardName":{
      "type":"string",
      "max":50,
      "min":2,
      "pattern":"(?!.* {2})[a-zA-Z][a-zA-Z0-9 _-]{0,48}[a-zA-Z0-9_-]"
    },
    "DashboardReference":{
      "type":"structure",
      "required":[
        "arn",
        "name",
        "type",
        "createdAt",
        "updatedAt"
      ],
      "members":{
        "arn":{"shape":"DashboardArn"},
        "name":{"shape":"DashboardName"},
        "description":{"shape":"Description"},
        "type":{"shape":"DashboardType"},
        "createdAt":{"shape":"GenericTimeStamp"},
        "updatedAt":{"shape":"GenericTimeStamp"}
      }
    },
    "DashboardReferenceList":{
      "type":"list",
      "member":{"shape":"DashboardReference"}
    },
    "DashboardType":{
      "type":"string",
      "enum":["CUSTOM"]
    },
    "DateTimeRange":{
      "type":"structure",
      "required":[
        "startTime",
        "endTime"
      ],
      "members":{
        "startTime":{"shape":"DateTimeValue"},
        "endTime":{"shape":"DateTimeValue"}
      }
    },
    "DateTimeType":{
      "type":"string",
      "enum":[
        "ABSOLUTE",
        "RELATIVE"
      ]
    },
    "DateTimeValue":{
      "type":"structure",
      "required":[
        "type",
        "value"
      ],
      "members":{
        "type":{"shape":"DateTimeType"},
        "value":{"shape":"GenericString"}
      }
    },
    "DeleteDashboardRequest":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"DashboardArn"}
      }
    },
    "DeleteDashboardResponse":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"DashboardArn"}
      }
    },
    "Description":{
      "type":"string",
      "max":200,
      "min":1,
      "pattern":"(?!.* {2})[ a-zA-Z0-9.,!?;:@#$%&\\-_/\\\\]*"
    },
    "Dimension":{
      "type":"string",
      "enum":[
        "AZ",
        "INSTANCE_TYPE",
        "LINKED_ACCOUNT",
        "OPERATION",
        "PURCHASE_TYPE",
        "REGION",
        "SERVICE",
        "USAGE_TYPE",
        "USAGE_TYPE_GROUP",
        "RECORD_TYPE",
        "RESOURCE_ID",
        "SUBSCRIPTION_ID",
        "TAG_KEY",
        "OPERATING_SYSTEM",
        "TENANCY",
        "BILLING_ENTITY",
        "RESERVATION_ID",
        "COST_CATEGORY_NAME",
        "DATABASE_ENGINE",
        "LEGAL_ENTITY_NAME",
        "SAVINGS_PLANS_TYPE",
        "INSTANCE_TYPE_FAMILY",
        "CACHE_ENGINE",
        "DEPLOYMENT_OPTION",
        "SCOPE",
        "PLATFORM"
      ]
    },
    "DimensionValues":{
      "type":"structure",
      "required":[
        "key",
        "values"
      ],
      "members":{
        "key":{"shape":"Dimension"},
        "values":{"shape":"StringList"},
        "matchOptions":{"shape":"MatchOptions"}
      }
    },
    "DisplayConfig":{
      "type":"structure",
      "members":{
        "graph":{"shape":"GraphDisplayConfigMap"},
        "table":{"shape":"TableDisplayConfigStruct"}
      },
      "union":true
    },
    "Expression":{
      "type":"structure",
      "members":{
        "or":{"shape":"Expressions"},
        "and":{"shape":"Expressions"},
        "not":{"shape":"Expression"},
        "dimensions":{"shape":"DimensionValues"},
        "tags":{"shape":"TagValues"},
        "costCategories":{"shape":"CostCategoryValues"}
      }
    },
    "Expressions":{
      "type":"list",
      "member":{"shape":"Expression"}
    },
    "GenericString":{
      "type":"string",
      "max":1024,
      "min":0,
      "pattern":"[\\S\\s]*"
    },
    "GenericTimeStamp":{"type":"timestamp"},
    "GetDashboardRequest":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"DashboardArn"}
      }
    },
    "GetDashboardResponse":{
      "type":"structure",
      "required":[
        "arn",
        "name",
        "type",
        "widgets",
        "createdAt",
        "updatedAt"
      ],
      "members":{
        "arn":{"shape":"DashboardArn"},
        "name":{"shape":"DashboardName"},
        "description":{"shape":"Description"},
        "type":{"shape":"DashboardType"},
        "widgets":{"shape":"WidgetList"},
        "createdAt":{"shape":"GenericTimeStamp"},
        "updatedAt":{"shape":"GenericTimeStamp"}
      }
    },
    "GetResourcePolicyRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{"shape":"DashboardArn"}
      }
    },
    "GetResourcePolicyResponse":{
      "type":"structure",
      "required":[
        "resourceArn",
        "policyDocument"
      ],
      "members":{
        "resourceArn":{"shape":"DashboardArn"},
        "policyDocument":{"shape":"GenericString"}
      }
    },
    "Granularity":{
      "type":"string",
      "enum":[
        "HOURLY",
        "DAILY",
        "MONTHLY"
      ]
    },
    "GraphDisplayConfig":{
      "type":"structure",
      "required":["visualType"],
      "members":{
        "visualType":{"shape":"VisualType"}
      }
    },
    "GraphDisplayConfigMap":{
      "type":"map",
      "key":{"shape":"GenericString"},
      "value":{"shape":"GraphDisplayConfig"}
    },
    "GroupDefinition":{
      "type":"structure",
      "required":["key"],
      "members":{
        "key":{"shape":"GroupDefinitionKeyString"},
        "type":{"shape":"GroupDefinitionType"}
      }
    },
    "GroupDefinitionKeyString":{
      "type":"string",
      "max":1024,
      "min":1,
      "pattern":"[\\S\\s]*"
    },
    "GroupDefinitionType":{
      "type":"string",
      "enum":[
        "DIMENSION",
        "TAG",
        "COST_CATEGORY"
      ]
    },
    "GroupDefinitions":{
      "type":"list",
      "member":{"shape":"GroupDefinition"}
    },
    "Integer":{
      "type":"integer",
      "box":true
    },
    "InternalServerException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"GenericString"}
      },
      "exception":true,
      "fault":true
    },
    "ListDashboardsRequest":{
      "type":"structure",
      "members":{
        "maxResults":{"shape":"MaxResults"},
        "nextToken":{"shape":"NextPageToken"}
      }
    },
    "ListDashboardsResponse":{
      "type":"structure",
      "required":["dashboards"],
      "members":{
        "dashboards":{"shape":"DashboardReferenceList"},
        "nextToken":{"shape":"NextPageToken"}
      }
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{"shape":"DashboardArn"}
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "resourceTags":{"shape":"ResourceTagList"}
      }
    },
    "MatchOption":{
      "type":"string",
      "enum":[
        "EQUALS",
        "ABSENT",
        "STARTS_WITH",
        "ENDS_WITH",
        "CONTAINS",
        "GREATER_THAN_OR_EQUAL",
        "CASE_SENSITIVE",
        "CASE_INSENSITIVE"
      ]
    },
    "MatchOptions":{
      "type":"list",
      "member":{"shape":"MatchOption"}
    },
    "MaxResults":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":1
    },
    "MetricName":{
      "type":"string",
      "enum":[
        "AmortizedCost",
        "BlendedCost",
        "NetAmortizedCost",
        "NetUnblendedCost",
        "NormalizedUsageAmount",
        "UnblendedCost",
        "UsageQuantity",
        "SpendCoveredBySavingsPlans",
        "Hour",
        "Unit",
        "Cost"
      ]
    },
    "MetricNames":{
      "type":"list",
      "member":{"shape":"MetricName"}
    },
    "NextPageToken":{
      "type":"string",
      "max":8192,
      "min":1,
      "pattern":"[\\S\\s]*"
    },
    "QueryParameters":{
      "type":"structure",
      "members":{
        "costAndUsage":{"shape":"CostAndUsageQuery"},
        "savingsPlansCoverage":{"shape":"SavingsPlansCoverageQuery"},
        "savingsPlansUtilization":{"shape":"SavingsPlansUtilizationQuery"},
        "reservationCoverage":{"shape":"ReservationCoverageQuery"},
        "reservationUtilization":{"shape":"ReservationUtilizationQuery"}
      },
      "union":true
    },
    "ReservationCoverageQuery":{
      "type":"structure",
      "required":["timeRange"],
      "members":{
        "timeRange":{"shape":"DateTimeRange"},
        "groupBy":{"shape":"GroupDefinitions"},
        "granularity":{"shape":"Granularity"},
        "filter":{"shape":"Expression"},
        "metrics":{"shape":"MetricNames"}
      }
    },
    "ReservationUtilizationQuery":{
      "type":"structure",
      "required":["timeRange"],
      "members":{
        "timeRange":{"shape":"DateTimeRange"},
        "groupBy":{"shape":"GroupDefinitions"},
        "granularity":{"shape":"Granularity"},
        "filter":{"shape":"Expression"}
      }
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"GenericString"}
      },
      "exception":true
    },
    "ResourceTag":{
      "type":"structure",
      "required":[
        "key",
        "value"
      ],
      "members":{
        "key":{"shape":"ResourceTagKey"},
        "value":{"shape":"ResourceTagValue"}
      }
    },
    "ResourceTagKey":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"[\\S\\s]*"
    },
    "ResourceTagKeyList":{
      "type":"list",
      "member":{"shape":"ResourceTagKey"},
      "max":200,
      "min":0
    },
    "ResourceTagList":{
      "type":"list",
      "member":{"shape":"ResourceTag"},
      "max":200,
      "min":0
    },
    "ResourceTagValue":{
      "type":"string",
      "max":256,
      "min":0,
      "pattern":"[\\S\\s]*"
    },
    "SavingsPlansCoverageQuery":{
      "type":"structure",
      "required":["timeRange"],
      "members":{
        "timeRange":{"shape":"DateTimeRange"},
        "metrics":{"shape":"MetricNames"},
        "granularity":{"shape":"Granularity"},
        "groupBy":{"shape":"GroupDefinitions"},
        "filter":{"shape":"Expression"}
      }
    },
    "SavingsPlansUtilizationQuery":{
      "type":"structure",
      "required":["timeRange"],
      "members":{
        "timeRange":{"shape":"DateTimeRange"},
        "granularity":{"shape":"Granularity"},
        "filter":{"shape":"Expression"}
      }
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"GenericString"}
      },
      "exception":true
    },
    "String":{"type":"string"},
    "StringList":{
      "type":"list",
      "member":{"shape":"String"}
    },
    "TableDisplayConfigStruct":{
      "type":"structure",
      "members":{}
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "resourceTags"
      ],
      "members":{
        "resourceArn":{"shape":"DashboardArn"},
        "resourceTags":{"shape":"ResourceTagList"}
      }
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{}
    },
    "TagValues":{
      "type":"structure",
      "members":{
        "key":{"shape":"String"},
        "values":{"shape":"StringList"},
        "matchOptions":{"shape":"MatchOptions"}
      }
    },
    "ThrottlingException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"GenericString"}
      },
      "exception":true
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "resourceTagKeys"
      ],
      "members":{
        "resourceArn":{"shape":"DashboardArn"},
        "resourceTagKeys":{"shape":"ResourceTagKeyList"}
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{}
    },
    "UpdateDashboardRequest":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"DashboardArn"},
        "name":{"shape":"DashboardName"},
        "description":{"shape":"Description"},
        "widgets":{"shape":"WidgetList"}
      }
    },
    "UpdateDashboardResponse":{
      "type":"structure",
      "required":["arn"],
      "members":{
        "arn":{"shape":"DashboardArn"}
      }
    },
    "ValidationException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"GenericString"}
      },
      "exception":true
    },
    "VisualType":{
      "type":"string",
      "enum":[
        "LINE",
        "BAR",
        "STACK"
      ]
    },
    "Widget":{
      "type":"structure",
      "required":[
        "title",
        "configs"
      ],
      "members":{
        "title":{"shape":"WidgetTitle"},
        "description":{"shape":"Description"},
        "width":{"shape":"WidgetWidth"},
        "height":{"shape":"WidgetHeight"},
        "horizontalOffset":{"shape":"Integer"},
        "configs":{"shape":"WidgetConfigList"}
      }
    },
    "WidgetConfig":{
      "type":"structure",
      "required":[
        "queryParameters",
        "displayConfig"
      ],
      "members":{
        "queryParameters":{"shape":"QueryParameters"},
        "displayConfig":{"shape":"DisplayConfig"}
      }
    },
    "WidgetConfigList":{
      "type":"list",
      "member":{"shape":"WidgetConfig"},
      "max":2,
      "min":1
    },
    "WidgetHeight":{
      "type":"integer",
      "box":true,
      "max":10,
      "min":4
    },
    "WidgetList":{
      "type":"list",
      "member":{"shape":"Widget"},
      "max":20,
      "min":0
    },
    "WidgetTitle":{
      "type":"string",
      "max":50,
      "min":2,
      "pattern":"(?!.* {2})[a-zA-Z0-9_-][ a-zA-Z0-9_-]*[a-zA-Z0-9_-]"
    },
    "WidgetWidth":{
      "type":"integer",
      "box":true,
      "max":6,
      "min":2
    }
  }
}
