
# 条件删除资源栈
#### 功能介绍
条件删除资源栈（DeleteStackEnhanced）
此API用于删除某个资源栈，可以选择是否保留资源。
**请谨慎操作，删除资源栈将默认删除与该资源栈相关的所有数据，如：执行计划、资源栈事件、资源栈输出、资源等。**
**如果希望删除资源栈保留资源，可以在请求中设置*retain_all_resources*对资源进行保留。**
- 此API会触发删除资源栈，并以最终一致性删除数据，用户可以调用GetStackMetadata或ListStacks跟踪资源栈删除情况。当删除完成后，被删除资源栈将不会在上述API中返回。
  
- 如果资源栈状态处于非终态（状态以*IN_PROGRESS*结尾）状态时，则不允许删除。包括但不限于以下状态：
  - 正在部署（DEPLOYMENT_IN_PROGRESS）
    
  
  - 正在删除（DELETION_IN_PROGRESS）
    
  
  - 正在回滚（ROLLBACK_IN_PROGRESS）
    
   
- 如果资源栈开启了删除保护，则不允许删除。用户可调用GetStackMetadata，查看返回中的*enable_deletion_protection*字段判断删除保护是否开启。用户可通过调用UpdateStack关闭删除保护。
  
- 如果资源栈删除失败，可以根据StackEvents提示信息修复当前模板中的错误后，部署成功后再次删除资源栈。有以下两种方式触发部署：
  - 调用CreateExecutionPlan创建执行计划，执行计划创建成功后调用ApplyExecutionPlan部署资源栈。
    
  
  - 调用DeployStack部署资源栈。
    
   
 
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/AOS/doc?api=DeleteStackEnhanced)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### URI
POST /v1/{project_id}/stacks/{stack_name}/deletion
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| project_id | 是    | String | 项目ID，可以从调用API处获取，也可以从控制台获取。 [项目ID获取方式](https://support.huaweicloud.com/api-ticket/ticket_api_20002.html) 最小长度：**3** 最大长度：**64** |
| stack_name | 是    | String | 资源栈的名称。此名字在domain_id+区域+project_id下应唯一，可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文，区分大小写。 最小长度：**1** 最大长度：**128**                                                                                                    |
   
#### 请求参数
表2请求Header参数 
| 参数                | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| Client-Request-Id | 是    | String | 用户指定的，对于此请求的唯一ID，用于定位某个请求，推荐使用UUID 最小长度：**36** 最大长度：**128** |
   
表3请求Body参数 
| 参数                   | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| stack_id             | 否    | String  | 资源栈（stack）的唯一ID。 此Id由资源编排服务在生成资源栈的时候生成，为UUID。 由于资源栈名仅仅在同一时间下唯一，即用户允许先生成一个叫HelloWorld的资源栈，删除，再重新创建一个同名资源栈。 对于团队并行开发，用户可能希望确保，当前我操作的资源栈就是我认为的那个，而不是其他队友删除后创建的同名资源栈。因此，使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈所对应的ID都不相同，更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致，则返回400 最小长度：**36** 最大长度：**36** |
| retain_all_resources | 否    | Boolean | 删除资源栈是否保留资源的标志位，如果不传默认为false，即默认不保留资源（删除资源栈后会删除资源栈中的资源） DeleteStackEnhanced API中，如果该参数未在RequestBody中给予，则删除时不会保留资源栈中的资源                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
#### 响应参数
**状态码：202**
请求接受，异步处理
**状态码：400**
表4响应Body参数 
| 参数                            | 参数类型                                                                                                   | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                 | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                 | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                 | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表5Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
**状态码：401**
表6响应Body参数 
| 参数                            | 参数类型                                                                                                     | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                   | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                   | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                   | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表7Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
**状态码：403**
表8响应Body参数 
| 参数                            | 参数类型                                                                                                     | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                   | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                   | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                   | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表9Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
**状态码：404**
表10响应Body参数 
| 参数                            | 参数类型                                                                                                     | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                   | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                   | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                   | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表11Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
**状态码：429**
表12响应Body参数 
| 参数                            | 参数类型                                                                                                     | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                   | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                   | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                   | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表13Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
**状态码：500**
表14响应Body参数 
| 参数                            | 参数类型                                                                                                     | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                   | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                   | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                   | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表15Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
#### 请求示例
- 删除资源栈，不保留资源
  ```
  POST https://{endpoint}/v1/{project_id}/stacks/{stack_name}/deletion
  {
    "stack_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3"
  }
  ```
  
- 删除资源栈，保留资源
  ```
  POST https://{endpoint}/v1/{project_id}/stacks/{stack_name}/deletion
  {
    "stack_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3",
    "retain_all_resources" : true
  }
  ```
  
 
#### 响应示例
无
#### 状态码
| 状态码 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|
| 202 | 请求接受，异步处理                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 400 | 用户请求非法                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 401 | 用户身份认证失败                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 403 | 1. 资源栈状态非法，不允许删除   2. 用户无权限调用此API    |
| 404 | 资源栈不存在                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 429 | 请求数量过多                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 500 | 服务器内部错误                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   
