{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2020-06-24",
    "endpointPrefix":"servicecatalog-appregistry",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceAbbreviation":"AppRegistry",
    "serviceFullName":"AWS Service Catalog App Registry",
    "serviceId":"Service Catalog AppRegistry",
    "signatureVersion":"v4",
    "signingName":"servicecatalog",
    "uid":"AWS242AppRegistry-2020-06-24"
  },
  "operations":{
    "AssociateAttributeGroup":{
      "name":"AssociateAttributeGroup",
      "http":{
        "method":"PUT",
        "requestUri":"/applications/{application}/attribute-groups/{attributeGroup}"
      },
      "input":{"shape":"AssociateAttributeGroupRequest"},
      "output":{"shape":"AssociateAttributeGroupResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"ServiceQuotaExceededException"}
      ],
      "documentation":"<p>Associates an attribute group with an application to augment the application's metadata with the group's attributes. This feature enables applications to be described with user-defined details that are machine-readable, such as third-party integrations.</p>"
    },
    "AssociateResource":{
      "name":"AssociateResource",
      "http":{
        "method":"PUT",
        "requestUri":"/applications/{application}/resources/{resourceType}/{resource}"
      },
      "input":{"shape":"AssociateResourceRequest"},
      "output":{"shape":"AssociateResourceResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"ConflictException"}
      ],
      "documentation":"<p>Associates a resource with an application. Both the resource and the application can be specified either by ID or name.</p>"
    },
    "CreateApplication":{
      "name":"CreateApplication",
      "http":{
        "method":"POST",
        "requestUri":"/applications",
        "responseCode":201
      },
      "input":{"shape":"CreateApplicationRequest"},
      "output":{"shape":"CreateApplicationResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a new application that is the top-level node in a hierarchy of related cloud resource abstractions.</p>"
    },
    "CreateAttributeGroup":{
      "name":"CreateAttributeGroup",
      "http":{
        "method":"POST",
        "requestUri":"/attribute-groups",
        "responseCode":201
      },
      "input":{"shape":"CreateAttributeGroupRequest"},
      "output":{"shape":"CreateAttributeGroupResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"ConflictException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Creates a new attribute group as a container for user-defined attributes. This feature enables users to have full control over their cloud application's metadata in a rich machine-readable format to facilitate integration with automated workflows and third-party tools.</p>"
    },
    "DeleteApplication":{
      "name":"DeleteApplication",
      "http":{
        "method":"DELETE",
        "requestUri":"/applications/{application}"
      },
      "input":{"shape":"DeleteApplicationRequest"},
      "output":{"shape":"DeleteApplicationResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes an application that is specified either by its application ID or name. All associated attribute groups and resources must be disassociated from it before deleting an application.</p>"
    },
    "DeleteAttributeGroup":{
      "name":"DeleteAttributeGroup",
      "http":{
        "method":"DELETE",
        "requestUri":"/attribute-groups/{attributeGroup}"
      },
      "input":{"shape":"DeleteAttributeGroupRequest"},
      "output":{"shape":"DeleteAttributeGroupResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Deletes an attribute group, specified either by its attribute group ID or name.</p>"
    },
    "DisassociateAttributeGroup":{
      "name":"DisassociateAttributeGroup",
      "http":{
        "method":"DELETE",
        "requestUri":"/applications/{application}/attribute-groups/{attributeGroup}"
      },
      "input":{"shape":"DisassociateAttributeGroupRequest"},
      "output":{"shape":"DisassociateAttributeGroupResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Disassociates an attribute group from an application to remove the extra attributes contained in the attribute group from the application's metadata. This operation reverts <code>AssociateAttributeGroup</code>.</p>"
    },
    "DisassociateResource":{
      "name":"DisassociateResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/applications/{application}/resources/{resourceType}/{resource}"
      },
      "input":{"shape":"DisassociateResourceRequest"},
      "output":{"shape":"DisassociateResourceResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Disassociates a resource from application. Both the resource and the application can be specified either by ID or name.</p>"
    },
    "GetApplication":{
      "name":"GetApplication",
      "http":{
        "method":"GET",
        "requestUri":"/applications/{application}"
      },
      "input":{"shape":"GetApplicationRequest"},
      "output":{"shape":"GetApplicationResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves metadata information about one of your applications. The application can be specified either by its unique ID or by its name (which is unique within one account in one region at a given point in time). Specify by ID in automated workflows if you want to make sure that the exact same application is returned or a <code>ResourceNotFoundException</code> is thrown, avoiding the ABA addressing problem.</p>"
    },
    "GetAttributeGroup":{
      "name":"GetAttributeGroup",
      "http":{
        "method":"GET",
        "requestUri":"/attribute-groups/{attributeGroup}"
      },
      "input":{"shape":"GetAttributeGroupRequest"},
      "output":{"shape":"GetAttributeGroupResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves an attribute group, either by its name or its ID. The attribute group can be specified either by its unique ID or by its name.</p>"
    },
    "ListApplications":{
      "name":"ListApplications",
      "http":{
        "method":"GET",
        "requestUri":"/applications"
      },
      "input":{"shape":"ListApplicationsRequest"},
      "output":{"shape":"ListApplicationsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Retrieves a list of all of your applications. Results are paginated.</p>",
      "idempotent":true
    },
    "ListAssociatedAttributeGroups":{
      "name":"ListAssociatedAttributeGroups",
      "http":{
        "method":"GET",
        "requestUri":"/applications/{application}/attribute-groups"
      },
      "input":{"shape":"ListAssociatedAttributeGroupsRequest"},
      "output":{"shape":"ListAssociatedAttributeGroupsResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists all attribute groups that are associated with specified application. Results are paginated.</p>",
      "idempotent":true
    },
    "ListAssociatedResources":{
      "name":"ListAssociatedResources",
      "http":{
        "method":"GET",
        "requestUri":"/applications/{application}/resources"
      },
      "input":{"shape":"ListAssociatedResourcesRequest"},
      "output":{"shape":"ListAssociatedResourcesResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists all resources that are associated with specified application. Results are paginated.</p>",
      "idempotent":true
    },
    "ListAttributeGroups":{
      "name":"ListAttributeGroups",
      "http":{
        "method":"GET",
        "requestUri":"/attribute-groups"
      },
      "input":{"shape":"ListAttributeGroupsRequest"},
      "output":{"shape":"ListAttributeGroupsResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists all attribute groups which you have access to. Results are paginated.</p>",
      "idempotent":true
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"GET",
        "requestUri":"/tags/{resourceArn}"
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Lists all of the tags on the resource.</p>"
    },
    "SyncResource":{
      "name":"SyncResource",
      "http":{
        "method":"POST",
        "requestUri":"/sync/{resourceType}/{resource}"
      },
      "input":{"shape":"SyncResourceRequest"},
      "output":{"shape":"SyncResourceResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"}
      ],
      "documentation":"<p>Syncs the resource with what is currently recorded in App registry. Specifically, the resource’s App registry system tags are synced with its associated application. The resource is removed if it is not associated with the application. The caller must have permissions to read and update the resource.</p>"
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags/{resourceArn}"
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Assigns one or more tags (key-value pairs) to the specified resource.</p> <p>Each tag consists of a key and an optional value. If a tag with the same key is already associated with the resource, this action updates its value.</p> <p>This operation returns an empty response if the call was successful.</p>"
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/tags/{resourceArn}"
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"ValidationException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Removes tags from a resource.</p> <p>This operation returns an empty response if the call was successful.</p>"
    },
    "UpdateApplication":{
      "name":"UpdateApplication",
      "http":{
        "method":"PATCH",
        "requestUri":"/applications/{application}"
      },
      "input":{"shape":"UpdateApplicationRequest"},
      "output":{"shape":"UpdateApplicationResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates an existing application with new attributes.</p>"
    },
    "UpdateAttributeGroup":{
      "name":"UpdateAttributeGroup",
      "http":{
        "method":"PATCH",
        "requestUri":"/attribute-groups/{attributeGroup}"
      },
      "input":{"shape":"UpdateAttributeGroupRequest"},
      "output":{"shape":"UpdateAttributeGroupResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"}
      ],
      "documentation":"<p>Updates an existing attribute group with new details. </p>"
    }
  },
  "shapes":{
    "Application":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ApplicationId",
          "documentation":"<p>The identifier of the application.</p>"
        },
        "arn":{
          "shape":"ApplicationArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the application across services.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the application. The name must be unique in the region in which you are creating the application.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the application.</p>"
        },
        "creationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The ISO-8601 formatted timestamp of the moment when the application was created.</p>"
        },
        "lastUpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p> The ISO-8601 formatted timestamp of the moment when the application was last updated.</p>"
        },
        "tags":{
          "shape":"Tags",
          "documentation":"<p>Key-value pairs you can use to associate with the application.</p>"
        }
      },
      "documentation":"<p>Represents a Service Catalog AppRegistry application that is the top-level node in a hierarchy of related cloud resource abstractions.</p>"
    },
    "ApplicationArn":{
      "type":"string",
      "pattern":"arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/applications/[a-z0-9]+"
    },
    "ApplicationId":{
      "type":"string",
      "pattern":"[a-z0-9]{12}"
    },
    "ApplicationSpecifier":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"\\w+"
    },
    "ApplicationSummaries":{
      "type":"list",
      "member":{"shape":"ApplicationSummary"}
    },
    "ApplicationSummary":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ApplicationId",
          "documentation":"<p>The identifier of the application.</p>"
        },
        "arn":{
          "shape":"ApplicationArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the application across services.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the application. The name must be unique in the region in which you are creating the application.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the application.</p>"
        },
        "creationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The ISO-8601 formatted timestamp of the moment when the application was created.</p>"
        },
        "lastUpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p> The ISO-8601 formatted timestamp of the moment when the application was last updated.</p>"
        }
      },
      "documentation":"<p>Summary of a Service Catalog AppRegistry application.</p>"
    },
    "Arn":{
      "type":"string",
      "max":1600,
      "min":1,
      "pattern":"arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)"
    },
    "AssociateAttributeGroupRequest":{
      "type":"structure",
      "required":[
        "application",
        "attributeGroup"
      ],
      "members":{
        "application":{
          "shape":"ApplicationSpecifier",
          "documentation":"<p>The name or ID of the application.</p>",
          "location":"uri",
          "locationName":"application"
        },
        "attributeGroup":{
          "shape":"AttributeGroupSpecifier",
          "documentation":"<p>The name or ID of the attribute group that holds the attributes to describe the application.</p>",
          "location":"uri",
          "locationName":"attributeGroup"
        }
      }
    },
    "AssociateAttributeGroupResponse":{
      "type":"structure",
      "members":{
        "applicationArn":{
          "shape":"ApplicationArn",
          "documentation":"<p>The Amazon resource name (ARN) of the application that was augmented with attributes.</p>"
        },
        "attributeGroupArn":{
          "shape":"AttributeGroupArn",
          "documentation":"<p>The Amazon resource name (ARN) of the attribute group that contains the application's new attributes.</p>"
        }
      }
    },
    "AssociateResourceRequest":{
      "type":"structure",
      "required":[
        "application",
        "resourceType",
        "resource"
      ],
      "members":{
        "application":{
          "shape":"ApplicationSpecifier",
          "documentation":"<p>The name or ID of the application.</p>",
          "location":"uri",
          "locationName":"application"
        },
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of resource of which the application will be associated.</p>",
          "location":"uri",
          "locationName":"resourceType"
        },
        "resource":{
          "shape":"ResourceSpecifier",
          "documentation":"<p>The name or ID of the resource of which the application will be associated.</p>",
          "location":"uri",
          "locationName":"resource"
        }
      }
    },
    "AssociateResourceResponse":{
      "type":"structure",
      "members":{
        "applicationArn":{
          "shape":"ApplicationArn",
          "documentation":"<p>The Amazon resource name (ARN) of the application that was augmented with attributes.</p>"
        },
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the resource.</p>"
        }
      }
    },
    "AssociationCount":{
      "type":"integer",
      "min":0
    },
    "AttributeGroup":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"AttributeGroupId",
          "documentation":"<p>The globally unique attribute group identifier of the attribute group.</p>"
        },
        "arn":{
          "shape":"AttributeGroupArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the attribute group across services.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the attribute group.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the attribute group that the user provides.</p>"
        },
        "creationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The ISO-8601 formatted timestamp of the moment the attribute group was created.</p>"
        },
        "lastUpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The ISO-8601 formatted timestamp of the moment the attribute group was last updated. This time is the same as the creationTime for a newly created attribute group.</p>"
        },
        "tags":{
          "shape":"Tags",
          "documentation":"<p>Key-value pairs you can use to associate with the attribute group.</p>"
        }
      },
      "documentation":"<p>Represents a Service Catalog AppRegistry attribute group that is rich metadata which describes an application and its components.</p>"
    },
    "AttributeGroupArn":{
      "type":"string",
      "pattern":"arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/attribute-groups/[a-z0-9]+"
    },
    "AttributeGroupId":{
      "type":"string",
      "max":100,
      "min":1,
      "pattern":"[a-z0-9]{12}"
    },
    "AttributeGroupIds":{
      "type":"list",
      "member":{"shape":"AttributeGroupId"}
    },
    "AttributeGroupSpecifier":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"\\w+"
    },
    "AttributeGroupSummaries":{
      "type":"list",
      "member":{"shape":"AttributeGroupSummary"}
    },
    "AttributeGroupSummary":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"AttributeGroupId",
          "documentation":"<p>The globally unique attribute group identifier of the attribute group.</p>"
        },
        "arn":{
          "shape":"AttributeGroupArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the attribute group across services.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the attribute group.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the attribute group that the user provides.</p>"
        },
        "creationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The ISO-8601 formatted timestamp of the moment the attribute group was created.</p>"
        },
        "lastUpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The ISO-8601 formatted timestamp of the moment the attribute group was last updated. This time is the same as the creationTime for a newly created attribute group.</p>"
        }
      },
      "documentation":"<p>Summary of a Service Catalog AppRegistry attribute group.</p>"
    },
    "Attributes":{
      "type":"string",
      "max":8000,
      "min":1,
      "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+"
    },
    "ClientToken":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"[a-zA-Z0-9][a-zA-Z0-9_-]*"
    },
    "ConflictException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>There was a conflict when processing the request (for example, a resource with the given name already exists within the account).</p>",
      "error":{"httpStatusCode":409},
      "exception":true
    },
    "CreateApplicationRequest":{
      "type":"structure",
      "required":[
        "name",
        "clientToken"
      ],
      "members":{
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the application. The name must be unique in the region in which you are creating the application.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the application.</p>"
        },
        "tags":{
          "shape":"Tags",
          "documentation":"<p>Key-value pairs you can use to associate with the application.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique identifier that you provide to ensure idempotency. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails.</p>",
          "idempotencyToken":true
        }
      }
    },
    "CreateApplicationResponse":{
      "type":"structure",
      "members":{
        "application":{
          "shape":"Application",
          "documentation":"<p>Information about the application.</p>"
        }
      }
    },
    "CreateAttributeGroupRequest":{
      "type":"structure",
      "required":[
        "name",
        "attributes",
        "clientToken"
      ],
      "members":{
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the attribute group.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the attribute group that the user provides.</p>"
        },
        "attributes":{
          "shape":"Attributes",
          "documentation":"<p>A JSON string in the form of nested key-value pairs that represent the attributes in the group and describes an application and its components.</p>"
        },
        "tags":{
          "shape":"Tags",
          "documentation":"<p>Key-value pairs you can use to associate with the attribute group.</p>"
        },
        "clientToken":{
          "shape":"ClientToken",
          "documentation":"<p>A unique identifier that you provide to ensure idempotency. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails.</p>",
          "idempotencyToken":true
        }
      }
    },
    "CreateAttributeGroupResponse":{
      "type":"structure",
      "members":{
        "attributeGroup":{
          "shape":"AttributeGroup",
          "documentation":"<p>Information about the attribute group.</p>"
        }
      }
    },
    "DeleteApplicationRequest":{
      "type":"structure",
      "required":["application"],
      "members":{
        "application":{
          "shape":"ApplicationSpecifier",
          "documentation":"<p>The name or ID of the application.</p>",
          "location":"uri",
          "locationName":"application"
        }
      }
    },
    "DeleteApplicationResponse":{
      "type":"structure",
      "members":{
        "application":{
          "shape":"ApplicationSummary",
          "documentation":"<p>Information about the deleted application.</p>"
        }
      }
    },
    "DeleteAttributeGroupRequest":{
      "type":"structure",
      "required":["attributeGroup"],
      "members":{
        "attributeGroup":{
          "shape":"AttributeGroupSpecifier",
          "documentation":"<p>The name or ID of the attribute group that holds the attributes to describe the application.</p>",
          "location":"uri",
          "locationName":"attributeGroup"
        }
      }
    },
    "DeleteAttributeGroupResponse":{
      "type":"structure",
      "members":{
        "attributeGroup":{
          "shape":"AttributeGroupSummary",
          "documentation":"<p>Information about the deleted attribute group.</p>"
        }
      }
    },
    "Description":{
      "type":"string",
      "max":1024
    },
    "DisassociateAttributeGroupRequest":{
      "type":"structure",
      "required":[
        "application",
        "attributeGroup"
      ],
      "members":{
        "application":{
          "shape":"ApplicationSpecifier",
          "documentation":"<p>The name or ID of the application.</p>",
          "location":"uri",
          "locationName":"application"
        },
        "attributeGroup":{
          "shape":"AttributeGroupSpecifier",
          "documentation":"<p>The name or ID of the attribute group that holds the attributes to describe the application.</p>",
          "location":"uri",
          "locationName":"attributeGroup"
        }
      }
    },
    "DisassociateAttributeGroupResponse":{
      "type":"structure",
      "members":{
        "applicationArn":{
          "shape":"ApplicationArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the application.</p>"
        },
        "attributeGroupArn":{
          "shape":"AttributeGroupArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the attribute group.</p>"
        }
      }
    },
    "DisassociateResourceRequest":{
      "type":"structure",
      "required":[
        "application",
        "resourceType",
        "resource"
      ],
      "members":{
        "application":{
          "shape":"ApplicationSpecifier",
          "documentation":"<p>The name or ID of the application.</p>",
          "location":"uri",
          "locationName":"application"
        },
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of the resource that is being disassociated.</p>",
          "location":"uri",
          "locationName":"resourceType"
        },
        "resource":{
          "shape":"ResourceSpecifier",
          "documentation":"<p>The name or ID of the resource.</p>",
          "location":"uri",
          "locationName":"resource"
        }
      }
    },
    "DisassociateResourceResponse":{
      "type":"structure",
      "members":{
        "applicationArn":{
          "shape":"ApplicationArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the application.</p>"
        },
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the resource.</p>"
        }
      }
    },
    "GetApplicationRequest":{
      "type":"structure",
      "required":["application"],
      "members":{
        "application":{
          "shape":"ApplicationSpecifier",
          "documentation":"<p>The name or ID of the application.</p>",
          "location":"uri",
          "locationName":"application"
        }
      }
    },
    "GetApplicationResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"ApplicationId",
          "documentation":"<p>The identifier of the application.</p>"
        },
        "arn":{
          "shape":"ApplicationArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the application across services.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the application. The name must be unique in the region in which you are creating the application.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the application.</p>"
        },
        "creationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The ISO-8601 formatted timestamp of the moment when the application was created.</p>"
        },
        "lastUpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The ISO-8601 formatted timestamp of the moment when the application was last updated.</p>"
        },
        "associatedResourceCount":{
          "shape":"AssociationCount",
          "documentation":"<p>The number of top-level resources that were registered as part of this application.</p>"
        },
        "tags":{
          "shape":"Tags",
          "documentation":"<p>Key-value pairs associated with the application.</p>"
        }
      }
    },
    "GetAttributeGroupRequest":{
      "type":"structure",
      "required":["attributeGroup"],
      "members":{
        "attributeGroup":{
          "shape":"AttributeGroupSpecifier",
          "documentation":"<p>The name or ID of the attribute group that holds the attributes to describe the application.</p>",
          "location":"uri",
          "locationName":"attributeGroup"
        }
      }
    },
    "GetAttributeGroupResponse":{
      "type":"structure",
      "members":{
        "id":{
          "shape":"AttributeGroupId",
          "documentation":"<p>The identifier of the attribute group.</p>"
        },
        "arn":{
          "shape":"AttributeGroupArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the attribute group across services.</p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The name of the attribute group.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the attribute group that the user provides.</p>"
        },
        "attributes":{
          "shape":"Attributes",
          "documentation":"<p>A JSON string in the form of nested key-value pairs that represent the attributes in the group and describes an application and its components.</p>"
        },
        "creationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The ISO-8601 formatted timestamp of the moment the attribute group was created.</p>"
        },
        "lastUpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The ISO-8601 formatted timestamp of the moment the attribute group was last updated. This time is the same as the creationTime for a newly created attribute group.</p>"
        },
        "tags":{
          "shape":"Tags",
          "documentation":"<p>Key-value pairs associated with the attribute group.</p>"
        }
      }
    },
    "InternalServerException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The service is experiencing internal problems.</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true
    },
    "ListApplicationsRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to use to get the next page of results after a previous API call. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The upper bound of the number of results to return (cannot exceed 25). If this parameter is omitted, it defaults to 25. This value is optional.</p>",
          "box":true,
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListApplicationsResponse":{
      "type":"structure",
      "members":{
        "applications":{
          "shape":"ApplicationSummaries",
          "documentation":"<p>This list of applications.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to use to get the next page of results after a previous API call. </p>"
        }
      }
    },
    "ListAssociatedAttributeGroupsRequest":{
      "type":"structure",
      "required":["application"],
      "members":{
        "application":{
          "shape":"ApplicationSpecifier",
          "documentation":"<p>The name or ID of the application.</p>",
          "location":"uri",
          "locationName":"application"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to use to get the next page of results after a previous API call. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The upper bound of the number of results to return (cannot exceed 25). If this parameter is omitted, it defaults to 25. This value is optional.</p>",
          "box":true,
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListAssociatedAttributeGroupsResponse":{
      "type":"structure",
      "members":{
        "attributeGroups":{
          "shape":"AttributeGroupIds",
          "documentation":"<p>A list of attribute group IDs.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to use to get the next page of results after a previous API call. </p>"
        }
      }
    },
    "ListAssociatedResourcesRequest":{
      "type":"structure",
      "required":["application"],
      "members":{
        "application":{
          "shape":"ApplicationSpecifier",
          "documentation":"<p>The name or ID of the application.</p>",
          "location":"uri",
          "locationName":"application"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to use to get the next page of results after a previous API call. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The upper bound of the number of results to return (cannot exceed 25). If this parameter is omitted, it defaults to 25. This value is optional.</p>",
          "box":true,
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListAssociatedResourcesResponse":{
      "type":"structure",
      "members":{
        "resources":{
          "shape":"Resources",
          "documentation":"<p>Information about the resources.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to use to get the next page of results after a previous API call. </p>"
        }
      }
    },
    "ListAttributeGroupsRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to use to get the next page of results after a previous API call. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p>The upper bound of the number of results to return (cannot exceed 25). If this parameter is omitted, it defaults to 25. This value is optional.</p>",
          "box":true,
          "location":"querystring",
          "locationName":"maxResults"
        }
      }
    },
    "ListAttributeGroupsResponse":{
      "type":"structure",
      "members":{
        "attributeGroups":{
          "shape":"AttributeGroupSummaries",
          "documentation":"<p>This list of attribute groups.</p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p>The token to use to get the next page of results after a previous API call. </p>"
        }
      }
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "tags":{
          "shape":"Tags",
          "documentation":"<p>The tags on the resource.</p>"
        }
      }
    },
    "MaxResults":{
      "type":"integer",
      "max":25,
      "min":1
    },
    "Name":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"\\w+"
    },
    "NextToken":{
      "type":"string",
      "max":2024,
      "min":1,
      "pattern":"[A-Za-z0-9+/=]+"
    },
    "ResourceInfo":{
      "type":"structure",
      "members":{
        "name":{
          "shape":"ResourceSpecifier",
          "documentation":"<p>The name of the resource.</p>"
        },
        "arn":{
          "shape":"StackArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the resource across services.</p>"
        }
      },
      "documentation":"<p>Information about the resource.</p>"
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The specified resource does not exist.</p>",
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "ResourceSpecifier":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"\\S+"
    },
    "ResourceType":{
      "type":"string",
      "enum":["CFN_STACK"]
    },
    "Resources":{
      "type":"list",
      "member":{"shape":"ResourceInfo"}
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The maximum number of resources per account has been reached.</p>",
      "error":{"httpStatusCode":402},
      "exception":true
    },
    "StackArn":{
      "type":"string",
      "pattern":"arn:aws[-a-z]*:cloudformation:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:stack/[a-zA-Z][-A-Za-z0-9]{0,127}/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}"
    },
    "String":{"type":"string"},
    "SyncAction":{
      "type":"string",
      "enum":[
        "START_SYNC",
        "NO_ACTION"
      ]
    },
    "SyncResourceRequest":{
      "type":"structure",
      "required":[
        "resourceType",
        "resource"
      ],
      "members":{
        "resourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of resource of which the application will be associated.</p>",
          "location":"uri",
          "locationName":"resourceType"
        },
        "resource":{
          "shape":"ResourceSpecifier",
          "documentation":"<p>An entity you can work with and specify with a name or ID. Examples include an Amazon EC2 instance, an AWS CloudFormation stack, or an Amazon S3 bucket.</p>",
          "location":"uri",
          "locationName":"resource"
        }
      }
    },
    "SyncResourceResponse":{
      "type":"structure",
      "members":{
        "applicationArn":{
          "shape":"ApplicationArn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the application.</p>"
        },
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the resource.</p>"
        },
        "actionTaken":{
          "shape":"SyncAction",
          "documentation":"<p>The results of the output if an application is associated with an ARN value, which could be <code>syncStarted</code> or None.</p>"
        }
      }
    },
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"(?!aws:)[a-zA-Z+-=._:/]+"
    },
    "TagKeys":{
      "type":"list",
      "member":{"shape":"TagKey"},
      "max":50,
      "min":0
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tags"
      ],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tags":{
          "shape":"Tags",
          "documentation":"<p>The new or modified tags for the resource.</p>"
        }
      }
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "TagValue":{
      "type":"string",
      "max":256,
      "pattern":"[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*"
    },
    "Tags":{
      "type":"map",
      "key":{"shape":"TagKey"},
      "value":{"shape":"TagValue"},
      "max":50,
      "min":0
    },
    "Timestamp":{
      "type":"timestamp",
      "timestampFormat":"iso8601"
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tagKeys"
      ],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The Amazon resource name (ARN) that specifies the resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tagKeys":{
          "shape":"TagKeys",
          "documentation":"<p>A list of the tag keys to remove from the specified resource.</p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateApplicationRequest":{
      "type":"structure",
      "required":["application"],
      "members":{
        "application":{
          "shape":"ApplicationSpecifier",
          "documentation":"<p>The name or ID of the application that will be updated.</p>",
          "location":"uri",
          "locationName":"application"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The new name of the application. The name must be unique in the region in which you are updating the application.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The new description of the application.</p>"
        }
      }
    },
    "UpdateApplicationResponse":{
      "type":"structure",
      "members":{
        "application":{
          "shape":"Application",
          "documentation":"<p>The updated information of the application.</p>"
        }
      }
    },
    "UpdateAttributeGroupRequest":{
      "type":"structure",
      "required":["attributeGroup"],
      "members":{
        "attributeGroup":{
          "shape":"AttributeGroupSpecifier",
          "documentation":"<p>The name or ID of the attribute group that holds the attributes to describe the application.</p>",
          "location":"uri",
          "locationName":"attributeGroup"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p>The new name of the attribute group. The name must be unique in the region in which you are updating the attribute group.</p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p>The description of the attribute group that the user provides.</p>"
        },
        "attributes":{
          "shape":"Attributes",
          "documentation":"<p>A JSON string in the form of nested key-value pairs that represent the attributes in the group and describes an application and its components.</p>"
        }
      }
    },
    "UpdateAttributeGroupResponse":{
      "type":"structure",
      "members":{
        "attributeGroup":{
          "shape":"AttributeGroup",
          "documentation":"<p>The updated information of the attribute group.</p>"
        }
      }
    },
    "ValidationException":{
      "type":"structure",
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The request has invalid or missing parameters.</p>",
      "error":{"httpStatusCode":400},
      "exception":true
    }
  },
  "documentation":"<p> AWS Service Catalog AppRegistry enables organizations to understand the application context of their AWS resources. AppRegistry provides a repository of your applications, their resources, and the application metadata that you use within your enterprise.</p>"
}
