{
  "metadata": {
    "apiVersion": "2010-05-15",
    "endpointPrefix": "cloudformation",
    "serviceFullName": "AWS CloudFormation",
    "signatureVersion": "v4",
    "xmlNamespace": "http://cloudformation.amazonaws.com/doc/2010-05-15/",
    "protocol": "query"
  },
  "operations": {
    "CancelUpdateStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {}
        }
      }
    },
    "CreateStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "TemplateBody": {},
          "TemplateURL": {},
          "Parameters": {
            "shape": "S6"
          },
          "DisableRollback": {
            "type": "boolean"
          },
          "TimeoutInMinutes": {
            "type": "integer"
          },
          "NotificationARNs": {
            "shape": "Sd"
          },
          "Capabilities": {
            "shape": "Sf"
          },
          "OnFailure": {},
          "StackPolicyBody": {},
          "StackPolicyURL": {},
          "Tags": {
            "shape": "Sk"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateStackResult",
        "type": "structure",
        "members": {
          "StackId": {}
        }
      }
    },
    "DeleteStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {}
        }
      }
    },
    "DescribeStackEvents": {
      "input": {
        "type": "structure",
        "members": {
          "StackName": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStackEventsResult",
        "type": "structure",
        "members": {
          "StackEvents": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "StackId",
                "EventId",
                "StackName",
                "Timestamp"
              ],
              "members": {
                "StackId": {},
                "EventId": {},
                "StackName": {},
                "LogicalResourceId": {},
                "PhysicalResourceId": {},
                "ResourceType": {},
                "Timestamp": {
                  "type": "timestamp"
                },
                "ResourceStatus": {},
                "ResourceStatusReason": {},
                "ResourceProperties": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeStackResource": {
      "input": {
        "type": "structure",
        "required": [
          "StackName",
          "LogicalResourceId"
        ],
        "members": {
          "StackName": {},
          "LogicalResourceId": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStackResourceResult",
        "type": "structure",
        "members": {
          "StackResourceDetail": {
            "type": "structure",
            "required": [
              "LogicalResourceId",
              "ResourceType",
              "LastUpdatedTimestamp",
              "ResourceStatus"
            ],
            "members": {
              "StackName": {},
              "StackId": {},
              "LogicalResourceId": {},
              "PhysicalResourceId": {},
              "ResourceType": {},
              "LastUpdatedTimestamp": {
                "type": "timestamp"
              },
              "ResourceStatus": {},
              "ResourceStatusReason": {},
              "Description": {},
              "Metadata": {}
            }
          }
        }
      }
    },
    "DescribeStackResources": {
      "input": {
        "type": "structure",
        "members": {
          "StackName": {},
          "LogicalResourceId": {},
          "PhysicalResourceId": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStackResourcesResult",
        "type": "structure",
        "members": {
          "StackResources": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "LogicalResourceId",
                "ResourceType",
                "Timestamp",
                "ResourceStatus"
              ],
              "members": {
                "StackName": {},
                "StackId": {},
                "LogicalResourceId": {},
                "PhysicalResourceId": {},
                "ResourceType": {},
                "Timestamp": {
                  "type": "timestamp"
                },
                "ResourceStatus": {},
                "ResourceStatusReason": {},
                "Description": {}
              }
            }
          }
        }
      }
    },
    "DescribeStacks": {
      "input": {
        "type": "structure",
        "members": {
          "StackName": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStacksResult",
        "type": "structure",
        "members": {
          "Stacks": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "StackName",
                "CreationTime",
                "StackStatus"
              ],
              "members": {
                "StackId": {},
                "StackName": {},
                "Description": {},
                "Parameters": {
                  "shape": "S6"
                },
                "CreationTime": {
                  "type": "timestamp"
                },
                "LastUpdatedTime": {
                  "type": "timestamp"
                },
                "StackStatus": {},
                "StackStatusReason": {},
                "DisableRollback": {
                  "type": "boolean"
                },
                "NotificationARNs": {
                  "shape": "Sd"
                },
                "TimeoutInMinutes": {
                  "type": "integer"
                },
                "Capabilities": {
                  "shape": "Sf"
                },
                "Outputs": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "OutputKey": {},
                      "OutputValue": {},
                      "Description": {}
                    }
                  }
                },
                "Tags": {
                  "shape": "Sk"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "EstimateTemplateCost": {
      "input": {
        "type": "structure",
        "members": {
          "TemplateBody": {},
          "TemplateURL": {},
          "Parameters": {
            "shape": "S6"
          }
        }
      },
      "output": {
        "resultWrapper": "EstimateTemplateCostResult",
        "type": "structure",
        "members": {
          "Url": {}
        }
      }
    },
    "GetStackPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {}
        }
      },
      "output": {
        "resultWrapper": "GetStackPolicyResult",
        "type": "structure",
        "members": {
          "StackPolicyBody": {}
        }
      }
    },
    "GetTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {}
        }
      },
      "output": {
        "resultWrapper": "GetTemplateResult",
        "type": "structure",
        "members": {
          "TemplateBody": {}
        }
      }
    },
    "ListStackResources": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListStackResourcesResult",
        "type": "structure",
        "members": {
          "StackResourceSummaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "LogicalResourceId",
                "ResourceType",
                "LastUpdatedTimestamp",
                "ResourceStatus"
              ],
              "members": {
                "LogicalResourceId": {},
                "PhysicalResourceId": {},
                "ResourceType": {},
                "LastUpdatedTimestamp": {
                  "type": "timestamp"
                },
                "ResourceStatus": {},
                "ResourceStatusReason": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListStacks": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "StackStatusFilter": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "ListStacksResult",
        "type": "structure",
        "members": {
          "StackSummaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "StackName",
                "CreationTime",
                "StackStatus"
              ],
              "members": {
                "StackId": {},
                "StackName": {},
                "TemplateDescription": {},
                "CreationTime": {
                  "type": "timestamp"
                },
                "LastUpdatedTime": {
                  "type": "timestamp"
                },
                "DeletionTime": {
                  "type": "timestamp"
                },
                "StackStatus": {},
                "StackStatusReason": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "SetStackPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "StackPolicyBody": {},
          "StackPolicyURL": {}
        }
      }
    },
    "UpdateStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "TemplateBody": {},
          "TemplateURL": {},
          "UsePreviousTemplate": {
            "type": "boolean"
          },
          "StackPolicyDuringUpdateBody": {},
          "StackPolicyDuringUpdateURL": {},
          "Parameters": {
            "shape": "S6"
          },
          "Capabilities": {
            "shape": "Sf"
          },
          "StackPolicyBody": {},
          "StackPolicyURL": {},
          "NotificationARNs": {
            "shape": "Sd"
          }
        }
      },
      "output": {
        "resultWrapper": "UpdateStackResult",
        "type": "structure",
        "members": {
          "StackId": {}
        }
      }
    },
    "ValidateTemplate": {
      "input": {
        "type": "structure",
        "members": {
          "TemplateBody": {},
          "TemplateURL": {}
        }
      },
      "output": {
        "resultWrapper": "ValidateTemplateResult",
        "type": "structure",
        "members": {
          "Parameters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ParameterKey": {},
                "DefaultValue": {},
                "NoEcho": {
                  "type": "boolean"
                },
                "Description": {}
              }
            }
          },
          "Description": {},
          "Capabilities": {
            "shape": "Sf"
          },
          "CapabilitiesReason": {}
        }
      }
    }
  },
  "shapes": {
    "S6": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "ParameterKey": {},
          "ParameterValue": {},
          "UsePreviousValue": {
            "type": "boolean"
          }
        }
      }
    },
    "Sd": {
      "type": "list",
      "member": {}
    },
    "Sf": {
      "type": "list",
      "member": {}
    },
    "Sk": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    }
  }
}