Docker
In addition to the Shipyard API, Shipyard also provides full compatibility for the Docker Remote API. You can use the Docker Remote API for container operations such as create, start, stop and more. Shipyard will pass any request to the Docker Remote API to Swarm. See the Docker Remote API Documentation for full reference.
POST /auth/login HTTP/1.1
Content-Type: application/json
{
"username": "admin",
"password": "password"
}
Response
{
"auth_token": "$2a$10$QKbbcXM5pUUXM/0bTwC8re/PU2jB5wqLEyUcRZtHcavjwdfmW/y4W",
"user_agent":"curl/7.35.0"
}
GET /1.17/version HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
Response Output
{
"Version": "swarm/0.4.0",
"APIVersion": "1.17",
"GoVersion": "go1.4.2",
"GitCommit": "HEAD",
"Os": "linux",
"Arch": "amd64"
}
GET /api/accounts HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
Response
[
{
"id": "d4a1e6ae-f90d-46bd-abcd-08f9ce1a5bb2",
"first_name": "Shipyard",
"last_name": "Admin",
"username": "admin",
"password": "$2a$10$fhEE05Gk3t8HIafjJfmChuq53drUlyCHyRv7QtJZ6Rl8szHS54432",
"roles": [
"admin"
]
}
]
POST /api/accounts HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
{
"username": "foo",
"password": "bar",
"role": {
"name": "user"
}
}
Response
HTTP/1.1 204 No Content
DELETE /api/accounts HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
{
"username": "foo"
}
Response
HTTP/1.1 204 No Content
GET /api/roles HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
Response
[
{
"role_name": "admin",
"description": "Administrator",
"rules": [
{
"path": "*",
"methods": [
"*"
]
}
]
},
{
"role_name": "containers:ro",
"description": "Containers Read Only",
"rules": [
{
"path": "/containers",
"methods": [
"GET"
]
}
]
}
]
GET /api/roles/admin HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
Response
{
"role_name": "admin",
"description": "Administrator",
"rules": [
{
"path": "*",
"methods": [
"*"
]
}
]
}
POST /api/roles HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
{
"name": "test"
}
Response
HTTP/1.1 204 No Content
DELETE /api/roles HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
{
"name": "test"
}
Response
HTTP/1.1 204 No Content
GET /api/nodes HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
Response
[
{
"name": "node-00",
"addr": "10.0.1.1:2376",
"containers": "10",
"reserved_cpus": "0 / 10",
"reserved_memory": "0 B / 4.84 GiB",
"labels": [
"executiondriver=native-0.2",
" kernelversion=3.16.0-4-amd64",
" operatingsystem=Debian GNU/Linux 8 (jessie)",
" storagedriver=aufs"
],
"response_time": 0
},
{
"name": "node-01",
"addr": "10.0.1.2:2376",
"containers": "10",
"reserved_cpus": "0 / 10",
"reserved_memory": "0 B / 4.84 GiB",
"labels": [
"executiondriver=native-0.2",
" kernelversion=3.16.0-4-amd64",
" operatingsystem=Debian GNU/Linux 8 (jessie)",
" storagedriver=aufs"
],
"response_time": 0
}
]
GET /api/nodes/node-00 HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
Response
{
"name": "node-00",
"addr": "10.0.1.1:2376",
"containers": "10",
"reserved_cpus": "0 / 10",
"reserved_memory": "0 B / 4.84 GiB",
"labels": [
"executiondriver=native-0.2",
" kernelversion=3.16.0-4-amd64",
" operatingsystem=Debian GNU/Linux 8 (jessie)",
" storagedriver=aufs"
],
"response_time": 0
}
GET /api/registries HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
Response
[
{
"id": "7b4d261c-5ac4-481a-b1fa-1808355becf8",
"name": "local",
"addr": "http://127.0.0.1:5000"
}
]
GET /api/registries/local HTTP/1.1
X-Access-Token: username:token
Response
{
"id": "7b4d261c-5ac4-481a-b1fa-1808355becf8",
"name": "local",
"addr": "http://127.0.0.1:5000"
}
GET /api/registries/local/repositories HTTP/1.1
X-Access-Token: username:token
Response
[
{
"name": "library/registry",
"namespace": "library",
"repository": "registry",
"tags": [
{
"ID": "8c2e06607696bd4afb3d03b687e361cc43cf8ec1a4a725bc96e39f05ba97dd55",
"Name": "latest"
}
],
"layers": [],
"size": 2433303
}
]
GET /api/registries/local/repositories/library/registry HTTP/1.1
X-Access-Token: username:token
Response
{
"name": "library/registry",
"namespace": "library",
"repository": "registry",
"tags": [
{
"ID": "8c2e06607696bd4afb3d03b687e361cc43cf8ec1a4a725bc96e39f05ba97dd55",
"Name": "latest"
}
],
"layers": [],
"size": 2433303
}
DELETE /api/registries/local/repositories/library/busybox HTTP/1.1
X-Access-Token: username:token
Response
HTTP/1.1 204 No Content
GET /api/servicekeys HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
Response
[
{
"key": "jyGFOFLPhG3qE2WrgSuEJe/7zJLpiIaLuyA6",
"description": "test key"
}
]
POST /api/servicekeys HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
{
"description": "test key"
}
Response
{
"key": "jyGFOFLPhG3qE2WrgSuEJe/7zJLpiIaLuyA6",
"description": "test key"
}
DELETE /api/servicekeys HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
{
"key": "jyGFOFLPhG3qE2WrgSuEJe/7zJLpiIaLuyA6"
}
Response
HTTP/1.1 204 No Content
GET /api/webhookkeys HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
Response
[
{
"id": "cb20156f-0688-4e3c-94a6-a8cc9966d20f",
"image": "ehazlett/docker-demo",
"key": "9953f2f31ad8bc05"
}
]
POST /api/webhookkeys HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
{
"image": "ehazlett/docker-demo"
}
Response
{
"image": "ehazlett/docker-demo",
"key": "9953f2f31ad8bc05"
}
DELETE /api/servicekeys/9953f2f31ad8bc05 HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token
Response
HTTP/1.1 204 No Content
POST /hub/webhook/9953f2f31ad8bc05 HTTP/1.1
Content-Type: application/json
{
"push_data":{
"pushed_at":1385141110,
"images":[
"imagehash1",
"imagehash2",
"imagehash3"
],
"pusher":"username"
},
"repository":{
"status":"Active",
"description":"my docker repo that does cool things",
"is_trusted":false,
"full_description":"This is my full description",
"repo_url":"https://registry.hub.docker.com/u/username/reponame/",
"owner":"username",
"is_official":false,
"is_private":false,
"name":"reponame",
"namespace":"username",
"star_count":1,
"comment_count":1,
"date_created":1370174400,
"dockerfile":"my full dockerfile is listed here",
"repo_name":"username/reponame"
}
}
Response
HTTP/1.1 200 OK
GET /api/events HTTP/1.1
X-Access-Token: username:token
Response
[
{
"type": "api",
"container_info": {
"Id": "",
"Created": "",
"Path": "",
"Name": "",
"Args": null,
"ExecIDs": null,
"Config": null,
"State": {
"Running": false,
"Paused": false,
"Restarting": false,
"Pid": 0,
"ExitCode": 0,
"StartedAt": "0001-01-01T00:00:00Z",
"FinishedAt": "0001-01-01T00:00:00Z",
"Ghost": false
},
"Image": "",
"NetworkSettings": {
"IpAddress": "",
"IpPrefixLen": 0,
"Gateway": "",
"Bridge": "",
"Ports": null
},
"SysInitPath": "",
"ResolvConfPath": "",
"Volumes": null,
"HostConfig": null
},
"time": "2015-06-27T19:04:33Z",
"message": "/api/accounts",
"username": "admin",
"tags": [
"api",
"api",
"get"
]
}
]
DELETE /api/events HTTP/1.1
X-Access-Token: username:token
Response
HTTP/1.1 204 No Content