{
    "smithy": "1.0",
    "metadata": {
        "suppressions": [
            {
                "id": "HttpMethodSemantics",
                "namespace": "*"
            },
            {
                "id": "HttpResponseCodeSemantics",
                "namespace": "*"
            },
            {
                "id": "PaginatedTrait",
                "namespace": "*"
            },
            {
                "id": "HttpHeaderTrait",
                "namespace": "*"
            },
            {
                "id": "HttpUriConflict",
                "namespace": "*"
            },
            {
                "id": "Service",
                "namespace": "*"
            }
        ]
    },
    "shapes": {
        "com.amazonaws.costandusagereportservice#AWSOrigamiServiceGatewayService": {
            "type": "service",
            "version": "2017-01-06",
            "operations": [
                {
                    "target": "com.amazonaws.costandusagereportservice#DeleteReportDefinition"
                },
                {
                    "target": "com.amazonaws.costandusagereportservice#DescribeReportDefinitions"
                },
                {
                    "target": "com.amazonaws.costandusagereportservice#ModifyReportDefinition"
                },
                {
                    "target": "com.amazonaws.costandusagereportservice#PutReportDefinition"
                }
            ],
            "traits": {
                "aws.api#service": {
                    "sdkId": "Cost and Usage Report Service",
                    "arnNamespace": "cur",
                    "cloudFormationName": "CostandUsageReportService",
                    "cloudTrailEventSource": "costandusagereportservice.amazonaws.com",
                    "endpointPrefix": "cur"
                },
                "aws.auth#sigv4": {
                    "name": "cur"
                },
                "aws.protocols#awsJson1_1": {},
                "smithy.api#documentation": "<p>The AWS Cost and Usage Report API enables you to programmatically create, query, and delete \n        AWS Cost and Usage report definitions.</p>\n         <p>AWS Cost and Usage reports track the monthly AWS costs and usage \n   associated with your AWS account.\n    \n        The report contains line items for each unique combination of AWS product,\n        usage type, and operation that your AWS account uses. \n        \n        You can configure the AWS Cost and Usage report to show only the data that you want, using the\n        AWS Cost and Usage API.</p>\n\n         <p>Service Endpoint</p>\n         <p>The AWS Cost and Usage Report API provides the following endpoint:</p>\n         <ul>\n            <li>\n               <p>cur.us-east-1.amazonaws.com</p>\n            </li>\n         </ul>",
                "smithy.api#title": "AWS Cost and Usage Report Service"
            }
        },
        "com.amazonaws.costandusagereportservice#AWSRegion": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>The region of the S3 bucket that AWS delivers the report into.</p>",
                "smithy.api#enum": [
                    {
                        "value": "af-south-1",
                        "name": "CAPE_TOWN"
                    },
                    {
                        "value": "ap-east-1",
                        "name": "HONG_KONG"
                    },
                    {
                        "value": "ap-south-1",
                        "name": "MUMBAI"
                    },
                    {
                        "value": "ap-southeast-1",
                        "name": "SINGAPORE"
                    },
                    {
                        "value": "ap-southeast-2",
                        "name": "SYDNEY"
                    },
                    {
                        "value": "ap-northeast-1",
                        "name": "TOKYO"
                    },
                    {
                        "value": "ap-northeast-2",
                        "name": "SEOUL"
                    },
                    {
                        "value": "ap-northeast-3",
                        "name": "OSAKA"
                    },
                    {
                        "value": "ca-central-1",
                        "name": "CANADA_CENTRAL"
                    },
                    {
                        "value": "eu-central-1",
                        "name": "FRANKFURT"
                    },
                    {
                        "value": "eu-west-1",
                        "name": "IRELAND"
                    },
                    {
                        "value": "eu-west-2",
                        "name": "LONDON"
                    },
                    {
                        "value": "eu-west-3",
                        "name": "PARIS"
                    },
                    {
                        "value": "eu-north-1",
                        "name": "STOCKHOLM"
                    },
                    {
                        "value": "eu-south-1",
                        "name": "MILANO"
                    },
                    {
                        "value": "me-south-1",
                        "name": "BAHRAIN"
                    },
                    {
                        "value": "sa-east-1",
                        "name": "SAO_PAULO"
                    },
                    {
                        "value": "us-east-1",
                        "name": "US_STANDARD"
                    },
                    {
                        "value": "us-east-2",
                        "name": "OHIO"
                    },
                    {
                        "value": "us-west-1",
                        "name": "NORTHERN_CALIFORNIA"
                    },
                    {
                        "value": "us-west-2",
                        "name": "OREGON"
                    },
                    {
                        "value": "cn-north-1",
                        "name": "BEIJING"
                    },
                    {
                        "value": "cn-northwest-1",
                        "name": "NINGXIA"
                    }
                ]
            }
        },
        "com.amazonaws.costandusagereportservice#AdditionalArtifact": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>The types of manifest that you want AWS to create for this report.</p>",
                "smithy.api#enum": [
                    {
                        "value": "REDSHIFT",
                        "name": "REDSHIFT"
                    },
                    {
                        "value": "QUICKSIGHT",
                        "name": "QUICKSIGHT"
                    },
                    {
                        "value": "ATHENA",
                        "name": "ATHENA"
                    }
                ]
            }
        },
        "com.amazonaws.costandusagereportservice#AdditionalArtifactList": {
            "type": "list",
            "member": {
                "target": "com.amazonaws.costandusagereportservice#AdditionalArtifact"
            },
            "traits": {
                "smithy.api#documentation": "<p>A list of additional artifacts.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#BillingViewArn": {
            "type": "string",
            "traits": {
                "smithy.api#length": {
                    "min": 0,
                    "max": 128
                },
                "smithy.api#pattern": "(arn:aws(-cn)?:billing::[0-9]{12}:billingview/)?[a-zA-Z0-9_\\+=\\.\\-@].{1,30}"
            }
        },
        "com.amazonaws.costandusagereportservice#CompressionFormat": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>The compression format that AWS uses for the report.</p>",
                "smithy.api#enum": [
                    {
                        "value": "ZIP",
                        "name": "ZIP"
                    },
                    {
                        "value": "GZIP",
                        "name": "GZIP"
                    },
                    {
                        "value": "Parquet",
                        "name": "Parquet"
                    }
                ]
            }
        },
        "com.amazonaws.costandusagereportservice#DeleteReportDefinition": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.costandusagereportservice#DeleteReportDefinitionRequest"
            },
            "output": {
                "target": "com.amazonaws.costandusagereportservice#DeleteReportDefinitionResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.costandusagereportservice#InternalErrorException"
                },
                {
                    "target": "com.amazonaws.costandusagereportservice#ValidationException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Deletes the specified report.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#DeleteReportDefinitionRequest": {
            "type": "structure",
            "members": {
                "ReportName": {
                    "target": "com.amazonaws.costandusagereportservice#ReportName",
                    "traits": {
                        "smithy.api#documentation": "<p>The name of the report that you want to delete. The name must be unique, is case sensitive, and can't include spaces.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>Deletes the specified report.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#DeleteReportDefinitionResponse": {
            "type": "structure",
            "members": {
                "ResponseMessage": {
                    "target": "com.amazonaws.costandusagereportservice#DeleteResponseMessage"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>If the action is successful, the service sends back an HTTP 200 response.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#DeleteResponseMessage": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>Whether the deletion was successful or not.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#DescribeReportDefinitions": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.costandusagereportservice#DescribeReportDefinitionsRequest"
            },
            "output": {
                "target": "com.amazonaws.costandusagereportservice#DescribeReportDefinitionsResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.costandusagereportservice#InternalErrorException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Lists the AWS Cost and Usage reports available to this account.</p>",
                "smithy.api#paginated": {
                    "inputToken": "NextToken",
                    "outputToken": "NextToken",
                    "pageSize": "MaxResults"
                }
            }
        },
        "com.amazonaws.costandusagereportservice#DescribeReportDefinitionsRequest": {
            "type": "structure",
            "members": {
                "MaxResults": {
                    "target": "com.amazonaws.costandusagereportservice#MaxResults"
                },
                "NextToken": {
                    "target": "com.amazonaws.costandusagereportservice#GenericString"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>Requests a list of AWS Cost and Usage reports owned by the account.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#DescribeReportDefinitionsResponse": {
            "type": "structure",
            "members": {
                "ReportDefinitions": {
                    "target": "com.amazonaws.costandusagereportservice#ReportDefinitionList",
                    "traits": {
                        "smithy.api#documentation": "<p>A list of AWS Cost and Usage reports owned by the account.</p>"
                    }
                },
                "NextToken": {
                    "target": "com.amazonaws.costandusagereportservice#GenericString"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>If the action is successful, the service sends back an HTTP 200 response.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#DuplicateReportNameException": {
            "type": "structure",
            "members": {
                "Message": {
                    "target": "com.amazonaws.costandusagereportservice#ErrorMessage"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>A report with the specified name already exists in the account. Specify a different report name.</p>",
                "smithy.api#error": "client"
            }
        },
        "com.amazonaws.costandusagereportservice#ErrorMessage": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>A message to show the detail of the exception.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#GenericString": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>A generic string.</p>",
                "smithy.api#length": {
                    "min": 0,
                    "max": 256
                },
                "smithy.api#pattern": "[A-Za-z0-9_\\.\\-=]*"
            }
        },
        "com.amazonaws.costandusagereportservice#InternalErrorException": {
            "type": "structure",
            "members": {
                "Message": {
                    "target": "com.amazonaws.costandusagereportservice#ErrorMessage"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>An error on the server occurred during the processing of your request. Try again later.</p>",
                "smithy.api#error": "server"
            }
        },
        "com.amazonaws.costandusagereportservice#MaxResults": {
            "type": "integer",
            "traits": {
                "smithy.api#box": {},
                "smithy.api#documentation": "<p>The maximum number of results that AWS returns for the operation.</p>",
                "smithy.api#range": {
                    "min": 5,
                    "max": 5
                }
            }
        },
        "com.amazonaws.costandusagereportservice#ModifyReportDefinition": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.costandusagereportservice#ModifyReportDefinitionRequest"
            },
            "output": {
                "target": "com.amazonaws.costandusagereportservice#ModifyReportDefinitionResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.costandusagereportservice#InternalErrorException"
                },
                {
                    "target": "com.amazonaws.costandusagereportservice#ValidationException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Allows you to programatically update your report preferences.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#ModifyReportDefinitionRequest": {
            "type": "structure",
            "members": {
                "ReportName": {
                    "target": "com.amazonaws.costandusagereportservice#ReportName",
                    "traits": {
                        "smithy.api#required": {}
                    }
                },
                "ReportDefinition": {
                    "target": "com.amazonaws.costandusagereportservice#ReportDefinition",
                    "traits": {
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.costandusagereportservice#ModifyReportDefinitionResponse": {
            "type": "structure",
            "members": {}
        },
        "com.amazonaws.costandusagereportservice#PutReportDefinition": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.costandusagereportservice#PutReportDefinitionRequest"
            },
            "output": {
                "target": "com.amazonaws.costandusagereportservice#PutReportDefinitionResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.costandusagereportservice#DuplicateReportNameException"
                },
                {
                    "target": "com.amazonaws.costandusagereportservice#InternalErrorException"
                },
                {
                    "target": "com.amazonaws.costandusagereportservice#ReportLimitReachedException"
                },
                {
                    "target": "com.amazonaws.costandusagereportservice#ValidationException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Creates a new report using the description that you provide.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#PutReportDefinitionRequest": {
            "type": "structure",
            "members": {
                "ReportDefinition": {
                    "target": "com.amazonaws.costandusagereportservice#ReportDefinition",
                    "traits": {
                        "smithy.api#documentation": "<p>Represents the output of the PutReportDefinition operation. The content consists of the detailed \n      metadata and data file information. </p>",
                        "smithy.api#required": {}
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>Creates a Cost and Usage Report.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#PutReportDefinitionResponse": {
            "type": "structure",
            "members": {},
            "traits": {
                "smithy.api#documentation": "<p>If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#RefreshClosedReports": {
            "type": "boolean",
            "traits": {
                "smithy.api#box": {}
            }
        },
        "com.amazonaws.costandusagereportservice#ReportDefinition": {
            "type": "structure",
            "members": {
                "ReportName": {
                    "target": "com.amazonaws.costandusagereportservice#ReportName",
                    "traits": {
                        "smithy.api#required": {}
                    }
                },
                "TimeUnit": {
                    "target": "com.amazonaws.costandusagereportservice#TimeUnit",
                    "traits": {
                        "smithy.api#required": {}
                    }
                },
                "Format": {
                    "target": "com.amazonaws.costandusagereportservice#ReportFormat",
                    "traits": {
                        "smithy.api#required": {}
                    }
                },
                "Compression": {
                    "target": "com.amazonaws.costandusagereportservice#CompressionFormat",
                    "traits": {
                        "smithy.api#required": {}
                    }
                },
                "AdditionalSchemaElements": {
                    "target": "com.amazonaws.costandusagereportservice#SchemaElementList",
                    "traits": {
                        "smithy.api#documentation": "<p>A list of strings that indicate additional content that Amazon Web Services includes in the report, such as individual resource IDs. </p>",
                        "smithy.api#required": {}
                    }
                },
                "S3Bucket": {
                    "target": "com.amazonaws.costandusagereportservice#S3Bucket",
                    "traits": {
                        "smithy.api#required": {}
                    }
                },
                "S3Prefix": {
                    "target": "com.amazonaws.costandusagereportservice#S3Prefix",
                    "traits": {
                        "smithy.api#required": {}
                    }
                },
                "S3Region": {
                    "target": "com.amazonaws.costandusagereportservice#AWSRegion",
                    "traits": {
                        "smithy.api#required": {}
                    }
                },
                "AdditionalArtifacts": {
                    "target": "com.amazonaws.costandusagereportservice#AdditionalArtifactList",
                    "traits": {
                        "smithy.api#documentation": "<p>A list of manifests that you want Amazon Web Services to create for this report.</p>"
                    }
                },
                "RefreshClosedReports": {
                    "target": "com.amazonaws.costandusagereportservice#RefreshClosedReports",
                    "traits": {
                        "smithy.api#documentation": "<p>Whether you want Amazon Web Services to update your reports after they have been finalized if Amazon Web Services detects charges related to \n      previous months. These charges can include refunds, credits, or support fees.</p>"
                    }
                },
                "ReportVersioning": {
                    "target": "com.amazonaws.costandusagereportservice#ReportVersioning",
                    "traits": {
                        "smithy.api#documentation": "<p>Whether you want Amazon Web Services to overwrite the previous version of each report or \n         to deliver the report in addition to the previous versions.</p>"
                    }
                },
                "BillingViewArn": {
                    "target": "com.amazonaws.costandusagereportservice#BillingViewArn",
                    "traits": {
                        "smithy.api#documentation": "<p>\n      The Amazon resource name of the billing view. You can get this value by using the billing view service public APIs.\n    </p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The definition of AWS Cost and Usage Report. You can specify the report name, \n         time unit, report format, compression format, S3 bucket, additional artifacts, and schema \n         elements in the definition.\n    </p>"
            }
        },
        "com.amazonaws.costandusagereportservice#ReportDefinitionList": {
            "type": "list",
            "member": {
                "target": "com.amazonaws.costandusagereportservice#ReportDefinition"
            },
            "traits": {
                "smithy.api#documentation": "<p>A list of report definitions.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#ReportFormat": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>The format that AWS saves the report in.</p>",
                "smithy.api#enum": [
                    {
                        "value": "textORcsv",
                        "name": "CSV"
                    },
                    {
                        "value": "Parquet",
                        "name": "Parquet"
                    }
                ]
            }
        },
        "com.amazonaws.costandusagereportservice#ReportLimitReachedException": {
            "type": "structure",
            "members": {
                "Message": {
                    "target": "com.amazonaws.costandusagereportservice#ErrorMessage"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>This account already has five reports defined. To define a new report, you must delete an existing report.</p>",
                "smithy.api#error": "client"
            }
        },
        "com.amazonaws.costandusagereportservice#ReportName": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>The name of the report that you want to create. The name must be unique,\n        is case sensitive, and can't include spaces. </p>",
                "smithy.api#length": {
                    "min": 0,
                    "max": 256
                },
                "smithy.api#pattern": "[0-9A-Za-z!\\-_.*\\'()]+"
            }
        },
        "com.amazonaws.costandusagereportservice#ReportVersioning": {
            "type": "string",
            "traits": {
                "smithy.api#enum": [
                    {
                        "value": "CREATE_NEW_REPORT",
                        "name": "CREATE_NEW_REPORT"
                    },
                    {
                        "value": "OVERWRITE_REPORT",
                        "name": "OVERWRITE_REPORT"
                    }
                ]
            }
        },
        "com.amazonaws.costandusagereportservice#S3Bucket": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>The S3 bucket where AWS delivers the report.</p>",
                "smithy.api#length": {
                    "min": 0,
                    "max": 256
                },
                "smithy.api#pattern": "[A-Za-z0-9_\\.\\-]+"
            }
        },
        "com.amazonaws.costandusagereportservice#S3Prefix": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>The prefix that AWS adds to the report name when AWS delivers the report. Your prefix\n        can't include spaces.</p>",
                "smithy.api#length": {
                    "min": 0,
                    "max": 256
                },
                "smithy.api#pattern": "[0-9A-Za-z!\\-_.*\\'()/]*"
            }
        },
        "com.amazonaws.costandusagereportservice#SchemaElement": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>Whether or not AWS includes resource IDs in the report. </p>",
                "smithy.api#enum": [
                    {
                        "value": "RESOURCES",
                        "name": "RESOURCES"
                    }
                ]
            }
        },
        "com.amazonaws.costandusagereportservice#SchemaElementList": {
            "type": "list",
            "member": {
                "target": "com.amazonaws.costandusagereportservice#SchemaElement"
            },
            "traits": {
                "smithy.api#documentation": "<p>A list of strings that indicate the content that is included in the report, such as service or usage type.</p>"
            }
        },
        "com.amazonaws.costandusagereportservice#TimeUnit": {
            "type": "string",
            "traits": {
                "smithy.api#documentation": "<p>The length of time covered by the report. </p>",
                "smithy.api#enum": [
                    {
                        "value": "HOURLY",
                        "name": "HOURLY"
                    },
                    {
                        "value": "DAILY",
                        "name": "DAILY"
                    },
                    {
                        "value": "MONTHLY",
                        "name": "MONTHLY"
                    }
                ]
            }
        },
        "com.amazonaws.costandusagereportservice#ValidationException": {
            "type": "structure",
            "members": {
                "Message": {
                    "target": "com.amazonaws.costandusagereportservice#ErrorMessage"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The input fails to satisfy the constraints specified by an AWS service.</p>",
                "smithy.api#error": "client"
            }
        }
    }
}
