Service accounts
由 openapi.json 自动生成的 5 个端点及其请求、响应和权限元数据。
此参考由已发布 API 契约生成。字段、请求头和权限要求如下。
下载完整 OpenAPI 文档 · SHA-256: ccaa20cec11fad96e369b88073ce3608a5b071ce55d6dc03fa31df7b0f08c525
标识符和数据结构与公开契约一致,说明直接给出调用规则。共享模型见 数据模型.
GET /api/v1/admin/service-accounts
GET /api/v1/admin/service-accounts
{
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"properties": {
"items": {
"items": {
"properties": {
"created_at": {
"type": "string"
},
"id": {
"format": "uuid",
"type": "string"
},
"name": {
"type": "string"
},
"roles": {
"items": {
"type": "string"
},
"type": "array"
},
"status": {
"type": "string"
}
},
"required": [
"id",
"name",
"status",
"roles",
"created_at"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
}
}
},
"description": "Success"
}
},
"tags": [
"Service accounts"
],
"x-audit": "iam.service_account.list",
"x-body": "none",
"x-body-limit": 0,
"x-idempotency": "none",
"x-permission": "iam.api_key.manage",
"x-rate-limit": "iam.service_account.admin",
"x-reauth": false,
"effectiveSecurity": []
}POST /api/v1/admin/service-accounts
POST /api/v1/admin/service-accounts
{
"requestBody": {
"content": {
"application/json": {
"schema": {
"additionalProperties": false,
"properties": {
"name": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"roles": {
"items": {
"pattern": "^[a-z][a-z0-9_]{1,31}$",
"type": "string"
},
"maxItems": 20,
"type": "array"
}
},
"required": [
"name",
"roles"
],
"type": "object"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"properties": {
"created_at": {
"type": "string"
},
"id": {
"format": "uuid",
"type": "string"
},
"name": {
"type": "string"
},
"roles": {
"items": {
"type": "string"
},
"type": "array"
},
"status": {
"type": "string"
}
},
"required": [
"id",
"name",
"status",
"roles",
"created_at"
],
"type": "object"
}
}
},
"description": "Success"
}
},
"tags": [
"Service accounts"
],
"x-audit": "iam.service_account.create",
"x-body": "json",
"x-body-limit": 65536,
"x-idempotency": "required",
"x-permission": "iam.api_key.manage",
"x-rate-limit": "iam.service_account.admin",
"x-reauth": true,
"effectiveSecurity": []
}GET /api/v1/admin/service-accounts/{id}/api-keys
GET /api/v1/admin/service-accounts/{id}/api-keys
{
"parameters": [
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"properties": {
"items": {
"items": {
"properties": {
"enabled": {
"type": "boolean"
},
"expires_at": {
"type": [
"string",
"null"
]
},
"id": {
"format": "uuid",
"type": "string"
},
"last_request": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"prefix": {
"type": [
"string",
"null"
]
},
"rate_limit_max": {
"type": [
"number",
"null"
]
},
"start": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"name",
"start",
"prefix",
"enabled",
"expires_at",
"last_request",
"rate_limit_max"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
}
}
},
"description": "Success"
}
},
"tags": [
"Service accounts"
],
"x-audit": "iam.api_key.list",
"x-body": "none",
"x-body-limit": 0,
"x-idempotency": "none",
"x-permission": "iam.api_key.manage",
"x-rate-limit": "iam.service_account.admin",
"x-reauth": false,
"effectiveSecurity": []
}POST /api/v1/admin/service-accounts/{id}/api-keys
POST /api/v1/admin/service-accounts/{id}/api-keys
{
"parameters": [
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"additionalProperties": false,
"properties": {
"expires_in_seconds": {
"maximum": 31622400,
"minimum": 60,
"type": "integer"
},
"name": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"rate_limit_max": {
"default": 100,
"maximum": 10000,
"minimum": 1,
"type": "integer"
},
"rate_limit_window_seconds": {
"default": 60,
"maximum": 3600,
"minimum": 1,
"type": "integer"
}
},
"required": [
"name",
"expires_in_seconds"
],
"type": "object"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"properties": {
"expires_at": {
"type": "string"
},
"id": {
"format": "uuid",
"type": "string"
},
"key": {
"type": "string"
}
},
"required": [
"id",
"key",
"expires_at"
],
"type": "object"
}
}
},
"description": "Success"
}
},
"tags": [
"Service accounts"
],
"x-audit": "iam.api_key.issue",
"x-body": "json",
"x-body-limit": 65536,
"x-idempotency": "none",
"x-permission": "iam.api_key.manage",
"x-rate-limit": "iam.service_account.admin",
"x-reauth": true,
"effectiveSecurity": []
}DELETE /api/v1/admin/service-accounts/{id}/api-keys/{keyId}
DELETE /api/v1/admin/service-accounts/{id}/api-keys/{keyId}
{
"parameters": [
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"in": "path",
"name": "keyId",
"required": true,
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"204": {
"description": "Revoked"
}
},
"tags": [
"Service accounts"
],
"x-audit": "iam.api_key.revoke",
"x-body": "none",
"x-body-limit": 0,
"x-idempotency": "none",
"x-permission": "iam.api_key.manage",
"x-rate-limit": "iam.service_account.admin",
"x-reauth": true,
"effectiveSecurity": []
}