
# 通过API创建和修改工作空间应用示例
本节通过调用一系列API，以创建和修改工作空间为例介绍ModelArts API的使用流程。
#### 概述
创建和修改工作空间的流程如下：
1. 调用[认证鉴权](https://support.huaweicloud.com/api-modelarts/modelarts_03_0004.html)接口获取用户Token，在后续的请求中需要将Token放到请求消息头中作为认证。
2. 调用[创建工作空间](https://support.huaweicloud.com/api-modelarts/CreateWorkspace.html)接口创建一个工作空间。
3. 调用[查询工作空间详情](https://support.huaweicloud.com/api-modelarts/ShowWorkspace.html)接口根据工作空间ID查询工作空间的详细信息。
4. 调用[修改工作空间](https://support.huaweicloud.com/api-modelarts/UpdateWorkspace.html)接口根据工作空间ID修改工作空间的名称、描述、授权类型等信息。
5. 当不需要该工作空间时，可以调用[删除工作空间](https://support.huaweicloud.com/api-modelarts/DeleteWorkspace.html)接口删除工作空间。
 
#### 前提条件
- 已获取[IAM的EndPoint](https://developer.huaweicloud.com/endpoint?IAM)和[ModelArts的EndPoint](https://support.huaweicloud.com/api-modelarts/modelarts_03_0141.html)。
- 确认服务的部署区域，[获取项目名称和ID](https://support.huaweicloud.com/api-modelarts/modelarts_03_0147.html)、[获取账号名和ID](https://support.huaweicloud.com/api-modelarts/modelarts_03_0148.html)和[获取用户名和ID](https://support.huaweicloud.com/api-modelarts/modelarts_03_0006.html)。
 
#### 操作步骤
1. 调用[认证鉴权](https://support.huaweicloud.com/api-modelarts/modelarts_03_0004.html)接口获取用户的Token。
   1. 请求消息体： URI格式：POST https://***{iam_endpoint}***/v3/auth/tokens
      请求消息头：Content-Type →application/json
      请求Body：
      ```
      {
        "auth": {
          "identity": {
            "methods": ["password"],
            "password": {
              "user": {
                "name": "user_name", 
                "password": "user_password",
                "domain": {
                  "name": "domain_name"  
                }
              }
            }
          },
          "scope": {
            "project": {
              "name": "cn-north-1"  
            }
          }
        }
      }
      ```
      其中，加粗的斜体字段需要根据实际值填写：
      - ***iam_endpoint***为IAM的终端节点。
      
      - ***user_name***为IAM用户名。
      
      - ***user_password***为用户登录密码。
      
      - ***domain_name***为用户所属的账号名。
      
      - ***cn-north-1***为项目名，代表服务的部署区域。
        
   
   2. 返回状态码"201 Created"，在响应Header中获取"X-Subject-Token"的值即为Token，如下所示：
      ```
      x-subject-token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...
      ```
      
    
2. 调用[创建工作空间](https://support.huaweicloud.com/api-modelarts/CreateWorkspace.html)接口创建一个工作空间。
   1. 请求消息体： URI：POST https://***{** **endpoint** **}*** /v1/***{** **project_id** **}***/workspaces
      请求消息头：
      - X-auth-Token →***MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...***
      
      - Content-Type →application/json
      
      
      请求Body：
      ```
      {
      "name": "test_workspace",
      "description": "It is my workspace",
      "enterprise_project_id": "0",
      "auth_type": "PUBLIC",
      "grants": [
      {
      "user_id": "aa7efa8801024da08a7fa92dc0******",
      "user_name": ""
      }
      ]
      }
      ```
      其中，加粗的斜体字段需要根据实际值填写：
      - ***endpoint***为ModelArts的终端节点。
      
      - ***project_id***为用户的项目ID。
      
      - "X-auth-Token"是上一步获取到的Token值。
      
      - "user_id"为用户ID。
        
   
   2. 返回状态码"200 OK"，响应Body如下所示：
      ```
      {
          "id": "f3deca1406da4910a50f3919940b9bda",
          "name": "test_workspace",
          "description": "It is my workspace",
          "owner": "test166",
          "create_time": 1625453558000,
          "update_time": 1625453558000,
          "enterprise_project_id": "0",
          "enterprise_project_name": "default",
          "auth_type": "public",
          "status": "NORMAL",
          "status_info": ""
      }
      ```
      "id"为新建的工作空间ID，记录该值用于后续步骤。
      
    
3. 调用[查询工作空间详情](https://support.huaweicloud.com/api-modelarts/ShowWorkspace.html)接口根据工作空间ID查询工作空间的详细信息。
   1. 请求消息体： URI：GET https://***{endpoint}*** /v1/***{project_id}*** /workspaces/***{workspaces_id}***
      请求消息头：X-auth-Token →***MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...***
      其中，加粗的斜体字段需要根据实际值填写，"workspace_id"为[2]获取的工作空间ID。
      
   
   2. 返回状态码"200 OK"，响应Body如下所示：
      ```
      {
          "id": "f3deca1406da4910a50f3919940b9bda",
          "name": "test_workspace",
          "description": "It is my workspace",
          "owner": "test166",
          "create_time": 1625453558000,
          "update_time": 1625453558000,
          "enterprise_project_id": "0",
          "enterprise_project_name": "default",
          "auth_type": "public",
          "status": "NORMAL",
          "status_info": ""
      }
      ```
      根据响应可以了解工作空间的详细信息，其中"status"为"NORMAL"表示工作空间的状态正常。
      
    
4. 调用[修改工作空间](https://support.huaweicloud.com/api-modelarts/UpdateWorkspace.html)接口根据工作空间ID修改工作空间的名称、描述、授权类型等信息。
   1. 请求消息体： URI：PUT https://***{endpoint}*** /v1/***{project_id}*** /workspaces/***{workspaces_id}***
      请求消息头：
      - X-auth-Token →***MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...***
      
      - Content-Type →application/json
       
      请求Body：
      ```
      {
      "name": "new_name",
      "description": "update description",
      "auth_type":"INTERNAL",
      "grants":
      [
      {"user_id": "aa7efa8801024da08a7fa92dc0******"}
      ]
      }
      ```
      其中，加粗的斜体字段需要根据实际值填写，"name"和"description"填写要修改的工作空间名称和描述。
      
   
   2. 返回状态码"200 OK"表示修改完成，响应Body如下所示：
      ```
      {
          "workspace_id": "f3deca1406da4910a50f3919940b9bda"
      }
      ```
      
    
5. 当不需要该工作空间时，可以调用[删除工作空间](https://support.huaweicloud.com/api-modelarts/DeleteWorkspace.html)接口删除工作空间。
   1. 请求消息体： URI：DELETE https://***{endpoint}*** /v1/***{project_id}*** /workspaces/***{workspaces_id}***
      请求消息头：X-auth-Token →***MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...***
      其中，加粗的斜体字段需要根据实际值填写。
      
   
   2. 返回状态码"200 OK"表示删除成功，响应Body如下所示：
      ```
      {
          "workspace_id": "f3deca1406da4910a50f3919940b9bda"
      }
      ```
      
    
 
