stable-diffusion-aws-extension/docs/zh/developer-guide/api/1.5.0.md

1489 lines
40 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# ESD 1.5.0
# 健康检查Ping
<a id="opIdTestConnection"></a>
## GET 健康检查 Ping
GET /ping
测试客户端是否可以连接到 API并检查配置是否正确。
Test whether client can connect to api and check the API_TOKEN is correct.
> Response Examples
> Success
```json
{
"message": "pong",
"statusCode": 200
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» message|string|true|none||none|
|» statusCode|integer|true|none||none|
# 角色Roles
<a id="opIdListRoles"></a>
## DELETE 删除角色 DeleteRoles
DELETE /roles
删除角色
Delete roles
> Body Parameters
```json
{
"role_name_list": [
"role_name_1"
]
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|username|header|string| yes |none|
|body|body|object| no |none|
|» role_name_list|body|[string]| yes |角色列表Role Name List|
> Response Examples
> 204 Response
```json
{}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|No Content|Inline|
### Responses Data Schema
<a id="opIdCreateRole"></a>
## POST 创建角色 CreateRole
POST /roles
创建新角色
Create a new role
> Body Parameters
```json
{
"role_name": "new_role_name",
"permissions": [
"train:all",
"checkpoint:all"
]
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» role_name|body|string| yes |角色名Role Name|
|» permissions|body|[string]| yes |权限列表Permissions|
> Response Examples
> Created
```json
{
"statusCode": 201,
"message": "role created"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|201|[Created](https://tools.ietf.org/html/rfc7231#section-6.3.2)|Created|Inline|
### Responses Data Schema
HTTP Status Code **201**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» statusCode|integer|true|none||none|
|» message|string|true|none||none|
# 用户Users
<a id="opIdListUsers"></a>
## GET 获取用户列表 ListUsers
GET /users
获取用户列表
List all users
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|username|header|string| yes |none|
> Response Examples
> Success
```json
{
"statusCode": 200,
"data": {
"users": [
{
"username": "admin",
"roles": [
"IT Operator",
"byoc"
],
"creator": "admin",
"permissions": [
"checkpoint:all",
"inference:all",
"role:all",
"sagemaker_endpoint:all",
"train:all",
"user:all"
],
"password": "********"
},
{
"username": "username",
"roles": [
"IT Operator"
],
"creator": "admin",
"permissions": [
"checkpoint:all",
"inference:all",
"role:all",
"sagemaker_endpoint:all",
"train:all",
"user:all"
],
"password": "********"
}
],
"previous_evaluated_key": "not_applicable",
"last_evaluated_key": "not_applicable"
},
"message": "OK"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» statusCode|integer|true|none||none|
|» data|object|true|none||none|
|»» users|[object]|true|none||none|
|»»» username|string|true|none||none|
|»»» roles|[string]|true|none||none|
|»»» creator|string|true|none||none|
|»»» permissions|[string]|true|none||none|
|»»» password|string|true|none||none|
|»» previous_evaluated_key|string|true|none||none|
|»» last_evaluated_key|string|true|none||none|
|» message|string|true|none||none|
<a id="opIdCreateUser"></a>
## POST 创建用户 CreateUser
POST /users
创建新用户
Create a new user
> Body Parameters
```json
{
"username": "username",
"password": "XXXXXXXXXXXXX",
"roles": [
"IT Operator",
"Designer"
]
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» username|body|string| yes |用户名User Name|
|» roles|body|[string]| yes |角色列表Roles|
|» permissions|body|[string]| yes |权限列表Permissions|
|» password|body|string| yes |密码Password|
> Response Examples
> Created
```json
{
"statusCode": 201,
"message": "Created"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|201|[Created](https://tools.ietf.org/html/rfc7231#section-6.3.2)|Created|Inline|
### Responses Data Schema
HTTP Status Code **201**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» statusCode|integer|true|none||none|
|» message|string|true|none||none|
<a id="opIdDeleteUser"></a>
## DELETE 删除用户 DeleteUsers
DELETE /users
删除用户
Delete users
> Body Parameters
```json
{
"user_name_list": [
"string"
]
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|username|header|string| yes |none|
|body|body|object| no |none|
|» user_name_list|body|[string]| yes |用户名列表User Name List|
> Response Examples
> 204 Response
```json
{}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|No Content|Inline|
### Responses Data Schema
# 模型文件Checkpoints
<a id="opIdCreateCheckpoint"></a>
## POST 通过URL上传模型文件 CreateCheckpoint
POST /checkpoints
通过URL上传模型文件
Create a new Checkpoint by URL
> Body Parameters
```json
{
"checkpoint_type": "ControlNet",
"params": {
"message": "placeholder for chkpts upload test"
},
"urls": [
"https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.pth"
]
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» checkpoint_type|body|string| yes |模型文件类型Checkpoint Type|
|» params|body|object| yes |参数Params|
|»» message|body|string| yes |模型文件信息Message|
|» urls|body|[string]| yes |URLs|
> Response Examples
> Accepted
```json
{
"statusCode": 202,
"message": "Checkpoint creation in progress, please check later"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|202|[Accepted](https://tools.ietf.org/html/rfc7231#section-6.3.3)|Accepted|Inline|
### Responses Data Schema
HTTP Status Code **202**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» statusCode|integer|true|none||none|
|» data|object|true|none||none|
|»» checkpoint|object|true|none||none|
|»»» id|string|true|none||none|
|»»» type|string|true|none||none|
|»»» s3_location|string|true|none||none|
|»»» status|string|true|none||none|
|»»» params|object|true|none||none|
|»»»» message|string|true|none||none|
|»»»» creator|string|true|none||none|
|»»»» created|string|true|none||none|
|»»»» multipart_upload|object|true|none||none|
|»»»»» v1-5-pruned-emaonly.safetensors2|object|true|none||none|
|»»»»»» upload_id|string|true|none||none|
|»»»»»» bucket|string|true|none||none|
|»»»»»» key|string|true|none||none|
|»» s3PresignUrl|object|true|none||none|
|»»» v1-5-pruned-emaonly.safetensors2|[string]|true|none||none|
|» message|string|true|none||none|
<a id="opIdListCheckpoints"></a>
## DELETE 删除模型文件 DeleteCheckpoints
DELETE /checkpoints
删除模型文件
Delete checkpoints
> Body Parameters
```json
{
"checkpoint_id_list": [
"string"
]
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» checkpoint_id_list|body|[string]| yes |模型文件ID列表ID List|
> Response Examples
> 204 Response
```json
{}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|No Content|Inline|
### Responses Data Schema
<a id="opIdUpdateCheckpoint"></a>
## PUT 更新模型文件状态 UpdateCheckpoint
PUT /checkpoints/{checkpointId}
更新模型文件状态
Update Checkpoint
> Body Parameters
```json
{
"checkpoint_id": "5b47fc8f-c1b0-47ad-9d85-ad0f08526e28",
"status": "Active",
"multi_parts_tags": {
"v1-5-pruned-emaonly.safetensors": [
{
"ETag": "\"e6279f0ad8bf8048c0d106095c4d4b24\"",
"PartNumber": 1
},
{
"ETag": "\"01a458e7d019140cb792b577596b7918\"",
"PartNumber": 2
},
{
"ETag": "\"296e59a1fb1ea02f6512c5b4c4565bea\"",
"PartNumber": 3
},
{
"ETag": "\"9dd22961ddf32130a22b36dc53f93fd0\"",
"PartNumber": 4
},
{
"ETag": "\"bfb91caed0e9f1aaaca7a0f125e7e96b\"",
"PartNumber": 5
}
]
}
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|checkpointId|path|string| yes |none|
|body|body|object| no |none|
|» status|body|string| yes |状态Status|
|» multi_parts_tags|body|object| yes |ETags|
|»» v1-5-pruned-emaonly.safetensors|body|[object]| yes |none|
|»»» ETag|body|string| yes |none|
|»»» PartNumber|body|integer| yes |none|
> Response Examples
> Success
```json
{
"statusCode": 200,
"checkpoint": {
"id": "d613760c-c8f7-466a-9838-cea3033bf57d",
"type": "Stable-diffusion",
"s3_location": "s3://******/Stable-diffusion/checkpoint/custom/d613760c-c8f7-466a-9838-cea3033bf57d",
"status": "Initial",
"params": {
"creator": "admin",
"multipart_upload": {
"v1-5-pruned-emaonly.safetensors": {
"bucket": "******",
"upload_id": "KFzbB7FwAuCDkR3NRaAO81uNM6E38KrvbB9m9T2dPlE0XUbOXrDB0c9CbhpLA3wFqnN6uTf0qh7HOYOmSXFwicHYOL7XfPMAhsT0cbxRhWvbyKPo8bO_wXrFcbUMDY.ef4vFZNKfdKaRba23Src44CrwGtYjkp3RQ8dEZubjleVTTTz0gaclwjfxmrdpqcZa",
"key": "Stable-diffusion/checkpoint/custom/d613760c-c8f7-466a-9838-cea3033bf57d/v1-5-pruned-emaonly.safetensors"
}
},
"message": "api-test-message",
"created": "2023-12-07 00:45:59.334826"
}
}
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» statusCode|integer|true|none||Status Code|
|» headers|object|true|none||none|
|»» Access-Control-Allow-Headers|string|true|none||none|
|»» Access-Control-Allow-Origin|string|true|none||none|
|»» Access-Control-Allow-Methods|string|true|none||none|
|» checkpoint|object|true|none||Checkpoint|
|»» id|string|true|none||ID|
|»» type|string|true|none||Type|
|»» s3_location|string|true|none||S3 Key|
|»» status|string|true|none||Status|
|»» params|object|true|none||none|
|»»» creator|string|true|none||User Name|
|»»» multipart_upload|object|true|none||S3 Multipart Upload|
|»»»» v1-5-pruned-emaonly.safetensors|object|true|none||none|
|»»»»» bucket|string|true|none||none|
|»»»»» upload_id|string|true|none||none|
|»»»»» key|string|true|none||none|
|»»» message|string|true|none||Message|
|»»» created|string|true|none||Created At|
# 推理端点Endpoints
<a id="opIdListEndpoints"></a>
## GET 获取端点列表 ListEndpoints
GET /endpoints
获取推理端点列表
List inference endpoints
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|username|header|string| yes |none|
> Response Examples
> Success
```json
{
"statusCode": 200,
"data": {
"endpoints": [
{
"EndpointDeploymentJobId": "d1253aa5-c884-4989-a7d1-d8806bc4fa59",
"autoscaling": false,
"max_instance_number": "1",
"startTime": "2024-01-30 07:59:46.842717",
"status": null,
"instance_type": "ml.g4dn.2xlarge",
"current_instance_count": "1",
"endTime": "2024-01-30 08:03:33.991793",
"endpoint_status": "InService",
"endpoint_name": "esd-real-time-api-test",
"error": null,
"endpoint_type": "Real-time",
"owner_group_or_role": [
"byoc"
]
},
{
"EndpointDeploymentJobId": "a50ba02e-057f-433d-83be-0f52fdd45b13",
"autoscaling": true,
"max_instance_number": "1",
"startTime": "2024-01-26 08:19:52.759748",
"status": null,
"instance_type": "ml.g4dn.xlarge",
"current_instance_count": "0",
"endTime": "2024-02-02 03:58:32.946464",
"endpoint_status": "InService",
"endpoint_name": "esd-async-api-test",
"error": null,
"endpoint_type": "Async",
"owner_group_or_role": [
"IT Operator"
]
}
]
},
"message": "OK"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» statusCode|integer|true|none||none|
|» data|object|true|none||none|
|»» endpoints|[object]|true|none||none|
|»»» EndpointDeploymentJobId|string|true|none||none|
|»»» autoscaling|boolean|true|none||none|
|»»» max_instance_number|string|true|none||none|
|»»» startTime|string|true|none||none|
|»»» status|null|true|none||none|
|»»» instance_type|string|true|none||none|
|»»» current_instance_count|string|true|none||none|
|»»» endTime|string|true|none||none|
|»»» endpoint_status|string|true|none||none|
|»»» endpoint_name|string|true|none||none|
|»»» error|null|true|none||none|
|»»» endpoint_type|string|true|none||none|
|»»» owner_group_or_role|[string]|true|none||none|
|» message|string|true|none||none|
<a id="opIdCreateEndpoint"></a>
## POST 创建端点 CreateEndpoint
POST /endpoints
创建推理端点
Create Endpoint
> Body Parameters
```json
{
"endpoint_name": "test",
"instance_type": "ml.g5.2xlarge",
"initial_instance_count": "1",
"autoscaling_enabled": false,
"assign_to_roles": [
"Designer",
"IT Operator"
]
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» endpoint_name|body|string| yes |端点名称Endpoint Name|
|» endpoint_type|body|string| yes |端点类型Endpoint Type|
|» instance_type|body|string| yes |实例类型Instance Type|
|» initial_instance_count|body|integer| yes |初始实例数Initial Instance Count|
|» autoscaling_enabled|body|boolean| yes |开启 AutoscalingEnable Autoscaling|
|» assign_to_roles|body|[string]| yes |角色列表Role List|
|» creator|body|string| yes |创建者用户名Creator User Name|
|» min_instance_number|body|integer| yes |最小实例数Min Instance Count|
|» max_instance_number|body|integer| yes |最大实例数Max Instance Count|
> Response Examples
> Success
```json
{
"statusCode": 200,
"message": "Endpoint deployment started: infer-endpoint-prod",
"data": {
"EndpointDeploymentJobId": "60b12a2e-c54d-496c-b405-1bc77b17e2f9",
"autoscaling": false,
"max_instance_number": "1",
"startTime": "2023-12-07 01:08:43.410628",
"status": null,
"current_instance_count": "0",
"endTime": null,
"endpoint_status": "Creating",
"endpoint_name": "infer-endpoint-prod",
"error": null,
"owner_group_or_role": [
"Designer",
"IT Operator"
]
}
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» statusCode|integer|true|none||none|
|» message|string|true|none||none|
|» data|[Endpoint](#schemaendpoint)|true|none||none|
|»» EndpointDeploymentJobId|string|true|none||ID|
|»» autoscaling|boolean|true|none||Autoscaling Enabled|
|»» max_instance_number|string|true|none||Max Instance Count|
|»» startTime|string|true|none||Start Time|
|»» current_instance_count|integer|true|none||Current Instance Count|
|»» endTime|string|true|none||End Time|
|»» endpoint_status|string|true|none||Endpoint Status|
|»» endpoint_name|string|true|none||Endpoint Name|
|»» error|null|true|none||Error Message|
|»» owner_group_or_role|[string]|true|none||Roles|
<a id="opIdDeleteEndpoints"></a>
## DELETE 删除端点 DeleteEndpoints
DELETE /endpoints
删除推理端点
Delete endpoints
> Body Parameters
```json
{
"endpoint_name_list": [
"esd-async-test-tmp"
]
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|username|header|string| yes |none|
|body|body|object| no |none|
|» endpoint_name_list|body|[string]| yes |端点名列表Endpoint Name List|
> Response Examples
> 200 Response
```json
{}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
# 推理Inferences
<a id="opIdCreateInferenceJob"></a>
## POST 创建实时推理作业 CreateInferenceJob
POST /inferences
创建推理作业,创建成功后,需要通过返回的`api_params_s3_upload_url` 上传推理参数
Create inference, When you got response, you have to upload your Payload to `api_params_s3_upload_url`
> Body Parameters
```json
{
"user_id": "admin",
"inference_type": "Async",
"task_type": "txt2img",
"models": {
"Stable-diffusion": [
"v1-5-pruned-emaonly.safetensors"
],
"VAE": [
"Automatic"
],
"embeddings": []
},
"filters": {
"createAt": 1707141090.135923,
"creator": "sd-webui"
}
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|username|header|string| yes |none|
|body|body|object| no |none|
|» inference_type|body|string| yes |推理类型Inference TypeAsync | Real-time|
|» task_type|body|string| yes |任务类型Task Typetxt2img | img2img | rembg|
|» models|body|object| yes |模型列表Model List|
|»» Stable-diffusion|body|[string]| yes |none|
|»» VAE|body|[string]| yes |none|
|»» embeddings|body|[string]| yes |none|
> Response Examples
> Success
```json
{
"statusCode": 201,
"data": {
"inference": {
"id": "f3421ce5-9ab9-40a2-b33b-3f126de70a52",
"type": "txt2img",
"api_params_s3_location": "s3://xxxx/txt2img/infer_v2/f3421ce5-9ab9-40a2-b33b-3f126de70a52/api_param.json",
"api_params_s3_upload_url": "https://xxxx.s3.amazonaws.com/txt2img/infer_v2/f3421ce5-9ab9-40a2-b33b-3f126de70a52/api_param.json?AWSAccessKeyId=xxxx&Signature=HNp81KZy2%2FDSgz7%2FWP%2FdMIUPz8s%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEOz%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLXNvdXRoZWFzdC0xIkcwRQIgNMLgV7at1Vaao4wiFDgLOk4vc3OwD1D%2F4vyd%2Bz5vxhkCIQCnDqwzj3jP%2BIEyc2hCFw%2FNbWOHE%2BLDOVNFfxowLpQFEyrhAwi1%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDg2MDY2MDYwMDY5MCIM%2B6KJWPfr9JG4NBwKKrUDxMOpMiWgg2N1uusnm%2FRpoZhBFTe4MnPMNHf5M%2Bb8mTZWHD1JnMNAda1RUzfc9QoL%2BO76bH2QxhHQgmWaCnoX9i4hQCH7U%2F2slmF4EVSktyKWPbKMr%2BooX4uSpCiuU7qXqgjhPKbEn3tmsfH0RVf%2ByaGLXe6G43JAHpArjaJTIRnmH%2Bszbq55F%2FaifIpjhw9IlB6X18uVTzx9vqepS8zF%2Bn7%2F0L0da%2FhNvzz5QbRxbTrzjtDIGKd7aOz2%2BuXM03naXLcRFDRw29wzbMH2Z2P%2Bran9lZsrJBDYlWN4BMV3PSaweOghOOTldPlxylTzWiE86xWmw5kUpgU%2B4A8Te%2BZmJRl6Qqhq7sOZ%2BaaNTAqpYYQhjkFxLFziZjub90%2B7%2B0idFmQN7CpKEmBUTVdrQGAcagAJ9jQRUosTfRfHP%2BiXK1dj2sOOgDsDOZE6X2O9dpJQCiQAJKDDDvBKPn1s%2BDp7KlgRh5AdlBEgUkfcx3fUyhFz7hrVGLHR74hYIScIM714eDMlPvqtPtznr8IKtRvzKRYGxMyN%2FM%2FdvqhDE2WEHOP9M%2B4bvDBxMTDhNngjdZsMs524zVcw79aGrgY6ngEPUkOghS7xw2T1%2FGr6jR8AIjsdZ4ZsC5BZp22jizDO%2FQBmWEH2Z9LJK6Jmf7XwCRagmOuZlc8ZSr929Q48f371DwbhPGJdwjb7VPYqA20CJkcz6mFrU5zwLm%2BqDB2%2BpNVWIBMWeRsoGfcEipeR%2BVRd5DhVh0gCYc9BqDtshpstnhEvesuPSr8syAt5VQwUEAplxtWGFHh%2BPH3RHcgu%2Bw%3D%3D&Expires=1707194752",
"models": [
{
"id": "32a7af23-3763-4289-a6af-2156a2331878",
"name": [
"v1-5-pruned-emaonly.safetensors"
],
"type": "Stable-diffusion"
},
{
"id": "VAE",
"name": [
"Automatic"
],
"type": "VAE"
}
]
}
},
"message": "Created"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» statusCode|integer|true|none||none|
|» data|object|true|none||none|
|»» inference|object|true|none||none|
|»»» id|string|true|none||none|
|»»» type|string|true|none||none|
|»»» api_params_s3_location|string|true|none||none|
|»»» api_params_s3_upload_url|string|true|none||none|
|»»» models|[object]|true|none||none|
|»»»» id|string|true|none||none|
|»»»» name|[string]|true|none||none|
|»»»» type|string|true|none||none|
|» message|string|true|none||none|
<a id="opIdListInferenceJobs"></a>
## DELETE 删除推理作业 DeleteInferenceJobs
DELETE /inferences
删除推理作业
Delete inference jobs
> Body Parameters
```json
{
"inference_id_list": [
"99"
]
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|username|header|string| yes |none|
|body|body|object| no |none|
|» inference_id_list|body|[string]| yes |推理作业ID列表Inference Job ID List|
> Response Examples
> No Content
```json
{}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|No Content|Inline|
### Responses Data Schema
<a id="opIdRunInferenceJob"></a>
## PUT 开始推理作业 StartInferenceJob
PUT /inferences/{jobId}/start
开始推理作业
Start inference job
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|jobId|path|string| yes |推理作业IDInference Job ID|
|username|header|string| yes |none|
> Response Examples
> Success
```json
{
"statusCode": 202,
"data": {
"inference": {
"inference_id": "f3421ce5-9ab9-40a2-b33b-3f126de70a52",
"status": "inprogress",
"endpoint_name": "esd-async-97fce5e",
"output_path": "s3://xxxx/sagemaker_output/48159016-c040-4b49-8a1c-b57445946918.out"
}
},
"message": "Accepted"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» statusCode|integer|true|none||none|
|» data|object|true|none||none|
|»» inference|object|true|none||none|
|»»» inference_id|string|true|none||none|
|»»» status|string|true|none||none|
|»»» endpoint_name|string|true|none||none|
|»»» output_path|string|true|none||none|
|» message|string|true|none||none|
<a id="opIdGetInferenceJob"></a>
## GET 获取推理作业详情 GetInferenceJob
GET /inferences/{jobId}
获取指定的推理作业详情
Gets a specific inference job
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|jobId|path|string| yes |推理作业IDInference Job ID|
> Response Examples
> Success
```json
{
"statusCode": 200,
"data": {
"img_presigned_urls": [
"https://xxxx.s3.amazonaws.com/out/9d93e241-745a-4464-bb99-22253c910a01/result/image_0.png?AWSAccessKeyId=xxxx&Signature=%2BIoU%2BUuY0oJmd9yb8B6xJGnRN3Q%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEOz%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLXNvdXRoZWFzdC0xIkgwRgIhAJXX4Y7cAU1VjSQK3Ga5Q3oWrK9Pu7e%2BaJ%2FcP89H3DnAAiEAw%2FSIHzSWR01mAw6xb2kqhTgkapA3hRzRlmIgb%2FQuuNsq4QMItf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw4NjA2NjA2MDA2OTAiDI5nIbuU88AEtxiKeSq1A0em0PiCJywBO91ACgdnEOZhh46%2BcPMBZS8sbo2G7FuNR8VRz4nGIQjp4HdX468AMjoAN7tRidsufLva6L2xTrqmiiEZobRLqc%2FgsJnuxkK0FFbmdW%2B4GSjUWC8NIyICwF4KtL%2FS05fYVQyq5%2FBV%2B%2FVMw0aT5m7ai4E9FkHAgTsMvhxg31L3v%2BPe8A8Y%2BZbuWGdvonMzHE4CYMKAKe6SfvjK7u8U8YHR8IeCFWd90jzlkygIk83oFVOuyybITePaZbxWKuyEvBSJd3T7y46CeThyzc3I8AlmYTrfbuj8BhSqiptedtN5%2BmtMP5q04c3EGpIQ86B13NAUhHDadBeImztplPRLJFUXJsj7AMUHc5I7h8o%2BRXy1xE4GZD382WXsHOKLJ39UkioqRUvWCAozO%2B%2FBsILadh83RUcE7C7HFGd6%2BdnfcWPfjDOr5i%2FI5P%2BeamDL9Cvw9hakaaMSryI8ki3kmMMbubBc2JExOtspIh3SquN2dw6RUtb34mBZerxZhJHNGFsdARrboM7IZA1f8S6oGuMRX7tr67P%2Fgx5alSHiiS%2FvFlNyPqIRk7O3uAlnzLkQ7IgyMO%2FZhq4GOp0B1Fyc2ySOy88xOUvUFDkJHr5dpVYIOkffdqOgGXOi9H0edCyg8xELWZwofu6eT%2FecDv4xvjkHjXyJ%2B3H7KP1%2FmE2IoQSFJBFvI0El1rvg7jsvROTe8QVuNYG9V1PqH3zLLz%2Fw9V1R9fK6ys5ZdlDCm208LClKZq8YlxQWXlOO%2FLMLcR51FJxqu5tqXLAaVIFDNdwO%2BrUyvZx5xMTifg%3D%3D&Expires=1707195462"
],
"output_presigned_urls": [
"https://xxxx.s3.amazonaws.com/out/9d93e241-745a-4464-bb99-22253c910a01/result/9d93e241-745a-4464-bb99-22253c910a01_param.json?AWSAccessKeyId=xxxx&Signature=sAi%2ByxVsUBdZfSh34QCMAh%2B2jGg%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEOz%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLXNvdXRoZWFzdC0xIkgwRgIhAJXX4Y7cAU1VjSQK3Ga5Q3oWrK9Pu7e%2BaJ%2FcP89H3DnAAiEAw%2FSIHzSWR01mAw6xb2kqhTgkapA3hRzRlmIgb%2FQuuNsq4QMItf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw4NjA2NjA2MDA2OTAiDI5nIbuU88AEtxiKeSq1A0em0PiCJywBO91ACgdnEOZhh46%2BcPMBZS8sbo2G7FuNR8VRz4nGIQjp4HdX468AMjoAN7tRidsufLva6L2xTrqmiiEZobRLqc%2FgsJnuxkK0FFbmdW%2B4GSjUWC8NIyICwF4KtL%2FS05fYVQyq5%2FBV%2B%2FVMw0aT5m7ai4E9FkHAgTsMvhxg31L3v%2BPe8A8Y%2BZbuWGdvonMzHE4CYMKAKe6SfvjK7u8U8YHR8IeCFWd90jzlkygIk83oFVOuyybITePaZbxWKuyEvBSJd3T7y46CeThyzc3I8AlmYTrfbuj8BhSqiptedtN5%2BmtMP5q04c3EGpIQ86B13NAUhHDadBeImztplPRLJFUXJsj7AMUHc5I7h8o%2BRXy1xE4GZD382WXsHOKLJ39UkioqRUvWCAozO%2B%2FBsILadh83RUcE7C7HFGd6%2BdnfcWPfjDOr5i%2FI5P%2BeamDL9Cvw9hakaaMSryI8ki3kmMMbubBc2JExOtspIh3SquN2dw6RUtb34mBZerxZhJHNGFsdARrboM7IZA1f8S6oGuMRX7tr67P%2Fgx5alSHiiS%2FvFlNyPqIRk7O3uAlnzLkQ7IgyMO%2FZhq4GOp0B1Fyc2ySOy88xOUvUFDkJHr5dpVYIOkffdqOgGXOi9H0edCyg8xELWZwofu6eT%2FecDv4xvjkHjXyJ%2B3H7KP1%2FmE2IoQSFJBFvI0El1rvg7jsvROTe8QVuNYG9V1PqH3zLLz%2Fw9V1R9fK6ys5ZdlDCm208LClKZq8YlxQWXlOO%2FLMLcR51FJxqu5tqXLAaVIFDNdwO%2BrUyvZx5xMTifg%3D%3D&Expires=1707195462"
],
"inference_info_name": "/tmp/9d93e241-745a-4464-bb99-22253c910a01_param.json",
"startTime": "2024-02-05 06:10:52.552528",
"taskType": "txt2img",
"completeTime": "2024-02-05 06:10:56.270528",
"params": {
"input_body_presign_url": "https://xxxx.s3.amazonaws.com/txt2img/infer_v2/9d93e241-745a-4464-bb99-22253c910a01/api_param.json?AWSAccessKeyId=xxxx&Signature=i8q7mM74oZoqtl6reQCPEklgXkc%3D&x-amz-security-token=IQoJb3JpZ2luX2VjENb%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLXNvdXRoZWFzdC0xIkgwRgIhALn6k5IG2ikYnvMq55N8qzxoi0PcGaPgqzQiNfqjU2ueAiEAlD%2B36qo6fakPvbFIO%2FCEBq3OWIZy3PVRc50g11Yh%2BLAq4QMIn%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw4NjA2NjA2MDA2OTAiDP6CmhQmhgcfvjTYpSq1A%2FUxhB9s6Vam%2FSSyEYlgMkVgvRGOntmYPgfgAdGj9j37KcncPzUxzsuttNgVQzP%2Bu9CVAI4QrO02ObsyNPvsy3KOCLmpBRcSmZDqRkPW5%2BTmQwVEAD8AYut7P3CiLt0mIcCcMS8UOZuXbvb6%2FyaPAegYR20bUEfPDiOEvYxyBOrj9%2FdbED5lvSrS3fHucyIVk9wF6tJQQVucqWRA1qllL6Dj%2BIg86dFYkLl2BiYty0Vd0OBT6y51ATmhBJqqz66M5MlKuVvxWZ5ZL7T%2BcNcJyPnukXAADGuBXt6ZjD7QWxve7TQE6aUTHGi6WbF%2FLi0%2BqWOmVoKdootyVT3bCj34rA56NudSO5t0QjBonQ%2BfnFJlB7s1if4UHZUp%2FijPImWJU8uC6PMp9Qshgux3IwCjO6X%2B5GcyWnL1hO5GaljtyERBLQZ8SS2ZHej3kSw9cJ3w%2FN5cCgejLWkbNffQdkyan1XsRav9ufZOHQMNtupz0LEsUIvbctZjip3FLdBp0rwZDfrBEFlpuDEnmzpCbJVIw7BajO7Fqtu%2FzYHeyEH7ZLLHSMFSkK4apzXb2gkhpmM44XalQzu7MLb1ga4GOp0BghTpORcI%2F6KMUkPVI3YuuZ7O5HLQTlq8TYtl9%2BEWIpG8omXyk232ysXfV4hgvVNA1yOfBpa0IEY86LVLIUOGRgNgPtAkBp2Mao9lA0GcAh2XGCCJYRFyvwVU1veBhN5XgNA15dy1Vqp9YC2ZtwMiTxQcy5R6vlm8mI2cKaI0RJWlD9gWhRhlZJZVx5RTgYI6jjhnr0Zis3L52wmd0A%3D%3D&Expires=1707117052",
"used_models": {
"Stable-diffusion": [
{
"s3": "s3://xxxx/Stable-diffusion/checkpoint/custom/32a7af23-3763-4289-a6af-2156a2331878",
"id": "32a7af23-3763-4289-a6af-2156a2331878",
"model_name": "v1-5-pruned-emaonly.safetensors",
"type": "Stable-diffusion"
}
],
"VAE": [
{
"s3": "None",
"id": "VAE",
"model_name": "Automatic",
"type": "VAE"
}
]
},
"input_body_s3": "s3://xxxx/txt2img/infer_v2/9d93e241-745a-4464-bb99-22253c910a01/api_param.json",
"sagemaker_inference_instance_type": "ml.g4dn.2xlarge",
"sagemaker_inference_endpoint_id": "9ef3c8bf-936e-47bb-a6da-e11e43140fb1",
"sagemaker_inference_endpoint_name": "esd-real-time-9ef3c8b"
},
"InferenceJobId": "9d93e241-745a-4464-bb99-22253c910a01",
"status": "succeed",
"inference_type": "Real-time",
"createTime": "2024-02-05 06:10:52.299624",
"image_names": [
"image_0.png"
],
"owner_group_or_role": [
"admin"
]
},
"message": "OK"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» statusCode|integer|true|none||none|
|» data|object|true|none||none|
|»» img_presigned_urls|[string]|true|none||none|
|»» output_presigned_urls|[string]|true|none||none|
|»» inference_info_name|string|true|none||none|
|»» startTime|string|true|none||none|
|»» taskType|string|true|none||none|
|»» completeTime|string|true|none||none|
|»» params|object|true|none||none|
|»»» input_body_presign_url|string|true|none||none|
|»»» used_models|object|true|none||none|
|»»»» Stable-diffusion|[object]|true|none||none|
|»»»»» s3|string|false|none||none|
|»»»»» id|string|false|none||none|
|»»»»» model_name|string|false|none||none|
|»»»»» type|string|false|none||none|
|»»»» VAE|[object]|true|none||none|
|»»»»» s3|string|false|none||none|
|»»»»» id|string|false|none||none|
|»»»»» model_name|string|false|none||none|
|»»»»» type|string|false|none||none|
|»»» input_body_s3|string|true|none||none|
|»»» sagemaker_inference_instance_type|string|true|none||none|
|»»» sagemaker_inference_endpoint_id|string|true|none||none|
|»»» sagemaker_inference_endpoint_name|string|true|none||none|
|»» InferenceJobId|string|true|none||none|
|»» status|string|true|none||none|
|»» inference_type|string|true|none||none|
|»» createTime|string|true|none||none|
|»» image_names|[string]|true|none||none|
|»» owner_group_or_role|[string]|true|none||none|
|» message|string|true|none||none|
# 训练Trainings
## POST 创建训练作业 CreateTrainingJob
POST /trainings
> Body 参数
```json
{
"lora_train_type": "kohya",
"params": {
"training_params": {
"training_instance_type": "ml.g5.2xlarge",
"s3_model_path": "s3://1697072612/Stable-diffusion/checkpoint/custom/05de5ff6-409d-4fd5-a59a-5c58f8fb2d04/v1-5-pruned-emaonly.safetensors",
"s3_data_path": "s3://1697072612/dataset/lego_technic",
"fm_type": "sd_1_5"
},
"config_params": {
"training": {
"output_name": "demo_xl2024",
"max_train_epochs": 100,
"optimizer_type": "AdamW8bit",
"save_every_n_epochs": 50
}
}
}
}
```
### 参数
|名称|位置|类型|必需|描述|
|---|---|---|---|---|
|username|header|string|是|发起训练的用户|
|body|body|object|否|请求体|
|» lora_train_type|body|string|是|默认值为"kohya",保持为默认值|
|» params|body|object|是|参数|
|»» training_params|body|object|是|训练参数|
|»»» training_instance_type|body|string|是|Kohya 训练使用的实例类型,例如 ml.g5.4xlargeml.g4dn.2xlarge|
|»»» s3_model_path|body|string|是|SD 模型路径,是一个 S3 路径|
|»»» s3_data_path|body|string|是|数据集路径,是一个 S3 路径|
|»»» fm_type|body|string|是|基础模型类型,有效值为 sd_xl 和 sd_1_5。sd_xl 表示基于 SDXL 模型进行训练sd_1_5 表示基于 SD 1.5 模型进行训练|
|»» config_params|body|object|否|Kohya 配置参数|
|»»» training|body|object|否|训练部分,不要更改|
|»»»» output_name|body|string|否|模型输出名称|
|»»»» save_every_n_epochs|body|integer|否|每训练 N 个 epoch 保存一次预览 Lora 模型|
|»»»» max_train_epochs|body|integer|否|强制执行的 epoch 数量|
|»»»» optimizer_type|body|string|否|优化器类型|
您可以在 config_params/training 下添加 Kohya 参数,这些参数可以从 Kohya GUI 导出。如果没有 config_params则将使用一组默认参数进行训练。
> 响应示例
> 成功
```json
{
"statusCode": 200,
"data": {
"id": "da2f2934-89f8-4341-bad0-2ca28348ba14",
"status": "Training",
"created": "1710466658.565659",
"params": {
"config_params": {
"training": {
...
}
},
"training_params": {
...
},
"training_type": "kohya"
},
"input_location": "s3://<sample-bucket>/kohya/train/da2f2934-89f8-4341-bad0-2ca28348ba14/input",
"output_location": "s3://<sample-bucket>/kohya/train/da2f2934-89f8-4341-bad0-2ca28348ba14/output"
},
"message": "OK"
}
```
### 响应
|HTTP 状态码|含义|描述|数据结构|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|内联|
### 响应数据结构
HTTP 状态码 **200**
|名称|类型|必需|限制|标题|描述|
|---|---|---|---|---|---|
|» statusCode|integer|是|无|无|无|
|» data|object|是|无|无|无|
|»» id|string|是|无|无|训练作业 ID您可以使用该 ID 获取训练状态|
|»» status|string|是|无|无|训练状态|
|»» params|string|是|无|无|训练参数|
|»» input_location|string|是|无|无|训练输入位置|
|»» output_location|string|是|无|无|生成模型的 S3 位置|
|» message|string|是|无|无|无|
## GET 获取训练作业状态 GetTrainingJobStatus
GET /trainings/{jobId}
### 参数
|名称|位置|类型|必需|描述|
|---|---|---|---|---|
|username|header|string|是|获取训练作业状态的用户|
|jobId|path|string|是|训练作业 ID|
> 响应示例
> 成功
```json
{
"statusCode": 200,
"data": {
"id": "da2f2934-89f8-4341-bad0-2ca28348ba14",
"checkpoint_id": "da2f2934-89f8-4341-bad0-2ca28348ba14",
"job_status": "Completed",
"model_id": "kohya",
"params": {
...
},
"timestamp": "1710466658.565659",
"train_type": "Stable-diffusion"
},
"message": "OK"
}
```
### 响应
|HTTP 状态码|含义|描述|数据结构|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|内联|
### 响应数据结构
HTTP 状态码 **200**
|名称|类型|必需|限制|标题|描述|
|---|---|---|---|---|---|
|» statusCode|integer|是|无|无|无|
|» data|object|是|
# Data Schema
<h2 id="tocS_Checkpoint">Checkpoint</h2>
<a id="schemacheckpoint"></a>
<a id="schema_Checkpoint"></a>
<a id="tocScheckpoint"></a>
<a id="tocscheckpoint"></a>
```json
{
"id": "string",
"s3Location": "string",
"type": "string",
"status": "string",
"name": [
"string"
],
"created": 0,
"allowed_roles_or_users": [
"string"
]
}
```
### Attribute
|Name|Type|Required|Restrictions|Title|Description|
|---|---|---|---|---|---|
|id|string|true|none||none|
|s3Location|string|true|none||none|
|type|string|true|none||none|
|status|string|true|none||none|
|name|[string]|true|none||none|
|created|number|true|none||none|
|allowed_roles_or_users|[string]|true|none||none|
<h2 id="tocS_Endpoint">Endpoint</h2>
<a id="schemaendpoint"></a>
<a id="schema_Endpoint"></a>
<a id="tocSendpoint"></a>
<a id="tocsendpoint"></a>
```json
{
"EndpointDeploymentJobId": "string",
"autoscaling": true,
"max_instance_number": "string",
"startTime": "string",
"current_instance_count": 0,
"endTime": "string",
"endpoint_status": "string",
"endpoint_name": "string",
"error": null,
"owner_group_or_role": [
"string"
]
}
```
### Attribute
|Name|Type|Required|Restrictions|Title|Description|
|---|---|---|---|---|---|
|EndpointDeploymentJobId|string|true|none||ID|
|autoscaling|boolean|true|none||Autoscaling Enabled|
|max_instance_number|string|true|none||Max Instance Count|
|startTime|string|true|none||Start Time|
|current_instance_count|integer|true|none||Current Instance Count|
|endTime|string|true|none||End Time|
|endpoint_status|string|true|none||Endpoint Status|
|endpoint_name|string|true|none||Endpoint Name|
|error|null|true|none||Error Message|
|owner_group_or_role|[string]|true|none||Roles|
<h2 id="tocS_User">User</h2>
<a id="schemauser"></a>
<a id="schema_User"></a>
<a id="tocSuser"></a>
<a id="tocsuser"></a>
```json
{
"username": "string",
"roles": [
"string"
],
"creator": "string",
"permissions": [
"string"
],
"password": "string"
}
```
### Attribute
|Name|Type|Required|Restrictions|Title|Description|
|---|---|---|---|---|---|
|username|string|true|none||用户名User Name|
|roles|[string]|true|none||角色列表Roles|
|creator|string|true|none||创建者用户名Creator User Name|
|permissions|[string]|true|none||权限列表Permissions|
|password|string|true|none||密码Password|
<h2 id="tocS_InferenceJob">InferenceJob</h2>
<a id="schemainferencejob"></a>
<a id="schema_InferenceJob"></a>
<a id="tocSinferencejob"></a>
<a id="tocsinferencejob"></a>
```json
{
"inference_info_name": "string",
"startTime": "string",
"taskType": "string",
"completeTime": "string",
"params": {
"input_body_presign_url": "string",
"used_models": {
"Stable-diffusion": [
{
"s3": "string",
"id": "string",
"model_name": "string",
"type": "string"
}
],
"Lora": [
{
"s3": "string",
"id": "string",
"model_name": "string",
"type": "string"
}
]
},
"input_body_s3": "string",
"output_path": "string",
"sagemaker_inference_endpoint_id": "string",
"sagemaker_inference_endpoint_name": "string"
},
"InferenceJobId": "string",
"status": "string",
"sagemakerRaw": "string",
"image_names": [
"string"
],
"owner_group_or_role": [
"string"
]
}
```
### Attribute
|Name|Type|Required|Restrictions|Title|Description|
|---|---|---|---|---|---|
|inference_info_name|string|true|none||Inference Info Name|
|startTime|string|true|none||Start Time|
|taskType|string|true|none||Task Type|
|completeTime|string|true|none||Complete Time|
|params|object|true|none||Params|
|» input_body_presign_url|string|true|none||none|
|» used_models|object|true|none||none|
|»» Stable-diffusion|[object]|true|none||none|
|»»» s3|string|false|none||none|
|»»» id|string|false|none||none|
|»»» model_name|string|false|none||none|
|»»» type|string|false|none||none|
|»» Lora|[object]|true|none||none|
|»»» s3|string|false|none||none|
|»»» id|string|false|none||none|
|»»» model_name|string|false|none||none|
|»»» type|string|false|none||none|
|» input_body_s3|string|true|none||none|
|» output_path|string|true|none||none|
|» sagemaker_inference_endpoint_id|string|true|none||none|
|» sagemaker_inference_endpoint_name|string|true|none||none|
|InferenceJobId|string|true|none||Inference Job Id|
|status|string|true|none||Status|
|sagemakerRaw|string|true|none||Sagemaker Raw|
|image_names|[string]|true|none||Images Array|
|owner_group_or_role|[string]|true|none||Roles|
<h2 id="tocS_Role">Role</h2>
<a id="schemarole"></a>
<a id="schema_Role"></a>
<a id="tocSrole"></a>
<a id="tocsrole"></a>
```json
{
"role_name": "string",
"creator": "string",
"permissions": [
"string"
]
}
```
### Attribute
|Name|Type|Required|Restrictions|Title|Description|
|---|---|---|---|---|---|
|role_name|string|true|none||角色名Role Name|
|creator|string|true|none||创建者用户名Creator User Name|
|permissions|[string]|true|none||权限列表Permissions|