2015-05-17 19:25:53 -07:00
swagger : "2.0"
info :
version : 1.0 .0
title : Drone API
license :
name : Creative Commons 4.0 International
url : "http://creativecommons.org/licenses/by/4.0/"
2015-07-01 02:23:21 -07:00
2015-05-17 19:25:53 -07:00
host : "localhost:8080"
basePath : /api
schemes :
- http
2015-06-23 00:12:21 -07:00
- https
consumes :
- application/json
produces :
- application/json
2015-07-01 02:23:21 -07:00
#
# Operation tags
#
tags :
- name : repository
- name : build
- name : user
- name : users
- name : tokens
#
# Security Definitions
#
2015-06-23 00:12:21 -07:00
security :
- accessToken : [ ]
securityDefinitions :
accessToken :
type : apiKey
in : query
name : access_token
2015-07-01 02:23:21 -07:00
#
# Endpoint Definitions
#
2015-05-17 19:25:53 -07:00
paths :
2015-07-01 02:23:21 -07:00
#
# Repos Endpoint
#
2015-06-23 00:12:21 -07:00
/repos/{owner}/{name}:
get :
parameters :
- name : owner
in : path
type : string
2015-07-01 02:23:21 -07:00
description : owner of the repository
2015-06-23 00:12:21 -07:00
- name : name
in : path
type : string
2015-07-01 02:23:21 -07:00
description : name of the repository
2015-06-23 19:08:18 -07:00
tags :
- repository
2015-07-01 02:23:21 -07:00
summary : Get a repo
description : Retrieves the details of a repository.
2015-06-23 00:12:21 -07:00
security :
- accessToken : [ ]
responses :
2015-07-01 02:23:21 -07:00
200 :
2015-06-23 00:12:21 -07:00
schema :
$ref : "#/definitions/Repo"
2015-07-01 02:23:21 -07:00
404 :
description : |
Unable to find the repository.
2015-06-23 11:35:21 -07:00
patch :
parameters :
- name : owner
in : path
type : string
2015-07-01 02:23:21 -07:00
description : owner of the repository
2015-06-23 11:35:21 -07:00
- name : name
in : path
type : string
2015-07-01 02:23:21 -07:00
description : name of the repository
2015-06-23 19:08:18 -07:00
- name : repo
in : body
description : The updated repository JSON
schema :
$ref : '#/definitions/Repo'
2015-07-01 02:23:21 -07:00
example : |
{
"trusted" : false ,
"timeout" : 60 ,
"hooks" : {
"pull_request" : true ,
"push" : true ,
"tags" : false
},
"keypair" : {
"public": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDwXK..." ,
"private": "-----BEGIN RSA PRIVATE KEY-----\nF7tLaAvx..."
},
"params": {
"HEROKU_KEY": "f0e4c2f76c58916ec258f24"
}
}
2015-06-23 19:08:18 -07:00
required : true
tags :
- repository
2015-07-01 02:23:21 -07:00
summary : Updates a repo
description : Updates the specified repository.
security :
- accessToken : [ ]
responses :
200 :
schema :
$ref : "#/definitions/Repo"
400 :
description : |
Unable to update the repository in the database.
404 :
description : |
Unable to find the repository.
post :
parameters :
- name : owner
in : path
type : string
description : owner of the repository
- name : name
in : path
type : string
description : name of the repository
tags :
- repository
summary : Creates a repo
description : Creates a new repository.
2015-06-23 11:35:21 -07:00
security :
- accessToken : [ ]
responses :
2015-07-01 02:23:21 -07:00
200 :
2015-06-23 11:35:21 -07:00
schema :
$ref : "#/definitions/Repo"
2015-07-01 02:23:21 -07:00
400 :
description : |
Unable to update the Repository record in the database
403 :
description : |
Unable to activate the Repository due to insufficient privileges
404 :
description : |
Unable to retrieve the Repository from the remote system (ie GitHub)
409 :
description : |
Unable to activate the Repository because it is already activate
500 :
description : |
Unable to activate the Repository due to an internal server error. This may indicate a problem adding hooks to the remote system (ie Github), generating SSH deployment keys, or persisting to the database.
2015-06-23 11:35:21 -07:00
delete :
parameters :
- name : owner
in : path
type : string
2015-07-01 02:23:21 -07:00
description : owner of the repository
2015-06-23 11:35:21 -07:00
- name : name
in : path
type : string
2015-07-01 02:23:21 -07:00
description : name of the repository
2015-06-23 19:08:18 -07:00
tags :
- repository
2015-07-01 02:23:21 -07:00
summary : Delete a repo
description : Permanently deletes a repository. It cannot be undone.
2015-06-23 11:35:21 -07:00
security :
- accessToken : [ ]
2015-07-01 02:23:21 -07:00
responses :
200 :
description : |
Successfully deleted the Repository
400 :
description : |
Unable to remove post-commit hooks from the remote system (ie GitHub)
404 :
description : |
Unable to find the Repository in the database
500 :
description : |
Unable to update the Repository record in the database
#
# Repos Watch/Unwatch Enpoint
#
2015-06-23 11:35:21 -07:00
/repos/{owner}/{name}/watch:
post :
parameters :
- name : owner
in : path
type : string
2015-07-01 02:23:21 -07:00
description : owner of the repository
2015-06-23 11:35:21 -07:00
- name : name
in : path
type : string
2015-07-01 02:23:21 -07:00
description : name of the repository
2015-06-23 19:08:18 -07:00
tags :
- repository
2015-07-01 02:23:21 -07:00
summary : Watch
2015-06-23 11:35:21 -07:00
description : Watches the named repository.
security :
- accessToken : [ ]
2015-07-01 02:23:21 -07:00
responses :
200 :
description : |
Successfully watching this repository.
400 :
description : |
Unable to update the database.
404 :
description : |
Unable to find the repository.
2015-06-23 11:35:21 -07:00
/repos/{owner}/{name}/unwatch:
delete :
parameters :
- name : owner
in : path
type : string
2015-07-01 02:23:21 -07:00
description : owner of the repository
2015-06-23 11:35:21 -07:00
- name : name
in : path
type : string
2015-07-01 02:23:21 -07:00
description : name of the repository
2015-06-23 19:08:18 -07:00
tags :
- repository
2015-07-01 02:23:21 -07:00
summary : Unwatch
2015-06-23 11:35:21 -07:00
description : Unwatches the repository.
security :
- accessToken : [ ]
2015-07-01 02:23:21 -07:00
responses :
200 :
description : |
Successfully Unwatched this repository.
400 :
description : |
Unable to update the database.
404 :
description : |
Unable to find the repository.
#
# Builds Endpoint
#
2015-06-23 11:35:21 -07:00
/repos/{owner}/{name}/builds:
get :
parameters :
- name : owner
in : path
type : string
2015-07-01 02:23:21 -07:00
description : owner of the repository
2015-06-23 11:35:21 -07:00
- name : name
in : path
type : string
2015-07-01 02:23:21 -07:00
description : name of the repository
2015-06-23 19:08:18 -07:00
tags :
- build
2015-07-01 02:23:21 -07:00
summary : Get recent builds
2015-06-23 11:35:21 -07:00
description : Returns recent builds for the repository based on name.
security :
- accessToken : [ ]
responses :
2015-07-01 02:23:21 -07:00
200 :
2015-06-23 11:35:21 -07:00
description : The recent builds.
schema :
type : array
items :
$ref : "#/definitions/Build"
2015-07-01 02:23:21 -07:00
404 :
description : |
Unable to find the Repository in the database
2015-06-23 11:35:21 -07:00
/repos/{owner}/{name}/builds/{number}:
get :
parameters :
- name : owner
in : path
type : string
2015-07-01 02:23:21 -07:00
description : owner of the repository
2015-06-23 11:35:21 -07:00
- name : name
in : path
type : string
2015-07-01 02:23:21 -07:00
description : name of the repository
2015-06-23 11:35:21 -07:00
- name : number
in : path
type : integer
2015-07-01 02:23:21 -07:00
description : sequential build number
2015-06-23 19:08:18 -07:00
tags :
- build
2015-07-01 02:23:21 -07:00
summary : Get a build
2015-06-23 11:35:21 -07:00
description : Returns the repository build by number.
security :
- accessToken : [ ]
responses :
2015-07-01 02:23:21 -07:00
200 :
2015-06-23 11:35:21 -07:00
description : The build.
schema :
$ref : "#/definitions/Build"
2015-07-01 02:23:21 -07:00
404 :
description : |
Unable to find the Build
#
# Badges
#
/badges/{owner}/{name}/status.svg:
get :
description : Returns an SVG status badge for the latest Build
parameters :
- name : owner
in : path
type : string
description : owner of the repository
- name : name
in : path
type : string
description : name of the repository
- name : string
in : query
type : string
description : specify a branch. defaults to master
default : master
/badges/{owner}/{name}/cc.xml:
get :
description : Returns a CCMenu feed for the Repository
parameters :
- name : owner
in : path
type : string
description : owner of the repository
- name : name
in : path
type : string
description : name of the repository
produces :
- application/xml
#
# User Endpoint
#
2015-05-17 19:25:53 -07:00
/user :
get :
2015-07-01 02:23:21 -07:00
summary : Gets a user
2015-05-17 19:25:53 -07:00
description : Returns the currently authenticated user.
2015-06-23 00:12:21 -07:00
security :
- accessToken : [ ]
2015-06-23 19:08:18 -07:00
tags :
- user
2015-05-17 19:25:53 -07:00
responses :
2015-07-01 02:23:21 -07:00
200 :
2015-05-17 19:25:53 -07:00
description : The currently authenticated user.
schema :
$ref : "#/definitions/User"
patch :
2015-07-01 02:23:21 -07:00
summary : Updates a user
2015-05-17 19:25:53 -07:00
description : Updates the currently authenticated user.
2015-06-23 19:08:18 -07:00
tags :
- user
2015-05-17 19:25:53 -07:00
parameters :
- name : user
in : body
description : Updates to the user.
required : true
schema :
$ref : "#/definitions/User"
responses :
2015-07-01 02:23:21 -07:00
200 :
2015-05-17 19:25:53 -07:00
description : The updated user.
schema :
$ref : "#/definitions/User"
2015-07-01 02:23:21 -07:00
400 :
description : |
Unable to update the user in the database
#
# User Repos
#
/user/repos :
get :
summary : Get user repos
description : |
Retrieve the currently authenticated User's Repository list
tags :
- user
responses :
200 :
schema :
type : array
items :
$ref : "#/definitions/Repo"
400 :
description : |
Unable to retrieve Repository list
#
# User Tokens
#
/user/tokens :
get :
post :
/user/tokens/{label}:
delete :
#
# Users Endpoint
#
/users :
get :
tags :
- users
summary : Get all users
description : Returns all registered, active users in the system.
security :
- accessToken : [ ]
responses :
200 :
description : All registered users.
schema :
type : array
items :
$ref : "#/definitions/User"
/users/{login}:
get :
post :
patch :
delete :
#
# Schema Definitions
#
2015-05-17 19:25:53 -07:00
definitions :
User :
2015-07-01 02:23:21 -07:00
example : |
{
"name": "Octocat" ,
"email": "octocat@github.com" ,
"gravatar_id": "7194e8d48fa1d2b689f99443b767316c" ,
"admin": false ,
"active": true
}
2015-05-17 19:25:53 -07:00
properties :
login :
type : string
email :
type : string
gravatar_id :
type : string
admin :
type : boolean
active :
type : boolean
2015-07-01 02:23:21 -07:00
Token :
properties :
issued_at :
type : integer
format : int64
label :
type : string
hash :
type : string
2015-05-17 19:25:53 -07:00
Repo :
2015-07-01 02:23:21 -07:00
example : |
{
"owner" : "drone" ,
"name" : "drone-test-go" ,
"full_name" : "drone/drone-test-go" ,
"self_url" : "http://localhost:8080/drone/drone-test-go" ,
"link_url" : "https://github.com/drone/drone-test-go" ,
"clone_url" : "https://github.com/drone/drone-test-go.git" ,
"default_branch" : "master" ,
"private" : true ,
"trusted" : false ,
"timeout" : 60 ,
"hooks" : {
"pull_request" : true ,
"push" : true ,
"tags" : false
},
"keypair" : {
"public": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDwXK..."
},
"permissions" : {
"pull" : true ,
"push" : true ,
"admin" : true
},
"params": {
"HEROKU_KEY": "f0e4c2f76c58916ec258f24"
}
}
2015-05-17 19:25:53 -07:00
properties :
owner :
type : string
name :
type : string
2015-06-23 00:12:21 -07:00
full_name :
type : string
link_url :
type : string
clone_url :
type : string
default_branch :
type : string
private :
type : boolean
trusted :
type : boolean
timeout :
type : integer
keypair :
type : object
properties :
public :
type : string
private :
type : string
hooks :
type : object
properties :
pull_request :
type : boolean
push :
type : boolean
tags :
type : boolean
permissions :
type : object
properties :
pull :
type : boolean
push :
type : boolean
admin :
type : boolean
params :
type : object
Build :
2015-07-01 02:23:21 -07:00
example : |
{
"number": 1 ,
"status": "success" ,
"started_at": 5788800 ,
"finished_at": 5789500 ,
"head_commit": {
"sha": "d101ef3ed6e973b039c3fd5ccdec378b0fa8684c" ,
"ref": "refs\/heads\/master" ,
"branch": "master" ,
"message": "updated the README.md file" ,
"timestamp": "" ,
"remote": "https:\/\/github.com\/drone\/drone.git" ,
"author": {
"login": "bradrydzewski" ,
"email": "brad.rydzewski@gmail.com"
}
},
"jobs": [
{
"number": 1 ,
"status": "success" ,
"started_at": 5788800 ,
"finished_at": 5789500 ,
"exit_code": 0 ,
"environment": { "GO_VERSION": "1.4" }
},
{
"number": 2 ,
"status": "success" ,
"started_at": 5788800 ,
"finished_at": 5789500 ,
"exit_code": 0 ,
"environment": { "GO_VERSION": "1.5" }
}
]
}
2015-05-17 19:25:53 -07:00
properties :
2015-06-23 00:12:21 -07:00
number :
2015-05-17 19:25:53 -07:00
type : integer
2015-06-23 00:12:21 -07:00
status :
2015-05-17 19:25:53 -07:00
type : string
2015-06-23 00:12:21 -07:00
enum :
- success
- failure
- pending
- started
- error
- killed
head_commit :
$ref : "#/definitions/Commit"
pull_request :
$ref : "#/definitions/PullRequest"
Commit :
properties :
2015-05-17 19:25:53 -07:00
sha :
type : string
ref :
type : string
branch :
type : string
2015-06-23 00:12:21 -07:00
message :
type : string
2015-05-17 19:25:53 -07:00
author :
2015-06-23 00:12:21 -07:00
$ref : "#/definitions/Author"
PullRequest :
properties :
number :
type : integer
title :
2015-05-17 19:25:53 -07:00
type : string
2015-06-23 00:12:21 -07:00
base_commit :
$ref : "#/definitions/Commit"
Author :
properties :
login :
2015-05-17 19:25:53 -07:00
type : string
2015-06-23 00:12:21 -07:00
email :
2015-05-17 19:25:53 -07:00
type : string
2015-06-23 00:12:21 -07:00
Job :
2015-05-17 19:25:53 -07:00
properties :
2015-06-23 00:12:21 -07:00
number :
2015-05-17 19:25:53 -07:00
type : integer
2015-06-23 00:12:21 -07:00
status :
2015-05-17 19:25:53 -07:00
type : string
2015-06-23 00:12:21 -07:00
enum :
- success
- failure
- pending
- started
- error
- killed
2015-05-17 19:25:53 -07:00
exit_code :
type : integer
started_at :
type : integer
format : int64
finished_at :
type : integer
format : int64
2015-06-23 00:12:21 -07:00
environment :
2015-06-23 11:35:21 -07:00
type : object