{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2019-12-03",
    "endpointPrefix":"outposts",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceAbbreviation":"Outposts",
    "serviceFullName":"AWS Outposts",
    "serviceId":"Outposts",
    "signatureVersion":"v4",
    "signingName":"outposts",
    "uid":"outposts-2019-12-03"
  },
  "operations":{
    "CreateOrder":{
      "name":"CreateOrder",
      "http":{
        "method":"POST",
        "requestUri":"/orders"
      },
      "input":{"shape":"CreateOrderInput"},
      "output":{"shape":"CreateOrderOutput"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"AccessDeniedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalServerException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Creates an order for an Outpost.</p>"
    },
    "CreateOutpost":{
      "name":"CreateOutpost",
      "http":{
        "method":"POST",
        "requestUri":"/outposts"
      },
      "input":{"shape":"CreateOutpostInput"},
      "output":{"shape":"CreateOutpostOutput"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"NotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Creates an Outpost.</p> <p>You can specify <code>AvailabilityZone</code> or <code>AvailabilityZoneId</code>.</p>"
    },
    "DeleteOutpost":{
      "name":"DeleteOutpost",
      "http":{
        "method":"DELETE",
        "requestUri":"/outposts/{OutpostId}"
      },
      "input":{"shape":"DeleteOutpostInput"},
      "output":{"shape":"DeleteOutpostOutput"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"NotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the Outpost.</p>"
    },
    "DeleteSite":{
      "name":"DeleteSite",
      "http":{
        "method":"DELETE",
        "requestUri":"/sites/{SiteId}"
      },
      "input":{"shape":"DeleteSiteInput"},
      "output":{"shape":"DeleteSiteOutput"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"NotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes the site.</p>"
    },
    "GetOutpost":{
      "name":"GetOutpost",
      "http":{
        "method":"GET",
        "requestUri":"/outposts/{OutpostId}"
      },
      "input":{"shape":"GetOutpostInput"},
      "output":{"shape":"GetOutpostOutput"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"NotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Gets information about the specified Outpost.</p>"
    },
    "GetOutpostInstanceTypes":{
      "name":"GetOutpostInstanceTypes",
      "http":{
        "method":"GET",
        "requestUri":"/outposts/{OutpostId}/instanceTypes"
      },
      "input":{"shape":"GetOutpostInstanceTypesInput"},
      "output":{"shape":"GetOutpostInstanceTypesOutput"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"NotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the instance types for the specified Outpost.</p>"
    },
    "ListOutposts":{
      "name":"ListOutposts",
      "http":{
        "method":"GET",
        "requestUri":"/outposts"
      },
      "input":{"shape":"ListOutpostsInput"},
      "output":{"shape":"ListOutpostsOutput"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Create a list of the Outposts for your AWS account. Add filters to your request to return a more specific list of results. Use filters to match an Outpost lifecycle status, Availibility Zone (<code>us-east-1a</code>), and AZ ID (<code>use1-az1</code>). </p> <p>If you specify multiple filters, the filters are joined with an <code>AND</code>, and the request returns only results that match all of the specified filters.</p>"
    },
    "ListSites":{
      "name":"ListSites",
      "http":{
        "method":"GET",
        "requestUri":"/sites"
      },
      "input":{"shape":"ListSitesInput"},
      "output":{"shape":"ListSitesOutput"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists the sites for the specified AWS account.</p>"
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"GET",
        "requestUri":"/tags/{ResourceArn}"
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"NotFoundException"}
      ],
      "documentation":"<p>Lists the tags for the specified resource.</p>"
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags/{ResourceArn}"
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"NotFoundException"}
      ],
      "documentation":"<p>Adds tags to the specified resource.</p>"
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/tags/{ResourceArn}"
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"NotFoundException"}
      ],
      "documentation":"<p>Removes tags from the specified resource.</p>"
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>You do not have permission to perform this operation.</p>",
      "error":{"httpStatusCode":403},
      "exception":true
    },
    "AccountId":{
      "type":"string",
      "documentation":"<p>The ID of the AWS account.</p>",
      "max":12,
      "min":12,
      "pattern":"\\d{12}"
    },
    "Arn":{
      "type":"string",
      "max":1011,
      "pattern":"^(arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:([a-z\\d-]+)/)[a-z]{2,8}-[a-f0-9]{17}$"
    },
    "AvailabilityZone":{
      "type":"string",
      "documentation":"<p>The Availability Zone.</p>",
      "max":1000,
      "min":1,
      "pattern":"^([a-zA-Z]+-){1,3}([a-zA-Z]+)?(\\d+[a-zA-Z]?)?$"
    },
    "AvailabilityZoneId":{
      "type":"string",
      "documentation":"<p>The ID of the Availability Zone.</p>",
      "max":255,
      "min":1,
      "pattern":"^[a-zA-Z]+\\d-[a-zA-Z]+\\d$"
    },
    "AvailabilityZoneIdList":{
      "type":"list",
      "member":{"shape":"AvailabilityZoneId"},
      "max":5,
      "min":1
    },
    "AvailabilityZoneList":{
      "type":"list",
      "member":{"shape":"AvailabilityZone"},
      "max":5,
      "min":1
    },
    "ConflictException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"},
        "ResourceId":{
          "shape":"String",
          "documentation":"<p>The ID of the resource causing the conflict.</p>"
        },
        "ResourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of the resource causing the conflict.</p>"
        }
      },
      "documentation":"<p>Updating or deleting this resource can cause an inconsistent state.</p>",
      "error":{"httpStatusCode":409},
      "exception":true
    },
    "CreateOrderInput":{
      "type":"structure",
      "required":[
        "OutpostIdentifier",
        "LineItems",
        "PaymentOption"
      ],
      "members":{
        "OutpostIdentifier":{
          "shape":"OutpostIdentifier",
          "documentation":"<p> The ID or the Amazon Resource Name (ARN) of the Outpost. </p>"
        },
        "LineItems":{
          "shape":"LineItemRequestListDefinition",
          "documentation":"<p>The line items that make up the order.</p>"
        },
        "PaymentOption":{
          "shape":"PaymentOption",
          "documentation":"<p>The payment option for the order.</p>"
        },
        "PaymentTerm":{
          "shape":"PaymentTerm",
          "documentation":"<p>The payment terms for the order.</p>"
        }
      }
    },
    "CreateOrderOutput":{
      "type":"structure",
      "members":{
        "Order":{
          "shape":"Order",
          "documentation":"<p>Information about this order.</p>"
        }
      }
    },
    "CreateOutpostInput":{
      "type":"structure",
      "required":[
        "Name",
        "SiteId"
      ],
      "members":{
        "Name":{"shape":"OutpostName"},
        "Description":{"shape":"OutpostDescription"},
        "SiteId":{"shape":"SiteId"},
        "AvailabilityZone":{"shape":"AvailabilityZone"},
        "AvailabilityZoneId":{"shape":"AvailabilityZoneId"},
        "Tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags to apply to the Outpost.</p>"
        }
      }
    },
    "CreateOutpostOutput":{
      "type":"structure",
      "members":{
        "Outpost":{"shape":"Outpost"}
      }
    },
    "DeleteOutpostInput":{
      "type":"structure",
      "required":["OutpostId"],
      "members":{
        "OutpostId":{
          "shape":"OutpostId",
          "documentation":"<p> The ID of the Outpost. </p>",
          "location":"uri",
          "locationName":"OutpostId"
        }
      }
    },
    "DeleteOutpostOutput":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteSiteInput":{
      "type":"structure",
      "required":["SiteId"],
      "members":{
        "SiteId":{
          "shape":"SiteId",
          "location":"uri",
          "locationName":"SiteId"
        }
      }
    },
    "DeleteSiteOutput":{
      "type":"structure",
      "members":{
      }
    },
    "ErrorMessage":{
      "type":"string",
      "max":1000,
      "min":1,
      "pattern":"^[\\S \\n]+$"
    },
    "GetOutpostInput":{
      "type":"structure",
      "required":["OutpostId"],
      "members":{
        "OutpostId":{
          "shape":"OutpostId",
          "documentation":"<p> The ID of the Outpost. </p>",
          "location":"uri",
          "locationName":"OutpostId"
        }
      }
    },
    "GetOutpostInstanceTypesInput":{
      "type":"structure",
      "required":["OutpostId"],
      "members":{
        "OutpostId":{
          "shape":"OutpostId",
          "documentation":"<p> The ID of the Outpost. </p>",
          "location":"uri",
          "locationName":"OutpostId"
        },
        "NextToken":{
          "shape":"Token",
          "location":"querystring",
          "locationName":"NextToken"
        },
        "MaxResults":{
          "shape":"MaxResults1000",
          "location":"querystring",
          "locationName":"MaxResults"
        }
      }
    },
    "GetOutpostInstanceTypesOutput":{
      "type":"structure",
      "members":{
        "InstanceTypes":{"shape":"InstanceTypeListDefinition"},
        "NextToken":{"shape":"Token"},
        "OutpostId":{
          "shape":"OutpostId",
          "documentation":"<p> The ID of the Outpost. </p>"
        },
        "OutpostArn":{"shape":"OutpostArn"}
      }
    },
    "GetOutpostOutput":{
      "type":"structure",
      "members":{
        "Outpost":{"shape":"Outpost"}
      }
    },
    "ISO8601Timestamp":{"type":"timestamp"},
    "InstanceType":{
      "type":"string",
      "documentation":"<p>The instance type.</p>"
    },
    "InstanceTypeItem":{
      "type":"structure",
      "members":{
        "InstanceType":{"shape":"InstanceType"}
      },
      "documentation":"<p>Information about an instance type.</p>"
    },
    "InstanceTypeListDefinition":{
      "type":"list",
      "member":{"shape":"InstanceTypeItem"},
      "documentation":"<p>Information about the instance types.</p>"
    },
    "InternalServerException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>An internal error has occurred.</p>",
      "error":{"httpStatusCode":500},
      "exception":true
    },
    "LifeCycleStatus":{
      "type":"string",
      "documentation":"<p>The life cycle status.</p>",
      "max":20,
      "min":1,
      "pattern":"^[ A-Za-z]+$"
    },
    "LifeCycleStatusList":{
      "type":"list",
      "member":{"shape":"LifeCycleStatus"},
      "max":5,
      "min":1
    },
    "LineItem":{
      "type":"structure",
      "members":{
        "CatalogItemId":{
          "shape":"SkuCode",
          "documentation":"<p> The ID of the catalog item. </p>"
        },
        "LineItemId":{
          "shape":"LineItemId",
          "documentation":"<p>The ID of the line item.</p>"
        },
        "Quantity":{
          "shape":"LineItemQuantity",
          "documentation":"<p>The quantity of the line item.</p>"
        },
        "Status":{
          "shape":"Status",
          "documentation":"<p>The status of the line item.</p>"
        }
      },
      "documentation":"<p>Information about a line item.</p>"
    },
    "LineItemId":{
      "type":"string",
      "pattern":"ooi-[a-f0-9]{17}"
    },
    "LineItemListDefinition":{
      "type":"list",
      "member":{"shape":"LineItem"}
    },
    "LineItemQuantity":{
      "type":"integer",
      "max":20,
      "min":1
    },
    "LineItemRequest":{
      "type":"structure",
      "members":{
        "CatalogItemId":{
          "shape":"SkuCode",
          "documentation":"<p>The ID of the catalog item.</p>"
        },
        "Quantity":{
          "shape":"LineItemQuantity",
          "documentation":"<p>The quantity of a line item request.</p>"
        }
      },
      "documentation":"<p>Information about a line item request.</p>"
    },
    "LineItemRequestListDefinition":{
      "type":"list",
      "member":{"shape":"LineItemRequest"},
      "max":20,
      "min":1
    },
    "ListOutpostsInput":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"Token",
          "location":"querystring",
          "locationName":"NextToken"
        },
        "MaxResults":{
          "shape":"MaxResults1000",
          "location":"querystring",
          "locationName":"MaxResults"
        },
        "LifeCycleStatusFilter":{
          "shape":"LifeCycleStatusList",
          "documentation":"<p> A filter for the lifecycle status of the Outpost. </p> <p> Filter values are case sensitive. If you specify multiple values for a filter, the values are joined with an <code>OR</code>, and the request returns all results that match any of the specified values. </p>",
          "location":"querystring",
          "locationName":"LifeCycleStatusFilter"
        },
        "AvailabilityZoneFilter":{
          "shape":"AvailabilityZoneList",
          "documentation":"<p> A filter for the Availibility Zone (<code>us-east-1a</code>) of the Outpost. </p> <p> Filter values are case sensitive. If you specify multiple values for a filter, the values are joined with an <code>OR</code>, and the request returns all results that match any of the specified values. </p>",
          "location":"querystring",
          "locationName":"AvailabilityZoneFilter"
        },
        "AvailabilityZoneIdFilter":{
          "shape":"AvailabilityZoneIdList",
          "documentation":"<p> A filter for the AZ IDs (<code>use1-az1</code>) of the Outpost. </p> <p> Filter values are case sensitive. If you specify multiple values for a filter, the values are joined with an <code>OR</code>, and the request returns all results that match any of the specified values. </p>",
          "location":"querystring",
          "locationName":"AvailabilityZoneIdFilter"
        }
      }
    },
    "ListOutpostsOutput":{
      "type":"structure",
      "members":{
        "Outposts":{"shape":"outpostListDefinition"},
        "NextToken":{"shape":"Token"}
      }
    },
    "ListSitesInput":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"Token",
          "location":"querystring",
          "locationName":"NextToken"
        },
        "MaxResults":{
          "shape":"MaxResults1000",
          "location":"querystring",
          "locationName":"MaxResults"
        }
      }
    },
    "ListSitesOutput":{
      "type":"structure",
      "members":{
        "Sites":{"shape":"siteListDefinition"},
        "NextToken":{"shape":"Token"}
      }
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["ResourceArn"],
      "members":{
        "ResourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>",
          "location":"uri",
          "locationName":"ResourceArn"
        }
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "Tags":{
          "shape":"TagMap",
          "documentation":"<p>The resource tags.</p>"
        }
      }
    },
    "MaxResults1000":{
      "type":"integer",
      "documentation":"<p>The maximum page size.</p>",
      "box":true,
      "max":1000,
      "min":1
    },
    "NotFoundException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The specified request is not valid.</p>",
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "Order":{
      "type":"structure",
      "members":{
        "OutpostId":{
          "shape":"OutpostIdOnly",
          "documentation":"<p> The ID of the Outpost. </p>"
        },
        "OrderId":{
          "shape":"OrderId",
          "documentation":"<p>The ID of the order.</p>"
        },
        "Status":{
          "shape":"OrderStatus",
          "documentation":"<p>The status of the order</p>"
        },
        "LineItems":{
          "shape":"LineItemListDefinition",
          "documentation":"<p>The line items for the order</p>"
        },
        "PaymentOption":{
          "shape":"PaymentOption",
          "documentation":"<p>The payment option for the order.</p>"
        },
        "OrderSubmissionDate":{
          "shape":"ISO8601Timestamp",
          "documentation":"<p>The submission date for the order.</p>"
        },
        "OrderFulfilledDate":{
          "shape":"ISO8601Timestamp",
          "documentation":"<p>The fulfillment date of the order.</p>"
        }
      },
      "documentation":"<p>Information about an order.</p>"
    },
    "OrderId":{
      "type":"string",
      "max":20,
      "min":1,
      "pattern":"oo-[a-f0-9]{17}$"
    },
    "OrderStatus":{
      "type":"string",
      "enum":[
        "RECEIVED",
        "PENDING",
        "PROCESSING",
        "INSTALLING",
        "FULFILLED",
        "CANCELLED"
      ]
    },
    "Outpost":{
      "type":"structure",
      "members":{
        "OutpostId":{
          "shape":"OutpostId",
          "documentation":"<p> The ID of the Outpost. </p>"
        },
        "OwnerId":{"shape":"OwnerId"},
        "OutpostArn":{"shape":"OutpostArn"},
        "SiteId":{"shape":"SiteId"},
        "Name":{"shape":"OutpostName"},
        "Description":{"shape":"OutpostDescription"},
        "LifeCycleStatus":{"shape":"LifeCycleStatus"},
        "AvailabilityZone":{"shape":"AvailabilityZone"},
        "AvailabilityZoneId":{"shape":"AvailabilityZoneId"},
        "Tags":{
          "shape":"TagMap",
          "documentation":"<p>The Outpost tags.</p>"
        },
        "SiteArn":{"shape":"SiteArn"}
      },
      "documentation":"<p>Information about an Outpost.</p>"
    },
    "OutpostArn":{
      "type":"string",
      "documentation":"<p>The Amazon Resource Name (ARN) of the Outpost.</p>",
      "max":255,
      "min":1,
      "pattern":"^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$"
    },
    "OutpostDescription":{
      "type":"string",
      "documentation":"<p>The description of the Outpost.</p>",
      "max":1000,
      "min":0,
      "pattern":"^[\\S ]*$"
    },
    "OutpostId":{
      "type":"string",
      "max":180,
      "min":1,
      "pattern":"^(arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/)?op-[a-f0-9]{17}$"
    },
    "OutpostIdOnly":{
      "type":"string",
      "max":20,
      "min":1,
      "pattern":"^op-[a-f0-9]{17}$"
    },
    "OutpostIdentifier":{
      "type":"string",
      "max":180,
      "min":1,
      "pattern":"^(arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/)?op-[a-f0-9]{17}$"
    },
    "OutpostName":{
      "type":"string",
      "documentation":"<p>The name of the Outpost.</p>",
      "max":255,
      "min":1,
      "pattern":"^[\\S ]+$"
    },
    "OwnerId":{
      "type":"string",
      "documentation":"<p>The AWS account ID of the Outpost owner.</p>",
      "max":12,
      "min":12,
      "pattern":"\\d{12}"
    },
    "PaymentOption":{
      "type":"string",
      "enum":[
        "ALL_UPFRONT",
        "NO_UPFRONT",
        "PARTIAL_UPFRONT"
      ]
    },
    "PaymentTerm":{
      "type":"string",
      "enum":["THREE_YEARS"]
    },
    "ResourceType":{
      "type":"string",
      "enum":["OUTPOST"]
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>You have exceeded a service quota.</p>",
      "error":{"httpStatusCode":402},
      "exception":true
    },
    "Site":{
      "type":"structure",
      "members":{
        "SiteId":{"shape":"SiteId"},
        "AccountId":{"shape":"AccountId"},
        "Name":{"shape":"SiteName"},
        "Description":{"shape":"SiteDescription"},
        "Tags":{
          "shape":"TagMap",
          "documentation":"<p>The site tags.</p>"
        },
        "SiteArn":{"shape":"SiteArn"}
      },
      "documentation":"<p>Information about a site.</p>"
    },
    "SiteArn":{
      "type":"string",
      "documentation":"<p>The Amazon Resource Name (ARN) of the site.</p>",
      "max":255,
      "min":1,
      "pattern":"^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:site/(os-[a-f0-9]{17})$"
    },
    "SiteDescription":{
      "type":"string",
      "documentation":"<p>The description of the site.</p>",
      "max":1001,
      "min":1,
      "pattern":"^[\\S ]+$"
    },
    "SiteId":{
      "type":"string",
      "documentation":"<p>The ID of the site.</p>",
      "max":255,
      "min":1,
      "pattern":"^(arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:site/)?(os-[a-f0-9]{17})$"
    },
    "SiteName":{
      "type":"string",
      "documentation":"<p>The name of the site.</p>",
      "max":1000,
      "min":1,
      "pattern":"^[\\S ]+$"
    },
    "SkuCode":{
      "type":"string",
      "max":10,
      "min":1,
      "pattern":"OR-[A-Z0-9]{7}"
    },
    "Status":{
      "type":"string",
      "max":1000,
      "min":1,
      "pattern":"^[\\S ]+$"
    },
    "String":{
      "type":"string",
      "max":1000,
      "min":1,
      "pattern":"^[\\S \\n]+$"
    },
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"^(?!aws:)[a-zA-Z+-=._:/]+$"
    },
    "TagKeyList":{
      "type":"list",
      "member":{"shape":"TagKey"},
      "max":50,
      "min":1
    },
    "TagMap":{
      "type":"map",
      "key":{"shape":"TagKey"},
      "value":{"shape":"TagValue"},
      "max":50,
      "min":1
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "ResourceArn",
        "Tags"
      ],
      "members":{
        "ResourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>",
          "location":"uri",
          "locationName":"ResourceArn"
        },
        "Tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags to add to the resource.</p>"
        }
      }
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "TagValue":{
      "type":"string",
      "max":256,
      "pattern":"^[\\S \\n]+$"
    },
    "Token":{
      "type":"string",
      "documentation":"<p>The pagination token.</p>",
      "max":1005,
      "min":1,
      "pattern":"^(\\d+)##(\\S+)$"
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "ResourceArn",
        "TagKeys"
      ],
      "members":{
        "ResourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>",
          "location":"uri",
          "locationName":"ResourceArn"
        },
        "TagKeys":{
          "shape":"TagKeyList",
          "documentation":"<p>The tag keys.</p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "ValidationException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>A parameter is not valid.</p>",
      "error":{"httpStatusCode":400},
      "exception":true
    },
    "outpostListDefinition":{
      "type":"list",
      "member":{"shape":"Outpost"},
      "documentation":"<p>Information about the Outposts.</p>"
    },
    "siteListDefinition":{
      "type":"list",
      "member":{"shape":"Site"},
      "documentation":"<p>Information about the sites.</p>"
    }
  },
  "documentation":"<p>AWS Outposts is a fully managed service that extends AWS infrastructure, APIs, and tools to customer premises. By providing local access to AWS managed infrastructure, AWS Outposts enables customers to build and run applications on premises using the same programming interfaces as in AWS Regions, while using local compute and storage resources for lower latency and local data processing needs.</p>"
}
