{
  "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":{
    "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>"
    },
    "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>List the Outposts for your AWS account.</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> <p>You must specify <code>AvailabilityZone</code> or <code>AvailabilityZoneId</code>.</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> <p>You must specify <code>AvailabilityZone</code> or <code>AvailabilityZoneId</code>.</p>",
      "max":255,
      "min":1,
      "pattern":"^[a-zA-Z]+\\d-[a-zA-Z]+\\d$"
    },
    "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
    },
    "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",
          "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",
          "location":"uri",
          "locationName":"OutpostId"
        }
      }
    },
    "GetOutpostInstanceTypesInput":{
      "type":"structure",
      "required":["OutpostId"],
      "members":{
        "OutpostId":{
          "shape":"OutpostId",
          "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"},
        "OutpostArn":{"shape":"OutpostArn"}
      }
    },
    "GetOutpostOutput":{
      "type":"structure",
      "members":{
        "Outpost":{"shape":"Outpost"}
      }
    },
    "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>"
    },
    "ListOutpostsInput":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"Token",
          "location":"querystring",
          "locationName":"NextToken"
        },
        "MaxResults":{
          "shape":"MaxResults1000",
          "location":"querystring",
          "locationName":"MaxResults"
        }
      }
    },
    "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
    },
    "Outpost":{
      "type":"structure",
      "members":{
        "OutpostId":{"shape":"OutpostId"},
        "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",
      "documentation":"<p>The ID of the Outpost.</p>",
      "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}"
    },
    "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 ]+$"
    },
    "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>"
}
