{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2017-07-25",
    "endpointPrefix":"amplify",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceAbbreviation":"Amplify",
    "serviceFullName":"AWS Amplify",
    "serviceId":"Amplify",
    "signatureVersion":"v4",
    "signingName":"amplify",
    "uid":"amplify-2017-07-25"
  },
  "operations":{
    "CreateApp":{
      "name":"CreateApp",
      "http":{
        "method":"POST",
        "requestUri":"/apps"
      },
      "input":{"shape":"CreateAppRequest"},
      "output":{"shape":"CreateAppResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"LimitExceededException"},
        {"shape":"DependentServiceFailureException"}
      ],
      "documentation":"<p> Creates a new Amplify App. </p>"
    },
    "CreateBranch":{
      "name":"CreateBranch",
      "http":{
        "method":"POST",
        "requestUri":"/apps/{appId}/branches"
      },
      "input":{"shape":"CreateBranchRequest"},
      "output":{"shape":"CreateBranchResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"LimitExceededException"},
        {"shape":"DependentServiceFailureException"}
      ],
      "documentation":"<p> Creates a new Branch for an Amplify App. </p>"
    },
    "CreateDeployment":{
      "name":"CreateDeployment",
      "http":{
        "method":"POST",
        "requestUri":"/apps/{appId}/branches/{branchName}/deployments"
      },
      "input":{"shape":"CreateDeploymentRequest"},
      "output":{"shape":"CreateDeploymentResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p> Create a deployment for manual deploy apps. (Apps are not connected to repository) </p>"
    },
    "CreateDomainAssociation":{
      "name":"CreateDomainAssociation",
      "http":{
        "method":"POST",
        "requestUri":"/apps/{appId}/domains"
      },
      "input":{"shape":"CreateDomainAssociationRequest"},
      "output":{"shape":"CreateDomainAssociationResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"LimitExceededException"},
        {"shape":"DependentServiceFailureException"}
      ],
      "documentation":"<p> Create a new DomainAssociation on an App </p>"
    },
    "CreateWebhook":{
      "name":"CreateWebhook",
      "http":{
        "method":"POST",
        "requestUri":"/apps/{appId}/webhooks"
      },
      "input":{"shape":"CreateWebhookRequest"},
      "output":{"shape":"CreateWebhookResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"LimitExceededException"},
        {"shape":"DependentServiceFailureException"}
      ],
      "documentation":"<p> Create a new webhook on an App. </p>"
    },
    "DeleteApp":{
      "name":"DeleteApp",
      "http":{
        "method":"DELETE",
        "requestUri":"/apps/{appId}"
      },
      "input":{"shape":"DeleteAppRequest"},
      "output":{"shape":"DeleteAppResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"NotFoundException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"DependentServiceFailureException"}
      ],
      "documentation":"<p> Delete an existing Amplify App by appId. </p>"
    },
    "DeleteBranch":{
      "name":"DeleteBranch",
      "http":{
        "method":"DELETE",
        "requestUri":"/apps/{appId}/branches/{branchName}"
      },
      "input":{"shape":"DeleteBranchRequest"},
      "output":{"shape":"DeleteBranchResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"DependentServiceFailureException"}
      ],
      "documentation":"<p> Deletes a branch for an Amplify App. </p>"
    },
    "DeleteDomainAssociation":{
      "name":"DeleteDomainAssociation",
      "http":{
        "method":"DELETE",
        "requestUri":"/apps/{appId}/domains/{domainName}"
      },
      "input":{"shape":"DeleteDomainAssociationRequest"},
      "output":{"shape":"DeleteDomainAssociationResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"DependentServiceFailureException"}
      ],
      "documentation":"<p> Deletes a DomainAssociation. </p>"
    },
    "DeleteJob":{
      "name":"DeleteJob",
      "http":{
        "method":"DELETE",
        "requestUri":"/apps/{appId}/branches/{branchName}/jobs/{jobId}"
      },
      "input":{"shape":"DeleteJobRequest"},
      "output":{"shape":"DeleteJobResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"NotFoundException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p> Delete a job, for an Amplify branch, part of Amplify App. </p>"
    },
    "DeleteWebhook":{
      "name":"DeleteWebhook",
      "http":{
        "method":"DELETE",
        "requestUri":"/webhooks/{webhookId}"
      },
      "input":{"shape":"DeleteWebhookRequest"},
      "output":{"shape":"DeleteWebhookResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"NotFoundException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p> Deletes a webhook. </p>"
    },
    "GetApp":{
      "name":"GetApp",
      "http":{
        "method":"GET",
        "requestUri":"/apps/{appId}"
      },
      "input":{"shape":"GetAppRequest"},
      "output":{"shape":"GetAppResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"NotFoundException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p> Retrieves an existing Amplify App by appId. </p>"
    },
    "GetBranch":{
      "name":"GetBranch",
      "http":{
        "method":"GET",
        "requestUri":"/apps/{appId}/branches/{branchName}"
      },
      "input":{"shape":"GetBranchRequest"},
      "output":{"shape":"GetBranchResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p> Retrieves a branch for an Amplify App. </p>"
    },
    "GetDomainAssociation":{
      "name":"GetDomainAssociation",
      "http":{
        "method":"GET",
        "requestUri":"/apps/{appId}/domains/{domainName}"
      },
      "input":{"shape":"GetDomainAssociationRequest"},
      "output":{"shape":"GetDomainAssociationResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p> Retrieves domain info that corresponds to an appId and domainName. </p>"
    },
    "GetJob":{
      "name":"GetJob",
      "http":{
        "method":"GET",
        "requestUri":"/apps/{appId}/branches/{branchName}/jobs/{jobId}"
      },
      "input":{"shape":"GetJobRequest"},
      "output":{"shape":"GetJobResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"NotFoundException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p> Get a job for a branch, part of an Amplify App. </p>"
    },
    "GetWebhook":{
      "name":"GetWebhook",
      "http":{
        "method":"GET",
        "requestUri":"/webhooks/{webhookId}"
      },
      "input":{"shape":"GetWebhookRequest"},
      "output":{"shape":"GetWebhookResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"NotFoundException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p> Retrieves webhook info that corresponds to a webhookId. </p>"
    },
    "ListApps":{
      "name":"ListApps",
      "http":{
        "method":"GET",
        "requestUri":"/apps"
      },
      "input":{"shape":"ListAppsRequest"},
      "output":{"shape":"ListAppsResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p> Lists existing Amplify Apps. </p>"
    },
    "ListBranches":{
      "name":"ListBranches",
      "http":{
        "method":"GET",
        "requestUri":"/apps/{appId}/branches"
      },
      "input":{"shape":"ListBranchesRequest"},
      "output":{"shape":"ListBranchesResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p> Lists branches for an Amplify App. </p>"
    },
    "ListDomainAssociations":{
      "name":"ListDomainAssociations",
      "http":{
        "method":"GET",
        "requestUri":"/apps/{appId}/domains"
      },
      "input":{"shape":"ListDomainAssociationsRequest"},
      "output":{"shape":"ListDomainAssociationsResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p> List domains with an app </p>"
    },
    "ListJobs":{
      "name":"ListJobs",
      "http":{
        "method":"GET",
        "requestUri":"/apps/{appId}/branches/{branchName}/jobs"
      },
      "input":{"shape":"ListJobsRequest"},
      "output":{"shape":"ListJobsResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p> List Jobs for a branch, part of an Amplify App. </p>"
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"GET",
        "requestUri":"/tags/{resourceArn}"
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"BadRequestException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p> List tags for resource. </p>"
    },
    "ListWebhooks":{
      "name":"ListWebhooks",
      "http":{
        "method":"GET",
        "requestUri":"/apps/{appId}/webhooks"
      },
      "input":{"shape":"ListWebhooksRequest"},
      "output":{"shape":"ListWebhooksResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p> List webhooks with an app. </p>"
    },
    "StartDeployment":{
      "name":"StartDeployment",
      "http":{
        "method":"POST",
        "requestUri":"/apps/{appId}/branches/{branchName}/deployments/start"
      },
      "input":{"shape":"StartDeploymentRequest"},
      "output":{"shape":"StartDeploymentResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"NotFoundException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p> Start a deployment for manual deploy apps. (Apps are not connected to repository) </p>"
    },
    "StartJob":{
      "name":"StartJob",
      "http":{
        "method":"POST",
        "requestUri":"/apps/{appId}/branches/{branchName}/jobs"
      },
      "input":{"shape":"StartJobRequest"},
      "output":{"shape":"StartJobResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"NotFoundException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p> Starts a new job for a branch, part of an Amplify App. </p>"
    },
    "StopJob":{
      "name":"StopJob",
      "http":{
        "method":"DELETE",
        "requestUri":"/apps/{appId}/branches/{branchName}/jobs/{jobId}/stop"
      },
      "input":{"shape":"StopJobRequest"},
      "output":{"shape":"StopJobResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"},
        {"shape":"NotFoundException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p> Stop a job that is in progress, for an Amplify branch, part of Amplify App. </p>"
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags/{resourceArn}"
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"BadRequestException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p> Tag resource with tag key and value. </p>"
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/tags/{resourceArn}"
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"InternalFailureException"},
        {"shape":"BadRequestException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p> Untag resource with resourceArn. </p>"
    },
    "UpdateApp":{
      "name":"UpdateApp",
      "http":{
        "method":"POST",
        "requestUri":"/apps/{appId}"
      },
      "input":{"shape":"UpdateAppRequest"},
      "output":{"shape":"UpdateAppResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"NotFoundException"},
        {"shape":"UnauthorizedException"},
        {"shape":"InternalFailureException"}
      ],
      "documentation":"<p> Updates an existing Amplify App. </p>"
    },
    "UpdateBranch":{
      "name":"UpdateBranch",
      "http":{
        "method":"POST",
        "requestUri":"/apps/{appId}/branches/{branchName}"
      },
      "input":{"shape":"UpdateBranchRequest"},
      "output":{"shape":"UpdateBranchResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"DependentServiceFailureException"}
      ],
      "documentation":"<p> Updates a branch for an Amplify App. </p>"
    },
    "UpdateDomainAssociation":{
      "name":"UpdateDomainAssociation",
      "http":{
        "method":"POST",
        "requestUri":"/apps/{appId}/domains/{domainName}"
      },
      "input":{"shape":"UpdateDomainAssociationRequest"},
      "output":{"shape":"UpdateDomainAssociationResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"DependentServiceFailureException"}
      ],
      "documentation":"<p> Create a new DomainAssociation on an App </p>"
    },
    "UpdateWebhook":{
      "name":"UpdateWebhook",
      "http":{
        "method":"POST",
        "requestUri":"/webhooks/{webhookId}"
      },
      "input":{"shape":"UpdateWebhookRequest"},
      "output":{"shape":"UpdateWebhookResult"},
      "errors":[
        {"shape":"BadRequestException"},
        {"shape":"UnauthorizedException"},
        {"shape":"NotFoundException"},
        {"shape":"InternalFailureException"},
        {"shape":"DependentServiceFailureException"}
      ],
      "documentation":"<p> Update a webhook. </p>"
    }
  },
  "shapes":{
    "AccessToken":{
      "type":"string",
      "max":255,
      "min":1
    },
    "ActiveJobId":{
      "type":"string",
      "max":1000
    },
    "App":{
      "type":"structure",
      "required":[
        "appId",
        "appArn",
        "name",
        "description",
        "repository",
        "platform",
        "createTime",
        "updateTime",
        "environmentVariables",
        "defaultDomain",
        "enableBranchAutoBuild",
        "enableBasicAuth"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for the Amplify App. </p>"
        },
        "appArn":{
          "shape":"AppArn",
          "documentation":"<p> ARN for the Amplify App. </p>"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p> Name for the Amplify App. </p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p> Tag for Amplify App. </p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p> Description for the Amplify App. </p>"
        },
        "repository":{
          "shape":"Repository",
          "documentation":"<p> Repository for the Amplify App. </p>"
        },
        "platform":{
          "shape":"Platform",
          "documentation":"<p> Platform for the Amplify App. </p>"
        },
        "createTime":{
          "shape":"CreateTime",
          "documentation":"<p> Create date / time for the Amplify App. </p>"
        },
        "updateTime":{
          "shape":"UpdateTime",
          "documentation":"<p> Update date / time for the Amplify App. </p>"
        },
        "iamServiceRoleArn":{
          "shape":"ServiceRoleArn",
          "documentation":"<p> IAM service role ARN for the Amplify App. </p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariables",
          "documentation":"<p> Environment Variables for the Amplify App. </p>"
        },
        "defaultDomain":{
          "shape":"DefaultDomain",
          "documentation":"<p> Default domain for the Amplify App. </p>"
        },
        "enableBranchAutoBuild":{
          "shape":"EnableBranchAutoBuild",
          "documentation":"<p> Enables auto-building of branches for the Amplify App. </p>"
        },
        "enableBasicAuth":{
          "shape":"EnableBasicAuth",
          "documentation":"<p> Enables Basic Authorization for branches for the Amplify App. </p>"
        },
        "basicAuthCredentials":{
          "shape":"BasicAuthCredentials",
          "documentation":"<p> Basic Authorization credentials for branches for the Amplify App. </p>"
        },
        "customRules":{
          "shape":"CustomRules",
          "documentation":"<p> Custom redirect / rewrite rules for the Amplify App. </p>"
        },
        "productionBranch":{
          "shape":"ProductionBranch",
          "documentation":"<p> Structure with Production Branch information. </p>"
        },
        "buildSpec":{
          "shape":"BuildSpec",
          "documentation":"<p> BuildSpec content for Amplify App. </p>"
        },
        "enableAutoBranchCreation":{
          "shape":"EnableAutoBranchCreation",
          "documentation":"<p> Enables automated branch creation for the Amplify App. </p>"
        },
        "autoBranchCreationPatterns":{
          "shape":"AutoBranchCreationPatterns",
          "documentation":"<p> Automated branch creation glob patterns for the Amplify App. </p>"
        },
        "autoBranchCreationConfig":{
          "shape":"AutoBranchCreationConfig",
          "documentation":"<p> Automated branch creation config for the Amplify App. </p>"
        }
      },
      "documentation":"<p> Amplify App represents different branches of a repository for building, deploying, and hosting. </p>"
    },
    "AppArn":{
      "type":"string",
      "max":1000
    },
    "AppId":{
      "type":"string",
      "max":255,
      "min":1
    },
    "Apps":{
      "type":"list",
      "member":{"shape":"App"}
    },
    "ArtifactsUrl":{
      "type":"string",
      "max":1000
    },
    "AssociatedResource":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "AssociatedResources":{
      "type":"list",
      "member":{"shape":"AssociatedResource"}
    },
    "AutoBranchCreationConfig":{
      "type":"structure",
      "members":{
        "stage":{
          "shape":"Stage",
          "documentation":"<p> Stage for the auto created branch. </p>"
        },
        "framework":{
          "shape":"Framework",
          "documentation":"<p> Framework for the auto created branch. </p>"
        },
        "enableAutoBuild":{
          "shape":"EnableAutoBuild",
          "documentation":"<p> Enables auto building for the auto created branch. </p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariables",
          "documentation":"<p> Environment Variables for the auto created branch. </p>"
        },
        "basicAuthCredentials":{
          "shape":"BasicAuthCredentials",
          "documentation":"<p> Basic Authorization credentials for the auto created branch. </p>"
        },
        "enableBasicAuth":{
          "shape":"EnableBasicAuth",
          "documentation":"<p> Enables Basic Auth for the auto created branch. </p>"
        },
        "buildSpec":{
          "shape":"BuildSpec",
          "documentation":"<p> BuildSpec for the auto created branch. </p>"
        }
      },
      "documentation":"<p> Structure with auto branch creation config. </p>"
    },
    "AutoBranchCreationPattern":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "AutoBranchCreationPatterns":{
      "type":"list",
      "member":{"shape":"AutoBranchCreationPattern"}
    },
    "BadRequestException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p> Exception thrown when a request contains unexpected data. </p>",
      "error":{"httpStatusCode":400},
      "exception":true
    },
    "BasicAuthCredentials":{
      "type":"string",
      "max":2000
    },
    "Branch":{
      "type":"structure",
      "required":[
        "branchArn",
        "branchName",
        "description",
        "stage",
        "displayName",
        "enableNotification",
        "createTime",
        "updateTime",
        "environmentVariables",
        "enableAutoBuild",
        "customDomains",
        "framework",
        "activeJobId",
        "totalNumberOfJobs",
        "enableBasicAuth",
        "ttl"
      ],
      "members":{
        "branchArn":{
          "shape":"BranchArn",
          "documentation":"<p> ARN for a branch, part of an Amplify App. </p>"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for a branch, part of an Amplify App. </p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p> Description for a branch, part of an Amplify App. </p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p> Tag for branch for Amplify App. </p>"
        },
        "stage":{
          "shape":"Stage",
          "documentation":"<p> Stage for a branch, part of an Amplify App. </p>"
        },
        "displayName":{
          "shape":"DisplayName",
          "documentation":"<p> Display name for a branch, will use as the default domain prefix. </p>"
        },
        "enableNotification":{
          "shape":"EnableNotification",
          "documentation":"<p> Enables notifications for a branch, part of an Amplify App. </p>"
        },
        "createTime":{
          "shape":"CreateTime",
          "documentation":"<p> Creation date and time for a branch, part of an Amplify App. </p>"
        },
        "updateTime":{
          "shape":"UpdateTime",
          "documentation":"<p> Last updated date and time for a branch, part of an Amplify App. </p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariables",
          "documentation":"<p> Environment Variables specific to a branch, part of an Amplify App. </p>"
        },
        "enableAutoBuild":{
          "shape":"EnableAutoBuild",
          "documentation":"<p> Enables auto-building on push for a branch, part of an Amplify App. </p>"
        },
        "customDomains":{
          "shape":"CustomDomains",
          "documentation":"<p> Custom domains for a branch, part of an Amplify App. </p>"
        },
        "framework":{
          "shape":"Framework",
          "documentation":"<p> Framework for a branch, part of an Amplify App. </p>"
        },
        "activeJobId":{
          "shape":"ActiveJobId",
          "documentation":"<p> Id of the active job for a branch, part of an Amplify App. </p>"
        },
        "totalNumberOfJobs":{
          "shape":"TotalNumberOfJobs",
          "documentation":"<p> Total number of Jobs part of an Amplify App. </p>"
        },
        "enableBasicAuth":{
          "shape":"EnableBasicAuth",
          "documentation":"<p> Enables Basic Authorization for a branch, part of an Amplify App. </p>"
        },
        "thumbnailUrl":{
          "shape":"ThumbnailUrl",
          "documentation":"<p> Thumbnail URL for the branch. </p>"
        },
        "basicAuthCredentials":{
          "shape":"BasicAuthCredentials",
          "documentation":"<p> Basic Authorization credentials for a branch, part of an Amplify App. </p>"
        },
        "buildSpec":{
          "shape":"BuildSpec",
          "documentation":"<p> BuildSpec content for branch for Amplify App. </p>"
        },
        "ttl":{
          "shape":"TTL",
          "documentation":"<p> The content TTL for the website in seconds. </p>"
        },
        "associatedResources":{
          "shape":"AssociatedResources",
          "documentation":"<p> List of custom resources that are linked to this branch. </p>"
        }
      },
      "documentation":"<p> Branch for an Amplify App, which maps to a 3rd party repository branch. </p>"
    },
    "BranchArn":{
      "type":"string",
      "max":1000
    },
    "BranchName":{
      "type":"string",
      "max":255,
      "min":1
    },
    "Branches":{
      "type":"list",
      "member":{"shape":"Branch"},
      "max":255
    },
    "BuildSpec":{
      "type":"string",
      "documentation":"<p> BuildSpec file for Amplify app build. </p>",
      "max":25000,
      "min":1
    },
    "CertificateVerificationDNSRecord":{
      "type":"string",
      "max":1000
    },
    "Code":{"type":"string"},
    "CommitId":{
      "type":"string",
      "max":255
    },
    "CommitMessage":{
      "type":"string",
      "max":10000
    },
    "CommitTime":{"type":"timestamp"},
    "Condition":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "Context":{"type":"string"},
    "CreateAppRequest":{
      "type":"structure",
      "required":["name"],
      "members":{
        "name":{
          "shape":"Name",
          "documentation":"<p> Name for the Amplify App </p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p> Description for an Amplify App </p>"
        },
        "repository":{
          "shape":"Repository",
          "documentation":"<p> Repository for an Amplify App </p>"
        },
        "platform":{
          "shape":"Platform",
          "documentation":"<p> Platform / framework for an Amplify App </p>"
        },
        "iamServiceRoleArn":{
          "shape":"ServiceRoleArn",
          "documentation":"<p> AWS IAM service role for an Amplify App </p>"
        },
        "oauthToken":{
          "shape":"OauthToken",
          "documentation":"<p> OAuth token for 3rd party source control system for an Amplify App, used to create webhook and read-only deploy key. OAuth token is not stored. </p>"
        },
        "accessToken":{
          "shape":"AccessToken",
          "documentation":"<p> Personal Access token for 3rd party source control system for an Amplify App, used to create webhook and read-only deploy key. Token is not stored. </p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariables",
          "documentation":"<p> Environment variables map for an Amplify App. </p>"
        },
        "enableBranchAutoBuild":{
          "shape":"EnableBranchAutoBuild",
          "documentation":"<p> Enable the auto building of branches for an Amplify App. </p>"
        },
        "enableBasicAuth":{
          "shape":"EnableBasicAuth",
          "documentation":"<p> Enable Basic Authorization for an Amplify App, this will apply to all branches part of this App. </p>"
        },
        "basicAuthCredentials":{
          "shape":"BasicAuthCredentials",
          "documentation":"<p> Credentials for Basic Authorization for an Amplify App. </p>"
        },
        "customRules":{
          "shape":"CustomRules",
          "documentation":"<p> Custom rewrite / redirect rules for an Amplify App. </p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p> Tag for an Amplify App </p>"
        },
        "buildSpec":{
          "shape":"BuildSpec",
          "documentation":"<p> BuildSpec for an Amplify App </p>"
        },
        "enableAutoBranchCreation":{
          "shape":"EnableAutoBranchCreation",
          "documentation":"<p> Enables automated branch creation for the Amplify App. </p>"
        },
        "autoBranchCreationPatterns":{
          "shape":"AutoBranchCreationPatterns",
          "documentation":"<p> Automated branch creation glob patterns for the Amplify App. </p>"
        },
        "autoBranchCreationConfig":{
          "shape":"AutoBranchCreationConfig",
          "documentation":"<p> Automated branch creation config for the Amplify App. </p>"
        }
      },
      "documentation":"<p> Request structure used to create Apps in Amplify. </p>"
    },
    "CreateAppResult":{
      "type":"structure",
      "required":["app"],
      "members":{
        "app":{"shape":"App"}
      }
    },
    "CreateBranchRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for the branch. </p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p> Description for the branch. </p>"
        },
        "stage":{
          "shape":"Stage",
          "documentation":"<p> Stage for the branch. </p>"
        },
        "framework":{
          "shape":"Framework",
          "documentation":"<p> Framework for the branch. </p>"
        },
        "enableNotification":{
          "shape":"EnableNotification",
          "documentation":"<p> Enables notifications for the branch. </p>"
        },
        "enableAutoBuild":{
          "shape":"EnableAutoBuild",
          "documentation":"<p> Enables auto building for the branch. </p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariables",
          "documentation":"<p> Environment Variables for the branch. </p>"
        },
        "basicAuthCredentials":{
          "shape":"BasicAuthCredentials",
          "documentation":"<p> Basic Authorization credentials for the branch. </p>"
        },
        "enableBasicAuth":{
          "shape":"EnableBasicAuth",
          "documentation":"<p> Enables Basic Auth for the branch. </p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p> Tag for the branch. </p>"
        },
        "buildSpec":{
          "shape":"BuildSpec",
          "documentation":"<p> BuildSpec for the branch. </p>"
        },
        "ttl":{
          "shape":"TTL",
          "documentation":"<p> The content TTL for the website in seconds. </p>"
        },
        "displayName":{
          "shape":"DisplayName",
          "documentation":"<p> Display name for a branch, will use as the default domain prefix. </p>"
        }
      },
      "documentation":"<p> Request structure for a branch create request. </p>"
    },
    "CreateBranchResult":{
      "type":"structure",
      "required":["branch"],
      "members":{
        "branch":{
          "shape":"Branch",
          "documentation":"<p> Branch structure for an Amplify App. </p>"
        }
      },
      "documentation":"<p> Result structure for create branch request. </p>"
    },
    "CreateDeploymentRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for the branch, for the Job. </p>",
          "location":"uri",
          "locationName":"branchName"
        },
        "fileMap":{
          "shape":"FileMap",
          "documentation":"<p> Optional file map that contains file name as the key and file content md5 hash as the value. If this argument is provided, the service will generate different upload url per file. Otherwise, the service will only generate a single upload url for the zipped files. </p>"
        }
      },
      "documentation":"<p> Request structure for create a new deployment. </p>"
    },
    "CreateDeploymentResult":{
      "type":"structure",
      "required":[
        "fileUploadUrls",
        "zipUploadUrl"
      ],
      "members":{
        "jobId":{
          "shape":"JobId",
          "documentation":"<p> The jobId for this deployment, will supply to start deployment api. </p>"
        },
        "fileUploadUrls":{
          "shape":"FileUploadUrls",
          "documentation":"<p> When the fileMap argument is provided in the request, the fileUploadUrls will contain a map of file names to upload url. </p>"
        },
        "zipUploadUrl":{
          "shape":"UploadUrl",
          "documentation":"<p> When the fileMap argument is NOT provided. This zipUploadUrl will be returned. </p>"
        }
      },
      "documentation":"<p> Result structure for create a new deployment. </p>"
    },
    "CreateDomainAssociationRequest":{
      "type":"structure",
      "required":[
        "appId",
        "domainName",
        "subDomainSettings"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "domainName":{
          "shape":"DomainName",
          "documentation":"<p> Domain name for the Domain Association. </p>"
        },
        "enableAutoSubDomain":{
          "shape":"EnableAutoSubDomain",
          "documentation":"<p> Enables automated creation of Subdomains for branches. </p>"
        },
        "subDomainSettings":{
          "shape":"SubDomainSettings",
          "documentation":"<p> Setting structure for the Subdomain. </p>"
        }
      },
      "documentation":"<p> Request structure for create Domain Association request. </p>"
    },
    "CreateDomainAssociationResult":{
      "type":"structure",
      "required":["domainAssociation"],
      "members":{
        "domainAssociation":{
          "shape":"DomainAssociation",
          "documentation":"<p> Domain Association structure. </p>"
        }
      },
      "documentation":"<p> Result structure for the create Domain Association request. </p>"
    },
    "CreateTime":{"type":"timestamp"},
    "CreateWebhookRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for a branch, part of an Amplify App. </p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p> Description for a webhook. </p>"
        }
      },
      "documentation":"<p> Request structure for create webhook request. </p>"
    },
    "CreateWebhookResult":{
      "type":"structure",
      "required":["webhook"],
      "members":{
        "webhook":{
          "shape":"Webhook",
          "documentation":"<p> Webhook structure. </p>"
        }
      },
      "documentation":"<p> Result structure for the create webhook request. </p>"
    },
    "CustomDomain":{
      "type":"string",
      "max":255
    },
    "CustomDomains":{
      "type":"list",
      "member":{"shape":"CustomDomain"},
      "max":255
    },
    "CustomRule":{
      "type":"structure",
      "required":[
        "source",
        "target"
      ],
      "members":{
        "source":{
          "shape":"Source",
          "documentation":"<p> The source pattern for a URL rewrite or redirect rule. </p>"
        },
        "target":{
          "shape":"Target",
          "documentation":"<p> The target pattern for a URL rewrite or redirect rule. </p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p> The status code for a URL rewrite or redirect rule. </p>"
        },
        "condition":{
          "shape":"Condition",
          "documentation":"<p> The condition for a URL rewrite or redirect rule, e.g. country code. </p>"
        }
      },
      "documentation":"<p> Custom rewrite / redirect rule. </p>"
    },
    "CustomRules":{
      "type":"list",
      "member":{"shape":"CustomRule"}
    },
    "DNSRecord":{
      "type":"string",
      "max":1000
    },
    "DefaultDomain":{
      "type":"string",
      "max":1000,
      "min":1
    },
    "DeleteAppRequest":{
      "type":"structure",
      "required":["appId"],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        }
      },
      "documentation":"<p> Request structure for an Amplify App delete request. </p>"
    },
    "DeleteAppResult":{
      "type":"structure",
      "required":["app"],
      "members":{
        "app":{"shape":"App"}
      },
      "documentation":"<p> Result structure for an Amplify App delete request. </p>"
    },
    "DeleteBranchRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for the branch. </p>",
          "location":"uri",
          "locationName":"branchName"
        }
      },
      "documentation":"<p> Request structure for delete branch request. </p>"
    },
    "DeleteBranchResult":{
      "type":"structure",
      "required":["branch"],
      "members":{
        "branch":{
          "shape":"Branch",
          "documentation":"<p> Branch structure for an Amplify App. </p>"
        }
      },
      "documentation":"<p> Result structure for delete branch request. </p>"
    },
    "DeleteDomainAssociationRequest":{
      "type":"structure",
      "required":[
        "appId",
        "domainName"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "domainName":{
          "shape":"DomainName",
          "documentation":"<p> Name of the domain. </p>",
          "location":"uri",
          "locationName":"domainName"
        }
      },
      "documentation":"<p> Request structure for the delete Domain Association request. </p>"
    },
    "DeleteDomainAssociationResult":{
      "type":"structure",
      "required":["domainAssociation"],
      "members":{
        "domainAssociation":{"shape":"DomainAssociation"}
      }
    },
    "DeleteJobRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName",
        "jobId"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for the branch, for the Job. </p>",
          "location":"uri",
          "locationName":"branchName"
        },
        "jobId":{
          "shape":"JobId",
          "documentation":"<p> Unique Id for the Job. </p>",
          "location":"uri",
          "locationName":"jobId"
        }
      },
      "documentation":"<p> Request structure for delete job request. </p>"
    },
    "DeleteJobResult":{
      "type":"structure",
      "required":["jobSummary"],
      "members":{
        "jobSummary":{"shape":"JobSummary"}
      },
      "documentation":"<p> Result structure for the delete job request. </p>"
    },
    "DeleteWebhookRequest":{
      "type":"structure",
      "required":["webhookId"],
      "members":{
        "webhookId":{
          "shape":"WebhookId",
          "documentation":"<p> Unique Id for a webhook. </p>",
          "location":"uri",
          "locationName":"webhookId"
        }
      },
      "documentation":"<p> Request structure for the delete webhook request. </p>"
    },
    "DeleteWebhookResult":{
      "type":"structure",
      "required":["webhook"],
      "members":{
        "webhook":{
          "shape":"Webhook",
          "documentation":"<p> Webhook structure. </p>"
        }
      },
      "documentation":"<p> Result structure for the delete webhook request. </p>"
    },
    "DependentServiceFailureException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p> Exception thrown when an operation fails due to a dependent service throwing an exception. </p>",
      "error":{"httpStatusCode":503},
      "exception":true
    },
    "Description":{
      "type":"string",
      "max":1000
    },
    "DisplayName":{
      "type":"string",
      "max":255
    },
    "DomainAssociation":{
      "type":"structure",
      "required":[
        "domainAssociationArn",
        "domainName",
        "enableAutoSubDomain",
        "domainStatus",
        "statusReason",
        "subDomains"
      ],
      "members":{
        "domainAssociationArn":{
          "shape":"DomainAssociationArn",
          "documentation":"<p> ARN for the Domain Association. </p>"
        },
        "domainName":{
          "shape":"DomainName",
          "documentation":"<p> Name of the domain. </p>"
        },
        "enableAutoSubDomain":{
          "shape":"EnableAutoSubDomain",
          "documentation":"<p> Enables automated creation of Subdomains for branches. </p>"
        },
        "domainStatus":{
          "shape":"DomainStatus",
          "documentation":"<p> Status fo the Domain Association. </p>"
        },
        "statusReason":{
          "shape":"StatusReason",
          "documentation":"<p> Reason for the current status of the Domain Association. </p>"
        },
        "certificateVerificationDNSRecord":{
          "shape":"CertificateVerificationDNSRecord",
          "documentation":"<p> DNS Record for certificate verification. </p>"
        },
        "subDomains":{
          "shape":"SubDomains",
          "documentation":"<p> Subdomains for the Domain Association. </p>"
        }
      },
      "documentation":"<p> Structure for Domain Association, which associates a custom domain with an Amplify App. </p>"
    },
    "DomainAssociationArn":{
      "type":"string",
      "max":1000
    },
    "DomainAssociations":{
      "type":"list",
      "member":{"shape":"DomainAssociation"},
      "max":255
    },
    "DomainName":{
      "type":"string",
      "max":255
    },
    "DomainPrefix":{
      "type":"string",
      "max":255
    },
    "DomainStatus":{
      "type":"string",
      "enum":[
        "PENDING_VERIFICATION",
        "IN_PROGRESS",
        "AVAILABLE",
        "PENDING_DEPLOYMENT",
        "FAILED",
        "CREATING",
        "REQUESTING_CERTIFICATE",
        "UPDATING"
      ]
    },
    "EnableAutoBranchCreation":{"type":"boolean"},
    "EnableAutoBuild":{"type":"boolean"},
    "EnableAutoSubDomain":{"type":"boolean"},
    "EnableBasicAuth":{"type":"boolean"},
    "EnableBranchAutoBuild":{"type":"boolean"},
    "EnableNotification":{"type":"boolean"},
    "EndTime":{"type":"timestamp"},
    "EnvKey":{
      "type":"string",
      "max":255
    },
    "EnvValue":{
      "type":"string",
      "max":1000
    },
    "EnvironmentVariables":{
      "type":"map",
      "key":{"shape":"EnvKey"},
      "value":{"shape":"EnvValue"}
    },
    "ErrorMessage":{
      "type":"string",
      "max":255
    },
    "FileMap":{
      "type":"map",
      "key":{"shape":"FileName"},
      "value":{"shape":"MD5Hash"}
    },
    "FileName":{
      "type":"string",
      "max":255
    },
    "FileUploadUrls":{
      "type":"map",
      "key":{"shape":"FileName"},
      "value":{"shape":"UploadUrl"}
    },
    "Framework":{
      "type":"string",
      "max":255
    },
    "GetAppRequest":{
      "type":"structure",
      "required":["appId"],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        }
      },
      "documentation":"<p> Request structure for get App request. </p>"
    },
    "GetAppResult":{
      "type":"structure",
      "required":["app"],
      "members":{
        "app":{"shape":"App"}
      }
    },
    "GetBranchRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for the branch. </p>",
          "location":"uri",
          "locationName":"branchName"
        }
      },
      "documentation":"<p> Result structure for get branch request. </p>"
    },
    "GetBranchResult":{
      "type":"structure",
      "required":["branch"],
      "members":{
        "branch":{"shape":"Branch"}
      }
    },
    "GetDomainAssociationRequest":{
      "type":"structure",
      "required":[
        "appId",
        "domainName"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "domainName":{
          "shape":"DomainName",
          "documentation":"<p> Name of the domain. </p>",
          "location":"uri",
          "locationName":"domainName"
        }
      },
      "documentation":"<p> Request structure for the get Domain Association request. </p>"
    },
    "GetDomainAssociationResult":{
      "type":"structure",
      "required":["domainAssociation"],
      "members":{
        "domainAssociation":{
          "shape":"DomainAssociation",
          "documentation":"<p> Domain Association structure. </p>"
        }
      },
      "documentation":"<p> Result structure for the get Domain Association request. </p>"
    },
    "GetJobRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName",
        "jobId"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for the branch, for the Job. </p>",
          "location":"uri",
          "locationName":"branchName"
        },
        "jobId":{
          "shape":"JobId",
          "documentation":"<p> Unique Id for the Job. </p>",
          "location":"uri",
          "locationName":"jobId"
        }
      },
      "documentation":"<p> Request structure for get job request. </p>"
    },
    "GetJobResult":{
      "type":"structure",
      "required":["job"],
      "members":{
        "job":{"shape":"Job"}
      }
    },
    "GetWebhookRequest":{
      "type":"structure",
      "required":["webhookId"],
      "members":{
        "webhookId":{
          "shape":"WebhookId",
          "documentation":"<p> Unique Id for a webhook. </p>",
          "location":"uri",
          "locationName":"webhookId"
        }
      },
      "documentation":"<p> Request structure for the get webhook request. </p>"
    },
    "GetWebhookResult":{
      "type":"structure",
      "required":["webhook"],
      "members":{
        "webhook":{
          "shape":"Webhook",
          "documentation":"<p> Webhook structure. </p>"
        }
      },
      "documentation":"<p> Result structure for the get webhook request. </p>"
    },
    "InternalFailureException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p> Exception thrown when the service fails to perform an operation due to an internal issue. </p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true
    },
    "Job":{
      "type":"structure",
      "required":[
        "summary",
        "steps"
      ],
      "members":{
        "summary":{
          "shape":"JobSummary",
          "documentation":"<p> Summary for an execution job for an Amplify App. </p>"
        },
        "steps":{
          "shape":"Steps",
          "documentation":"<p> Execution steps for an execution job, for an Amplify App. </p>"
        }
      },
      "documentation":"<p> Structure for an execution job for an Amplify App. </p>"
    },
    "JobArn":{
      "type":"string",
      "max":1000
    },
    "JobId":{
      "type":"string",
      "max":255
    },
    "JobReason":{
      "type":"string",
      "max":255
    },
    "JobStatus":{
      "type":"string",
      "enum":[
        "PENDING",
        "PROVISIONING",
        "RUNNING",
        "FAILED",
        "SUCCEED",
        "CANCELLING",
        "CANCELLED"
      ]
    },
    "JobSummaries":{
      "type":"list",
      "member":{"shape":"JobSummary"}
    },
    "JobSummary":{
      "type":"structure",
      "required":[
        "jobArn",
        "jobId",
        "commitId",
        "commitMessage",
        "commitTime",
        "startTime",
        "status",
        "jobType"
      ],
      "members":{
        "jobArn":{
          "shape":"JobArn",
          "documentation":"<p> Arn for the Job. </p>"
        },
        "jobId":{
          "shape":"JobId",
          "documentation":"<p> Unique Id for the Job. </p>"
        },
        "commitId":{
          "shape":"CommitId",
          "documentation":"<p> Commit Id from 3rd party repository provider for the Job. </p>"
        },
        "commitMessage":{
          "shape":"CommitMessage",
          "documentation":"<p> Commit message from 3rd party repository provider for the Job. </p>"
        },
        "commitTime":{
          "shape":"CommitTime",
          "documentation":"<p> Commit date / time for the Job. </p>"
        },
        "startTime":{
          "shape":"StartTime",
          "documentation":"<p> Start date / time for the Job. </p>"
        },
        "status":{
          "shape":"JobStatus",
          "documentation":"<p> Status for the Job. </p>"
        },
        "endTime":{
          "shape":"EndTime",
          "documentation":"<p> End date / time for the Job. </p>"
        },
        "jobType":{
          "shape":"JobType",
          "documentation":"<p> Type for the Job. \\n \"RELEASE\": Manually released from source by using StartJob API. \"RETRY\": Manually retried by using StartJob API. \"WEB_HOOK\": Automatically triggered by WebHooks. </p>"
        }
      },
      "documentation":"<p> Structure for the summary of a Job. </p>"
    },
    "JobType":{
      "type":"string",
      "enum":[
        "RELEASE",
        "RETRY",
        "MANUAL",
        "WEB_HOOK"
      ],
      "max":10
    },
    "LastDeployTime":{"type":"timestamp"},
    "LimitExceededException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p> Exception thrown when a resource could not be created because of service limits. </p>",
      "error":{"httpStatusCode":429},
      "exception":true
    },
    "ListAppsRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> Pagination token. If non-null pagination token is returned in a result, then pass its value in another request to fetch more entries. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p> Maximum number of records to list in a single response. </p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      },
      "documentation":"<p> Request structure for an Amplify App list request. </p>"
    },
    "ListAppsResult":{
      "type":"structure",
      "required":["apps"],
      "members":{
        "apps":{
          "shape":"Apps",
          "documentation":"<p> List of Amplify Apps. </p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> Pagination token. Set to null to start listing Apps from start. If non-null pagination token is returned in a result, then pass its value in here to list more projects. </p>"
        }
      },
      "documentation":"<p> Result structure for an Amplify App list request. </p>"
    },
    "ListBranchesRequest":{
      "type":"structure",
      "required":["appId"],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> Pagination token. Set to null to start listing branches from start. If a non-null pagination token is returned in a result, then pass its value in here to list more branches. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p> Maximum number of records to list in a single response. </p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      },
      "documentation":"<p> Request structure for list branches request. </p>"
    },
    "ListBranchesResult":{
      "type":"structure",
      "required":["branches"],
      "members":{
        "branches":{
          "shape":"Branches",
          "documentation":"<p> List of branches for an Amplify App. </p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> Pagination token. If non-null pagination token is returned in a result, then pass its value in another request to fetch more entries. </p>"
        }
      },
      "documentation":"<p> Result structure for list branches request. </p>"
    },
    "ListDomainAssociationsRequest":{
      "type":"structure",
      "required":["appId"],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> Pagination token. Set to null to start listing Apps from start. If non-null pagination token is returned in a result, then pass its value in here to list more projects. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p> Maximum number of records to list in a single response. </p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      },
      "documentation":"<p> Request structure for the list Domain Associations request. </p>"
    },
    "ListDomainAssociationsResult":{
      "type":"structure",
      "required":["domainAssociations"],
      "members":{
        "domainAssociations":{
          "shape":"DomainAssociations",
          "documentation":"<p> List of Domain Associations. </p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> Pagination token. If non-null pagination token is returned in a result, then pass its value in another request to fetch more entries. </p>"
        }
      },
      "documentation":"<p> Result structure for the list Domain Association request. </p>"
    },
    "ListJobsRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for a branch. </p>",
          "location":"uri",
          "locationName":"branchName"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> Pagination token. Set to null to start listing steps from start. If a non-null pagination token is returned in a result, then pass its value in here to list more steps. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p> Maximum number of records to list in a single response. </p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      },
      "documentation":"<p> Request structure for list job request. </p>"
    },
    "ListJobsResult":{
      "type":"structure",
      "required":["jobSummaries"],
      "members":{
        "jobSummaries":{
          "shape":"JobSummaries",
          "documentation":"<p> Result structure for list job result request. </p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> Pagination token. If non-null pagination token is returned in a result, then pass its value in another request to fetch more entries. </p>"
        }
      },
      "documentation":"<p> Maximum number of records to list in a single response. </p>"
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p> Resource arn used to list tags. </p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      },
      "documentation":"<p> Request structure used to list tags for resource. </p>"
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "tags":{
          "shape":"TagMap",
          "documentation":"<p> Tags result for response. </p>"
        }
      },
      "documentation":"<p> Response for list tags. </p>"
    },
    "ListWebhooksRequest":{
      "type":"structure",
      "required":["appId"],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> Pagination token. Set to null to start listing webhooks from start. If non-null pagination token is returned in a result, then pass its value in here to list more webhooks. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"MaxResults",
          "documentation":"<p> Maximum number of records to list in a single response. </p>",
          "location":"querystring",
          "locationName":"maxResults"
        }
      },
      "documentation":"<p> Request structure for the list webhooks request. </p>"
    },
    "ListWebhooksResult":{
      "type":"structure",
      "required":["webhooks"],
      "members":{
        "webhooks":{
          "shape":"Webhooks",
          "documentation":"<p> List of webhooks. </p>"
        },
        "nextToken":{
          "shape":"NextToken",
          "documentation":"<p> Pagination token. If non-null pagination token is returned in a result, then pass its value in another request to fetch more entries. </p>"
        }
      },
      "documentation":"<p> Result structure for the list webhooks request. </p>"
    },
    "LogUrl":{
      "type":"string",
      "max":1000
    },
    "MD5Hash":{
      "type":"string",
      "max":32
    },
    "MaxResults":{
      "type":"integer",
      "max":100,
      "min":1
    },
    "Name":{
      "type":"string",
      "max":255,
      "min":1
    },
    "NextToken":{
      "type":"string",
      "max":2000
    },
    "NotFoundException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p> Exception thrown when an entity has not been found during an operation. </p>",
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "OauthToken":{
      "type":"string",
      "max":100
    },
    "Platform":{
      "type":"string",
      "enum":["WEB"]
    },
    "ProductionBranch":{
      "type":"structure",
      "members":{
        "lastDeployTime":{
          "shape":"LastDeployTime",
          "documentation":"<p> Last Deploy Time of Production Branch. </p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p> Status of Production Branch. </p>"
        },
        "thumbnailUrl":{
          "shape":"ThumbnailUrl",
          "documentation":"<p> Thumbnail URL for Production Branch. </p>"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Branch Name for Production Branch. </p>"
        }
      },
      "documentation":"<p> Structure with Production Branch information. </p>"
    },
    "Repository":{
      "type":"string",
      "max":1000
    },
    "ResourceArn":{
      "type":"string",
      "pattern":"^arn:aws:amplify:.*"
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "required":[
        "code",
        "message"
      ],
      "members":{
        "code":{"shape":"Code"},
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p> Exception thrown when an operation fails due to non-existent resource. </p>",
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "Screenshots":{
      "type":"map",
      "key":{"shape":"ThumbnailName"},
      "value":{"shape":"ThumbnailUrl"}
    },
    "ServiceRoleArn":{
      "type":"string",
      "max":1000,
      "min":1
    },
    "Source":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "SourceUrl":{
      "type":"string",
      "max":1000
    },
    "Stage":{
      "type":"string",
      "enum":[
        "PRODUCTION",
        "BETA",
        "DEVELOPMENT",
        "EXPERIMENTAL"
      ]
    },
    "StartDeploymentRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for the branch, for the Job. </p>",
          "location":"uri",
          "locationName":"branchName"
        },
        "jobId":{
          "shape":"JobId",
          "documentation":"<p> The job id for this deployment, generated by create deployment request. </p>"
        },
        "sourceUrl":{
          "shape":"SourceUrl",
          "documentation":"<p> The sourceUrl for this deployment, used when calling start deployment without create deployment. SourceUrl can be any HTTP GET url that is public accessible and downloads a single zip. </p>"
        }
      },
      "documentation":"<p> Request structure for start a deployment. </p>"
    },
    "StartDeploymentResult":{
      "type":"structure",
      "required":["jobSummary"],
      "members":{
        "jobSummary":{
          "shape":"JobSummary",
          "documentation":"<p> Summary for the Job. </p>"
        }
      },
      "documentation":"<p> Result structure for start a deployment. </p>"
    },
    "StartJobRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName",
        "jobType"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for the branch, for the Job. </p>",
          "location":"uri",
          "locationName":"branchName"
        },
        "jobId":{
          "shape":"JobId",
          "documentation":"<p> Unique Id for an existing job. Required for \"RETRY\" JobType. </p>"
        },
        "jobType":{
          "shape":"JobType",
          "documentation":"<p> Type for the Job. Available JobTypes are: \\n \"RELEASE\": Start a new job with the latest change from the specified branch. Only available for apps that have connected to a repository. \"RETRY\": Retry an existing job. JobId is required for this type of job. </p>"
        },
        "jobReason":{
          "shape":"JobReason",
          "documentation":"<p> Descriptive reason for starting this job. </p>"
        },
        "commitId":{
          "shape":"CommitId",
          "documentation":"<p> Commit Id from 3rd party repository provider for the Job. </p>"
        },
        "commitMessage":{
          "shape":"CommitMessage",
          "documentation":"<p> Commit message from 3rd party repository provider for the Job. </p>"
        },
        "commitTime":{
          "shape":"CommitTime",
          "documentation":"<p> Commit date / time for the Job. </p>"
        }
      },
      "documentation":"<p> Request structure for Start job request. </p>"
    },
    "StartJobResult":{
      "type":"structure",
      "required":["jobSummary"],
      "members":{
        "jobSummary":{
          "shape":"JobSummary",
          "documentation":"<p> Summary for the Job. </p>"
        }
      },
      "documentation":"<p> Result structure for run job request. </p>"
    },
    "StartTime":{"type":"timestamp"},
    "Status":{
      "type":"string",
      "max":3,
      "min":3
    },
    "StatusReason":{
      "type":"string",
      "max":1000
    },
    "Step":{
      "type":"structure",
      "required":[
        "stepName",
        "startTime",
        "status",
        "endTime"
      ],
      "members":{
        "stepName":{
          "shape":"StepName",
          "documentation":"<p> Name of the execution step. </p>"
        },
        "startTime":{
          "shape":"StartTime",
          "documentation":"<p> Start date/ time of the execution step. </p>"
        },
        "status":{
          "shape":"JobStatus",
          "documentation":"<p> Status of the execution step. </p>"
        },
        "endTime":{
          "shape":"EndTime",
          "documentation":"<p> End date/ time of the execution step. </p>"
        },
        "logUrl":{
          "shape":"LogUrl",
          "documentation":"<p> URL to the logs for the execution step. </p>"
        },
        "artifactsUrl":{
          "shape":"ArtifactsUrl",
          "documentation":"<p> URL to the artifact for the execution step. </p>"
        },
        "screenshots":{
          "shape":"Screenshots",
          "documentation":"<p> List of screenshot URLs for the execution step, if relevant. </p>"
        },
        "statusReason":{
          "shape":"StatusReason",
          "documentation":"<p> The reason for current step status. </p>"
        },
        "context":{
          "shape":"Context",
          "documentation":"<p> The context for current step, will include build image if step is build. </p>"
        }
      },
      "documentation":"<p> Structure for an execution step for an execution job, for an Amplify App. </p>"
    },
    "StepName":{
      "type":"string",
      "max":255
    },
    "Steps":{
      "type":"list",
      "member":{"shape":"Step"}
    },
    "StopJobRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName",
        "jobId"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for the branch, for the Job. </p>",
          "location":"uri",
          "locationName":"branchName"
        },
        "jobId":{
          "shape":"JobId",
          "documentation":"<p> Unique Id for the Job. </p>",
          "location":"uri",
          "locationName":"jobId"
        }
      },
      "documentation":"<p> Request structure for stop job request. </p>"
    },
    "StopJobResult":{
      "type":"structure",
      "required":["jobSummary"],
      "members":{
        "jobSummary":{
          "shape":"JobSummary",
          "documentation":"<p> Summary for the Job. </p>"
        }
      },
      "documentation":"<p> Result structure for the stop job request. </p>"
    },
    "SubDomain":{
      "type":"structure",
      "required":[
        "subDomainSetting",
        "verified",
        "dnsRecord"
      ],
      "members":{
        "subDomainSetting":{
          "shape":"SubDomainSetting",
          "documentation":"<p> Setting structure for the Subdomain. </p>"
        },
        "verified":{
          "shape":"Verified",
          "documentation":"<p> Verified status of the Subdomain </p>"
        },
        "dnsRecord":{
          "shape":"DNSRecord",
          "documentation":"<p> DNS record for the Subdomain. </p>"
        }
      },
      "documentation":"<p> Subdomain for the Domain Association. </p>"
    },
    "SubDomainSetting":{
      "type":"structure",
      "required":[
        "prefix",
        "branchName"
      ],
      "members":{
        "prefix":{
          "shape":"DomainPrefix",
          "documentation":"<p> Prefix setting for the Subdomain. </p>"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Branch name setting for the Subdomain. </p>"
        }
      },
      "documentation":"<p> Setting for the Subdomain. </p>"
    },
    "SubDomainSettings":{
      "type":"list",
      "member":{"shape":"SubDomainSetting"},
      "max":255
    },
    "SubDomains":{
      "type":"list",
      "member":{"shape":"SubDomain"},
      "max":255
    },
    "TTL":{
      "type":"string",
      "documentation":"<p> The content TTL for the website in seconds. </p>"
    },
    "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":"ResourceArn",
          "documentation":"<p> Resource arn used to tag resource. </p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p> Tags used to tag resource. </p>"
        }
      },
      "documentation":"<p> Request structure used to tag resource. </p>"
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p> Response for tag resource. </p>"
    },
    "TagValue":{
      "type":"string",
      "max":256
    },
    "Target":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "ThumbnailName":{
      "type":"string",
      "max":256
    },
    "ThumbnailUrl":{
      "type":"string",
      "max":2000,
      "min":1
    },
    "TotalNumberOfJobs":{
      "type":"string",
      "max":1000
    },
    "UnauthorizedException":{
      "type":"structure",
      "members":{
        "message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p> Exception thrown when an operation fails due to a lack of access. </p>",
      "error":{"httpStatusCode":401},
      "exception":true
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tagKeys"
      ],
      "members":{
        "resourceArn":{
          "shape":"ResourceArn",
          "documentation":"<p> Resource arn used to untag resource. </p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tagKeys":{
          "shape":"TagKeyList",
          "documentation":"<p> Tag keys used to untag resource. </p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      },
      "documentation":"<p> Request structure used to untag resource. </p>"
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      },
      "documentation":"<p> Response for untag resource. </p>"
    },
    "UpdateAppRequest":{
      "type":"structure",
      "required":["appId"],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "name":{
          "shape":"Name",
          "documentation":"<p> Name for an Amplify App. </p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p> Description for an Amplify App. </p>"
        },
        "platform":{
          "shape":"Platform",
          "documentation":"<p> Platform for an Amplify App. </p>"
        },
        "iamServiceRoleArn":{
          "shape":"ServiceRoleArn",
          "documentation":"<p> IAM service role for an Amplify App. </p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariables",
          "documentation":"<p> Environment Variables for an Amplify App. </p>"
        },
        "enableBranchAutoBuild":{
          "shape":"EnableAutoBuild",
          "documentation":"<p> Enables branch auto-building for an Amplify App. </p>"
        },
        "enableBasicAuth":{
          "shape":"EnableBasicAuth",
          "documentation":"<p> Enables Basic Authorization for an Amplify App. </p>"
        },
        "basicAuthCredentials":{
          "shape":"BasicAuthCredentials",
          "documentation":"<p> Basic Authorization credentials for an Amplify App. </p>"
        },
        "customRules":{
          "shape":"CustomRules",
          "documentation":"<p> Custom redirect / rewrite rules for an Amplify App. </p>"
        },
        "buildSpec":{
          "shape":"BuildSpec",
          "documentation":"<p> BuildSpec for an Amplify App. </p>"
        },
        "enableAutoBranchCreation":{
          "shape":"EnableAutoBranchCreation",
          "documentation":"<p> Enables automated branch creation for the Amplify App. </p>"
        },
        "autoBranchCreationPatterns":{
          "shape":"AutoBranchCreationPatterns",
          "documentation":"<p> Automated branch creation glob patterns for the Amplify App. </p>"
        },
        "autoBranchCreationConfig":{
          "shape":"AutoBranchCreationConfig",
          "documentation":"<p> Automated branch creation config for the Amplify App. </p>"
        }
      },
      "documentation":"<p> Request structure for update App request. </p>"
    },
    "UpdateAppResult":{
      "type":"structure",
      "required":["app"],
      "members":{
        "app":{
          "shape":"App",
          "documentation":"<p> App structure for the updated App. </p>"
        }
      },
      "documentation":"<p> Result structure for an Amplify App update request. </p>"
    },
    "UpdateBranchRequest":{
      "type":"structure",
      "required":[
        "appId",
        "branchName"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for the branch. </p>",
          "location":"uri",
          "locationName":"branchName"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p> Description for the branch. </p>"
        },
        "framework":{
          "shape":"Framework",
          "documentation":"<p> Framework for the branch. </p>"
        },
        "stage":{
          "shape":"Stage",
          "documentation":"<p> Stage for the branch. </p>"
        },
        "enableNotification":{
          "shape":"EnableNotification",
          "documentation":"<p> Enables notifications for the branch. </p>"
        },
        "enableAutoBuild":{
          "shape":"EnableAutoBuild",
          "documentation":"<p> Enables auto building for the branch. </p>"
        },
        "environmentVariables":{
          "shape":"EnvironmentVariables",
          "documentation":"<p> Environment Variables for the branch. </p>"
        },
        "basicAuthCredentials":{
          "shape":"BasicAuthCredentials",
          "documentation":"<p> Basic Authorization credentials for the branch. </p>"
        },
        "enableBasicAuth":{
          "shape":"EnableBasicAuth",
          "documentation":"<p> Enables Basic Auth for the branch. </p>"
        },
        "buildSpec":{
          "shape":"BuildSpec",
          "documentation":"<p> BuildSpec for the branch. </p>"
        },
        "ttl":{
          "shape":"TTL",
          "documentation":"<p> The content TTL for the website in seconds. </p>"
        },
        "displayName":{
          "shape":"DisplayName",
          "documentation":"<p> Display name for a branch, will use as the default domain prefix. </p>"
        }
      },
      "documentation":"<p> Request structure for update branch request. </p>"
    },
    "UpdateBranchResult":{
      "type":"structure",
      "required":["branch"],
      "members":{
        "branch":{
          "shape":"Branch",
          "documentation":"<p> Branch structure for an Amplify App. </p>"
        }
      },
      "documentation":"<p> Result structure for update branch request. </p>"
    },
    "UpdateDomainAssociationRequest":{
      "type":"structure",
      "required":[
        "appId",
        "domainName",
        "subDomainSettings"
      ],
      "members":{
        "appId":{
          "shape":"AppId",
          "documentation":"<p> Unique Id for an Amplify App. </p>",
          "location":"uri",
          "locationName":"appId"
        },
        "domainName":{
          "shape":"DomainName",
          "documentation":"<p> Name of the domain. </p>",
          "location":"uri",
          "locationName":"domainName"
        },
        "enableAutoSubDomain":{
          "shape":"EnableAutoSubDomain",
          "documentation":"<p> Enables automated creation of Subdomains for branches. </p>"
        },
        "subDomainSettings":{
          "shape":"SubDomainSettings",
          "documentation":"<p> Setting structure for the Subdomain. </p>"
        }
      },
      "documentation":"<p> Request structure for update Domain Association request. </p>"
    },
    "UpdateDomainAssociationResult":{
      "type":"structure",
      "required":["domainAssociation"],
      "members":{
        "domainAssociation":{
          "shape":"DomainAssociation",
          "documentation":"<p> Domain Association structure. </p>"
        }
      },
      "documentation":"<p> Result structure for the update Domain Association request. </p>"
    },
    "UpdateTime":{"type":"timestamp"},
    "UpdateWebhookRequest":{
      "type":"structure",
      "required":["webhookId"],
      "members":{
        "webhookId":{
          "shape":"WebhookId",
          "documentation":"<p> Unique Id for a webhook. </p>",
          "location":"uri",
          "locationName":"webhookId"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for a branch, part of an Amplify App. </p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p> Description for a webhook. </p>"
        }
      },
      "documentation":"<p> Request structure for update webhook request. </p>"
    },
    "UpdateWebhookResult":{
      "type":"structure",
      "required":["webhook"],
      "members":{
        "webhook":{
          "shape":"Webhook",
          "documentation":"<p> Webhook structure. </p>"
        }
      },
      "documentation":"<p> Result structure for the update webhook request. </p>"
    },
    "UploadUrl":{
      "type":"string",
      "max":1000
    },
    "Verified":{"type":"boolean"},
    "Webhook":{
      "type":"structure",
      "required":[
        "webhookArn",
        "webhookId",
        "webhookUrl",
        "branchName",
        "description",
        "createTime",
        "updateTime"
      ],
      "members":{
        "webhookArn":{
          "shape":"WebhookArn",
          "documentation":"<p> ARN for the webhook. </p>"
        },
        "webhookId":{
          "shape":"WebhookId",
          "documentation":"<p> Id of the webhook. </p>"
        },
        "webhookUrl":{
          "shape":"WebhookUrl",
          "documentation":"<p> Url of the webhook. </p>"
        },
        "branchName":{
          "shape":"BranchName",
          "documentation":"<p> Name for a branch, part of an Amplify App. </p>"
        },
        "description":{
          "shape":"Description",
          "documentation":"<p> Description for a webhook. </p>"
        },
        "createTime":{
          "shape":"CreateTime",
          "documentation":"<p> Create date / time for a webhook. </p>"
        },
        "updateTime":{
          "shape":"UpdateTime",
          "documentation":"<p> Update date / time for a webhook. </p>"
        }
      },
      "documentation":"<p> Structure for webhook, which associates a webhook with an Amplify App. </p>"
    },
    "WebhookArn":{
      "type":"string",
      "max":1000
    },
    "WebhookId":{
      "type":"string",
      "max":255
    },
    "WebhookUrl":{
      "type":"string",
      "max":1000
    },
    "Webhooks":{
      "type":"list",
      "member":{"shape":"Webhook"}
    }
  },
  "documentation":"<p> Amplify is a fully managed continuous deployment and hosting service for modern web apps. </p>"
}
