• API 参考
  • API 参考
    • 1. 端点
      • 1.1 应用
        • 列出应用
        • 应用的信息
        • 删除一个应用
        • 创建一个应用
        • 重启一个应用
        • 给应用环境变量
        • 设置一个应用环境
        • 执行一个命令
        • 从一个应用中删除一个或多个环境变量
        • 交换两个应用的地址
        • 获取一个应用的日志
        • 列出可用的池子(pool)
        • 改变应用的池子(pool)
      • 1.2 服务
        • 列出服务
        • 创建一个新的服务
        • 删除一个服务
        • 更新一个服务
        • 获取一个服务的信息
        • 获取服务文档
        • 更新服务文档
        • 授予服务访问(权限)
        • 撤销服务的访问(权限)
      • 1.3 服务实例
        • 增加一个新的服务实例
        • 删除一个服务实例
        • 绑定一个服务实例到一个应用
        • 把一个服务实例从一个应用中解绑定
        • 列出所有的服务及你的实例
        • 获取一个服务实例的信息
        • 服务实例状态
        • 授予服务实例访问(权限)
        • 撤销服务实例的访问(权限)
      • 1.4 配额
        • 获取一个用户的配额信息
      • 1.5 修复者(Healers)
        • 列出修复者
        • 执行修复者
      • 1.6 平台
        • 列出平台
      • 1.7 用户
        • 创建一个用户
        • 重置密码
        • 登录
        • 登出(退出)
        • 当前用户的信息
        • 改变密码
        • 删除一个用户
        • 给用户增加一个公钥
        • 删除用户的公钥
        • 显示 API 秘钥
        • 重新生成 API 秘钥
      • 1.8 团队
        • 列出团队
        • 团队的信息
        • 增加一个团队
        • 删除一个团队
        • 增加用户到一个团队
        • 从团队中删除用户
      • 1.9 部署
        • 部署列表
        • 获取一次部署的信息
      • 1.10 元数据
        • Tsuru API 信息
        • Tsuru API 服务器的基本健康检查
        • 所有 Tsuru 组件的完整健康检查

    API 参考

    API 参考

    1. 端点

    1.1 应用

    列出应用

    - Method: GET- Endpoint: /apps- Format: JSON

    成功时返回 200,在响应的 body 中的 JSON 数据包含了应用列表。

    例子:

    1. GET /apps HTTP/1.1
    2. Content-Length: 82
    3. [{"Ip":"10.10.10.10","Name":"app1","Units":[{"Name":"app1/0","State":"started"}]}]

    应用的信息

    - Method: GET- Endpoint: /apps/- Format: JSON

    成功时返回 200,在响应的 body 中的 JSON 数据包含了应用的内容。

    例子:

    1. GET /apps/myapp HTTP/1.1
    2. Content-Length: 284
    3. {"Name":"app1","Framework":"php","Repository":"git@git.com:php.git","State":"dead","Units":[{"Ip":"10.10.10.10","Name":"app1/0","State":"started"}, {"Ip":"9.9.9.9","Name":"app1/1","State":"started"},{"Ip":"","Name":"app1/2","State":"pending"}],"Teams":["tsuruteam","crane"],"Pool": "mypool"}

    删除一个应用

    - Method: DELETE- Endpoint: /apps/

    成功时返回 200。

    例子:

    1. DELETE /apps/myapp HTTP/1.1

    创建一个应用

    - Method: POST- Endpoint: /apps- Format: JSON

    成功时返回 200,在响应的 body 中的 JSON 数据包含了状态和 Git 仓库的 URL 。

    例子:

    1. POST /apps HTTP/1.1
    2. {"status":"success", "repository_url":"git@tsuru.mycompany.com:ble.git"}

    重启一个应用

    - Method: GET- Endpoint: /apps//restart

    成功时返回 200。

    例子:

    1. GET /apps/myapp/restart HTTP/1.1

    给应用环境变量

    - Method: GET- Endpoint: /apps//env

    成功时返回 200,在响应的 body 中的 JSON 数据返回了一个带环境名和值的字典。

    例子:

    1. GET /apps/myapp/env HTTP/1.1
    2. [{"name": "DATABASE_HOST", "value": "localhost", "public": true}]

    设置一个应用环境

    - Method: POST- Endpoint: /apps//env

    成功时返回 200。

    例子:

    1. POST /apps/myapp/env HTTP/1.1

    执行一个命令

    - Method: POST- Endpoint: /apps//run?once=true

    成功时返回 200。

    此处:

    • once 是一 boolean 值,指示命令是在一个单元上运行(once=true)还是在所有单元上运行(once=false)。这一参数不是必须的,缺省值为 false。
      例子:
    1. POST /apps/myapp/run HTTP/1.1
    2. ls -la

    从一个应用中删除一个或多个环境变量

    - Method: DELETE- Endpoint: /apps//env

    成功时返回 200。

    例子:

    1. DELETE /apps/myapp/env HTTP/1.1

    交换两个应用的地址

    - Method: PUT- Endpoint: /swap?app1=appname&app2=anotherapp

    成功时返回 200。

    例子:

    1. PUT /swap?app1=myapp&app2=anotherapp

    获取一个应用的日志

    - Method: GET- Endpoint: /apps/appname/log?lines=10&source=web&unit=abc123

    成功时返回 200。找不到应用时返回 404。

    此处:

    • lines 是日志行数。这一参数是必须的。
    • source 是日志源,如 tsuru (tsuru API) 或一个进程。
    • unit 是一个单元的 id
      例子:
    1. GET /apps/myapp/log?lines=20&source=web&unit=83535b503c96
    2. Content-Length: 142
    3. [{"Date":"2014-09-26T00:26:30.036Z","Message":"Booting worker with pid: 53","Source":"web","AppName":"tsuru-dashboard","Unit":"83535b503c96"}]

    列出可用的池子(pool)

    - Method: GET- Endpoint: /pools

    成功时返回 200。

    例子:

    1. GET /pools
    2. [{"Team":"team1","Pools":["pool1","pool2"]},{"Team":"team2","Pools":["pool3"]}]

    改变应用的池子(pool)

    - Method: POST- Endpoint: /apps//pool

    成功时返回 200。找不到应用时返回 404。

    例子:

    1. POST /apps/myapp/pool

    1.2 服务

    列出服务

    - Method: GET- Endpoint: /services- Format: JSON

    成功时返回 200。

    例子:

    1. GET /services HTTP/1.1
    2. Content-Length: 67
    3. {"service": "mongodb", "instances": ["my_nosql", "other-instance"]}

    创建一个新的服务

    - Method: POST- Endpoint: /services- Format: yaml- Body: a yaml with the service metadata.

    成功时返回 200。如果用户不是团队成员时返回 403。如果 yaml 非法时返回 500。如果服务名字已经存在时返回 500。

    例子:

    1. POST /services HTTP/1.1
    2. id: some_service
    3. endpoint:
    4. production: someservice.com

    删除一个服务

    - Method: DELETE- Endpoint: /services/

    成功时返回 204。如果用户没有进入(access)服务器时返回 403。如果服务已经有实例时返回 403。服务找不到时返回 404。

    例子:

    1. DELETE /services/mongodb HTTP/1.1

    更新一个服务

    - Method: PUT- Endpoint: /services- Format: yaml- Body: a yaml with the service metadata.

    成功时返回 200。如果用户不是团队成员时返回 403。如果 yaml 非法时返回 500。如果服务名字已经存在时返回 500。

    例子:

    1. PUT /services HTTP/1.1
    2. id: some_service
    3. endpoint:
    4. production: someservice.com

    获取一个服务的信息

    - Method: GET- Endpoint: /services/- Format: JSON

    成功时返回 200。如果服务不存在时返回 404。

    例子:

    1. GET /services/mongodb HTTP/1.1
    2. [{"Name": "my-mongo", "Teams": ["myteam"], "Apps": ["myapp"], "ServiceName": "mongodb"}]

    获取服务文档

    - Method: GET- Endpoint: /services//doc- Format: text

    成功时返回 200。如果服务不存在时返回 404。

    例子:

    1. GET /services/mongodb/doc HTTP/1.1
    2. Mongodb exports the ...

    更新服务文档

    - Method: PUT- Endpoint: /services//doc- Format: text- Body: text with the documentation

    成功时返回 200。如果服务不存在时返回 404。

    例子:

    1. PUT /services/mongodb/doc HTTP/1.1
    2. Body: Mongodb exports the ...

    授予服务访问(权限)

    - Method: PUT- Endpoint: /services//

    成功时返回 200。如果服务不存在时返回 404。

    例子:

    1. PUT /services/mongodb/cobrateam HTTP/1.1

    撤销服务的访问(权限)

    - Method: DELETE- Endpoint: /services//

    成功时返回 200。如果服务不存在时返回 404。

    例子:

    1. DELETE /services/mongodb/cobrateam HTTP/1.1

    1.3 服务实例

    增加一个新的服务实例

    - Method: POST- Endpoint: /services/instances- Body: {"name": "mymysql", "service_name": "mysql"}

    成功时返回 200。如果服务不存在时返回 404。

    例子:

    1. POST /services/instances HTTP/1.1
    2. {"name": "mymysql", "service_name": "mysql"}

    删除一个服务实例

    - Method: DELETE- Endpoint: /services/instances/

    成功时返回 200。如果服务不存在时返回 404。

    例子:

    1. DELETE /services/instances/mymysql HTTP/1.1

    绑定一个服务实例到一个应用

    - Method: PUT- Endpoint: /services/instances//- Format: JSON

    成功时返回 200,以及一个将要导出到应用环境的环境变量的 JSON 数据。如果用户没有访问应用的权限时返回 403。如果应用不存在时返回 404。如果服务实例不存在时返回 404。

    例子:

    1. PUT /services/instances/mymysql/myapp HTTP/1.1
    2. Content-Length: 29
    3. {"DATABASE_HOST":"localhost"}

    把一个服务实例从一个应用中解绑定

    - Method: DELETE- Endpoint: /services/instances//

    成功时返回 200。如果用户没有访问应用的权限时返回 403。如果应用不存在时返回 404。如果服务实例不存在时返回 404。

    例子:

    1. DELETE /services/instances/mymysql/myapp HTTP/1.1

    列出所有的服务及你的实例

    - Method: GET- Endpoint: /services/instances?app=appname- Format: JSON

    成功时返回 200,以及一个服务列表的 JSON 数据。

    此处:

    • app 是你想用作过滤器的应用的名字。如果定义了,只有绑定到这个应用的实例才会返回。这一参数是可选的。
      例子:
    1. GET /services/instances HTTP/1.1
    2. Content-Length: 52
    3. [{"service": "redis", "instances": ["redis-globo"]}]

    获取一个服务实例的信息

    - Method: GET- Endpoint: /services/instances/- Format: JSON

    成功时返回 200,以及一个服务实例数据的 JSON 数据。如果服务实例不存在时返回 404。

    例子:

    1. GET /services/instances/mymysql HTTP/1.1
    2. Content-Length: 71
    3. {"name": "mongo-1", "servicename": "mongodb", "teams": [], "apps": []}

    服务实例状态

    - Method: GET- Endpoint: /services/instances//status

    成功时返回 200。

    例子:

    1. GET /services/instances/mymysql/status HTTP/1.1

    授予服务实例访问(权限)

    - Method: PUT- Endpoint: /services/instances/permission//

    成功时返回 200。如果服务不存在时返回 404。

    例子:

    1. PUT /services/instances/permission/mongodb-instance/cobrateam HTTP/1.1

    撤销服务实例的访问(权限)

    - Method: DELETE- Endpoint: /services/instances/permission//

    成功时返回 200。如果服务不存在时返回 404。

    例子:

    1. DELETE /services/instances/permission/mongodb-instance/cobrateam HTTP/1.1

    1.4 配额

    获取一个用户的配额信息

    - Method: GET- Endpoint: /quota/- Format: JSON

    成功时返回 200,以及一个配额信息的 JSON 数据。

    例子:

    1. GET /quota/wolverine HTTP/1.1
    2. Content-Length: 29
    3. {"items": 10, "available": 2}

    1.5 修复者(Healers)

    列出修复者

    - Method: GET- Endpoint: /healers- Format: JSON

    成功时返回 200,以及一个 body 中的修复者列表的 JSON 数据。

    例子:

    1. GET /healers HTTP/1.1
    2. Content-Length: 35
    3. [{"app-heal": "http://healer.com"}]

    执行修复者

    - Method: GET- Endpoint: /healers/

    成功时返回 200。

    例子:

    1. GET /healers/app-heal HTTP/1.1

    1.6 平台

    列出平台

    - Method: GET- Endpoint: /platforms- Format: JSON

    成功时返回 200,以及一个 body 中的平台列表的 JSON 数据。

    例子:

    1. GET /platforms HTTP/1.1
    2. Content-Length: 67
    3. [{Name: "python"},{Name: "java"},{Name: "ruby20"},{Name: "static"}]

    1.7 用户

    创建一个用户

    - Method: POST- Endpoint: /users- Body: {"email":"nobody@globo.com","password":"123456"}

    成功时返回 200。如果 JSON 非法时返回 400.如果邮件非法时返回 400.如果密码字符长度小于 6或者大于 50 时返回 400.如果邮件已存在时返回 409.

    例子:

    1. POST /users HTTP/1.1
    2. Body: `{"email":"nobody@globo.com","password":"123456"}`

    重置密码

    - Method: POST- Endpoint: /users//password?token=token

    成功时返回 200。找不到用户时返回 404。

    token 参数是可选的。

    例子:

    1. POST /users/user@email.com/password?token=1234 HTTP/1.1

    登录

    - Method: POST- Endpoint: /users//tokens- Body: {"password":"123456"}

    成功时返回 200。如果 JSON 非法时返回 400.如果密码为空时返回 400.找不到用户时返回 404。

    例子:

    1. POST /users/user@email.com/tokens HTTP/1.1
    2. {"token":"e275317394fb099f62b3993fd09e5f23b258d55f"}

    登出(退出)

    - Method: DELETE- Endpoint: /users/tokens

    成功时返回 200。

    例子:

    1. DELETE /users/tokens HTTP/1.1

    当前用户的信息

    - Method: GET- Endpoint: /users/info

    成功时返回 200,以及一个关于当前用户信息的 JSON 数据。

    例子:

    1. GET /users/info HTTP/1.1
    2. {"Email":"myuser@company.com","Teams":["frontend","backend","sysadmin","full stack"]}

    改变密码

    - Method: PUT- Endpoint: /users/password- Body: {"old":"123456","new":"654321"}

    成功时返回 200。如果 JSON 非法时返回 400。如果旧或新密码为空时返回 400。如果密码字符长度小于 6 或者大于 50 时返回 400。如果旧密码与当前密码不匹配时返回 403。

    例子:

    1. PUT /users/password HTTP/1.1
    2. Body: `{"old":"123456","new":"654321"}`

    删除一个用户

    - Method: DELETE- Endpoint: /users

    成功时返回 200。

    例子:

    1. DELETE /users HTTP/1.1

    给用户增加一个公钥

    - Method: POST- Endpoint: /users/keys- Body: {"key":"my-key"}

    成功时返回 200。

    例子:

    1. POST /users/keys HTTP/1.1
    2. Body: `{"key":"my-key"}`

    删除用户的公钥

    - Method: DELETE- Endpoint: /users/keys- Body: {"key":"my-key"}

    成功时返回 200。

    例子:

    1. DELETE /users/keys HTTP/1.1
    2. Body: `{"key":"my-key"}`

    显示 API 秘钥

    - Method: GET- Endpoint: /users/api-key- Format: JSON

    成功时返回 200,以及一个 body 中的 API 秘钥的 JSON 数据。

    例子:

    1. GET /users/api-key HTTP/1.1
    2. Body: `{"token": "e275317394fb099f62b3993fd09e5f23b258d55f", "users": "user@email.com"}`

    重新生成 API 秘钥

    - Method: POST- Endpoint: /users/api-key

    成功时返回 200。

    例子:

    1. POST /users/api-key HTTP/1.1

    1.8 团队

    列出团队

    - Method: GET- Endpoint: /teams- Format: JSON

    成功时返回 200,以及一个 body 中的团队列表的 JSON 数据。

    例子:

    1. GET /teams HTTP/1.1
    2. Content-Length: 22
    3. [{"name": "teamname"}]

    团队的信息

    - Method: GET- Endpoint: /teams/- Format: JSON

    成功时返回 200,以及一个 body 中团队信息的 JSON 数据。

    例子:

    1. GET /teams/teamname HTTP/1.1
    2. {"name": "teamname", "users": ["user@email.com"]}

    增加一个团队

    - Method: POST- Endpoint: /teams

    成功时返回 200。

    例子:

    1. POST /teams HTTP/1.1
    2. {"name": "teamname"}

    删除一个团队

    - Method: DELETE- Endpoint: /teams/

    成功时返回 200。

    例子:

    1. DELELE /teams/myteam HTTP/1.1

    增加用户到一个团队

    - Method: PUT- Endpoint: /teams//

    成功时返回 200。

    例子:

    1. PUT /teams/myteam/myuser HTTP/1.1

    从团队中删除用户

    - Method: DELETE- Endpoint: /teams//

    成功时返回 200。

    例子:

    1. DELETE /teams/myteam/myuser HTTP/1.1

    1.9 部署

    部署列表

    - Method: GET- Endpoint: /deploys?app=appname&service=servicename- Format: JSON

    成功时返回 200,以及响应的 body 中一个包含部署列表的 JSON 数据。

    此处:

    • appapp 名字。
    • serviceservice 名字。
      例子:
    1. GET /deploys HTTP/1.1
    2. [{"Ip":"10.10.10.10","Name":"app1","Units":[{"Name":"app1/0","State":"started"}]}]
    3. [{"ID":"543c20a09e7aea60156191c0","App":"myapp","Timestamp":"2013-11-01T00:01:00-02:00","Duration":29955456221322857,"Commit":"","Error":""},{"ID":"543c20a09e7aea60156191c1","App":"yourapp","Timestamp":"2013-11-01T00:00:01-02:00","Duration":29955456221322857,"Commit":"","Error":""}]

    获取一次部署的信息

    - Method: GET- Format: JSON- Endpoint: /deploys/:deployid

    成功时返回 200。部署找不到时返回 404。

    例子:

    1. GET /deploys/12345
    2. {"ID":"54ff355c283dbed9868f01fb","App":"tsuru-dashboard","Timestamp":"2015-03-10T15:18:04.301-03:00","Duration":20413970850,"Commit":"","Error":"","Image":"192.168.50.4:3030/tsuru/app-tsuru-dashboard:v2","Log":"[deploy log]","Origin":"app-deploy","CanRollback":false,"RemoveDate":"0001-01-01T00:00:00Z"}

    1.10 元数据

    Tsuru API 信息

    - Method: GET- Endpoint: /info- Format: JSON

    成功时返回 200,以及响应的 body 中一个包含元数据的 JSON 数据。

    例子:

    1. GET /info HTTP/1.1
    2. {"version": "1.0"}

    Tsuru API 服务器的基本健康检查

    - Method: GET- Endpoint: /healthcheck/- Format: text

    总是返回 200 和文本 body WORKING

    例子:

    1. GET /healthcheck/ HTTP/1.1
    2. WORKING

    所有 Tsuru 组件的完整健康检查

    - Method: GET- Endpoint: /healthcheck/?check=all- Format: text

    当所有组件都是 WORKING 状态时返回 200。当有任何一个组件不是 WORKING 状态时返回 500。Body 中总是包含各个组件的状态和完成检查的时间的文本。

    例子:

    1. GET /healthcheck/?check=all HTTP/1.1
    2. MongoDB: WORKING (643.81µs)
    3. Router Hipache: WORKING (845.457µs)
    4. docker-registry: WORKING (1.954069ms)
    5. Gandalf: WORKING (1.787768ms)

    原文: http://doc.oschina.net/tsuru-paas?t=53193