PPanel Edge

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": []
}