Semaphore/api-docs.yml

2232 lines
50 KiB
YAML
Raw Permalink Normal View History

2024-01-15 20:35:47 +01:00
---
2016-04-09 02:31:13 +02:00
swagger: '2.0'
info:
title: SEMAPHORE
description: Semaphore API
2017-02-23 06:12:16 +01:00
version: "2.2.0"
2016-04-09 02:31:13 +02:00
host: localhost:3000
consumes:
- application/json
produces:
- application/json
- text/plain; charset=utf-8
2016-04-09 21:45:38 +02:00
tags:
- name: authentication
description: Authentication, Logout & API Tokens
- name: project
description: Everything related to a project
- name: user
description: User-related API
2024-02-11 20:52:14 +01:00
- name: integration
description: Integration API
2016-04-09 21:45:38 +02:00
2016-04-09 02:31:13 +02:00
schemes:
- http
- https
basePath: /api
definitions:
Pong:
type: string
x-example: pong
2016-04-09 02:31:13 +02:00
Login:
type: object
properties:
auth:
type: string
description: Username/Email address
x-example: user@semaphore.com
2016-04-09 02:31:13 +02:00
password:
type: string
format: password
description: Password
2023-04-16 23:57:56 +02:00
LoginMetadata:
type: object
properties:
oidc_providers:
type: array
description: List of OIDC providers
items:
type: object
properties:
id:
type: string
description: ID of the provider, used in the login URL
x-example: mysso
name:
type: string
description: Text to show on the login button
x-example: Sign in with MySSO
UserRequest:
type: object
properties:
name:
type: string
x-example: Integration Test User
2020-10-02 22:10:41 +02:00
example: Integration Test User
username:
type: string
x-example: test-user
2020-10-02 22:10:41 +02:00
example: test-user
email:
type: string
x-example: test@ansiblesemaphore.test
2020-10-02 22:10:41 +02:00
example: test@ansiblesemaphore.test
alert:
type: boolean
admin:
type: boolean
UserPutRequest:
type: object
properties:
name:
type: string
x-example: Integration Test User2
example: Integration Test User2
username:
type: string
x-example: test-user2
example: test-user2
email:
type: string
x-example: test2@ansiblesemaphore.test
example: test2@ansiblesemaphore.test
alert:
type: boolean
admin:
type: boolean
2016-04-09 02:31:13 +02:00
User:
type: object
properties:
id:
type: integer
minimum: 1
2016-04-09 02:31:13 +02:00
name:
type: string
username:
type: string
email:
type: string
created:
type: string
alert:
type: boolean
admin:
type: boolean
2023-09-18 19:49:55 +02:00
ProjectUser:
type: object
properties:
id:
type: integer
minimum: 1
name:
type: string
username:
type: string
2024-02-04 14:50:38 +01:00
ProjectBackup:
type: object
2024-02-07 17:45:34 +01:00
example: {"meta":{"name":"homelab","alert":true,"alert_chat":"Test","max_parallel_tasks":0},"templates":[{"inventory":"Build","repository":"Demo","environment":"Empty","name":"Build","playbook":"build.yml","arguments":"[]","allow_override_args_in_task":false,"description":"Build Job","vault_key":null,"type":"build","start_version":"1.0.0","build_template":null,"view":"Build","autorun":false,"survey_vars":"null","suppress_success_alerts":false,"cron":"* * * * *"}],"repositories":[{"name":"Demo","git_url":"https://github.com/semaphoreui/demo-project.git","git_branch":"main","ssh_key":"None"}],"keys":[{"name":"None","type":"none"},{"name":"Vault Password","type":"login_password"}],"views":[{"name":"Build","position":0}],"inventories":[{"name":"Build","inventory":"","ssh_key":"None","become_key":"None","type":"static"},{"name":"Dev","inventory":"","ssh_key":"None","become_key":"None","type":"file"},{"name":"Prod","inventory":"","ssh_key":"None","become_key":"None","type":"file"}],"environments":[{"name":"Empty","password":null,"json":"{}","env":null}]}
2024-02-04 14:50:38 +01:00
properties:
meta:
type: object
properties:
name:
type: string
alert:
type: boolean
alert_chat:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
max_parallel_tasks:
type: integer
2024-02-07 17:45:34 +01:00
minimum: 0
2024-02-04 14:50:38 +01:00
templates:
type: array
items:
type: object
properties:
inventory:
type: string
repository:
type: string
environment:
type: string
view:
type: string
name:
type: string
playbook:
type: string
arguments:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
description:
type: string
allow_override_args_in_task:
type: boolean
suppress_success_alerts:
type: boolean
cron:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
build_template:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
autorun:
type: boolean
survey_vars:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
start_version:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
type:
type: string
vault_key:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
repositories:
type: array
items:
type: object
properties:
name:
type: string
git_url:
type: string
git_branch:
type: string
ssh_key:
type: string
keys:
type: array
items:
type: object
properties:
name:
type: string
type:
type: string
2024-02-06 21:16:15 +01:00
enum: [ssh, login_password, none]
2024-02-04 14:50:38 +01:00
views:
type: array
items:
type: object
properties:
name:
type: string
position:
type: integer
2024-02-07 17:45:34 +01:00
minimum: 0
2024-02-04 14:50:38 +01:00
inventories:
type: array
items:
type: object
properties:
name:
type: string
inventory:
type: string
ssh_key:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
become_key:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
type:
type: string
enum: [static, static-yaml, file]
environments:
type: array
items:
type: object
properties:
name:
type: string
password:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
json:
type: string
env:
2024-02-07 17:45:34 +01:00
type:
- string
- 'null'
2024-02-04 14:50:38 +01:00
APIToken:
type: object
properties:
id:
type: string
created:
type: string
# pattern: ^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}T\d{2}:\d{2}:\d{2}Z$
expired:
type: boolean
user_id:
type: integer
minimum: 1
ProjectRequest:
type: object
properties:
name:
type: string
2021-11-03 11:28:46 +01:00
example: Test
alert:
type: boolean
alert_chat:
type: string
example: Test
max_parallel_tasks:
type: integer
minimum: 0
Project:
type: object
properties:
id:
type: integer
minimum: 1
name:
type: string
2021-11-03 11:28:46 +01:00
example: Test
created:
type: string
# pattern: ^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}T\d{2}:\d{2}:\d{2}Z$
alert:
type: boolean
alert_chat:
type: string
example: Test
max_parallel_tasks:
type: integer
minimum: 0
AccessKeyRequest:
type: object
properties:
name:
type: string
x-example: None
example: None
type:
type: string
2024-01-15 20:35:47 +01:00
enum: [none, ssh, login_password]
x-example: none
project_id:
type: integer
minimum: 1
x-example: 2
login_password:
type: object
properties:
password:
type: string
x-example: password
example: password
login:
type: string
x-example: username
example: username
ssh:
type: object
properties:
login:
type: string
x-example: user
example: user
private_key:
type: string
x-example: private key
example: private key
2021-11-03 11:28:46 +01:00
2016-04-09 21:38:14 +02:00
AccessKey:
type: object
properties:
id:
type: integer
name:
type: string
2021-11-03 11:28:46 +01:00
example: Test
2016-04-09 21:38:14 +02:00
type:
type: string
2024-01-15 20:35:47 +01:00
enum: [none, ssh, login_password]
2016-04-09 21:38:14 +02:00
project_id:
type: integer
login_password:
type: object
properties:
password:
type: string
x-example: password
example: password
login:
type: string
x-example: username
example: username
ssh:
type: object
properties:
login:
type: string
x-example: user
example: user
private_key:
type: string
x-example: private key
example: private key
EnvironmentRequest:
type: object
properties:
name:
type: string
2021-11-03 11:28:46 +01:00
example: Test
project_id:
type: integer
minimum: 1
password:
type: string
json:
type: string
2021-11-03 11:28:46 +01:00
example: '{}'
2022-06-29 19:11:06 +02:00
env:
type: string
example: '{}'
2021-11-03 11:28:46 +01:00
2016-04-09 21:38:14 +02:00
Environment:
type: object
properties:
id:
type: integer
minimum: 1
name:
type: string
2021-11-03 11:28:46 +01:00
example: Test
2016-04-09 21:38:14 +02:00
project_id:
type: integer
minimum: 1
2016-04-09 21:38:14 +02:00
password:
type: string
json:
type: string
2021-11-03 11:28:46 +01:00
example: '{}'
2022-06-29 19:11:06 +02:00
env:
type: string
example: '{}'
InventoryRequest:
2024-01-15 20:35:47 +01:00
type: object
properties:
name:
type: string
example: Test
project_id:
type: integer
minimum: 1
inventory:
type: string
ssh_key_id:
type: integer
minimum: 1
become_key_id:
type: integer
minimum: 1
type:
type: string
enum: [static, static-yaml, file]
2016-04-09 21:38:14 +02:00
Inventory:
type: object
properties:
id:
type: integer
name:
type: string
2021-11-03 11:28:46 +01:00
example: Test
2016-04-09 21:38:14 +02:00
project_id:
type: integer
inventory:
type: string
ssh_key_id:
type: integer
become_key_id:
type: integer
2016-04-09 21:38:14 +02:00
type:
type: string
2022-05-24 17:54:33 +02:00
enum: [static, static-yaml, file]
2024-02-11 20:52:14 +01:00
Integration:
2023-07-03 01:41:13 +02:00
type: object
properties:
2024-01-15 20:35:47 +01:00
id:
type: integer
2023-07-03 01:41:13 +02:00
name:
type: string
example: deploy
project_id:
type: integer
minimum: 1
template_id:
type: integer
minimum: 1
2024-02-11 20:52:14 +01:00
IntegrationRequest:
2023-07-03 01:41:13 +02:00
type: object
properties:
name:
type: string
2024-01-15 20:35:47 +01:00
example: deploy
2023-07-03 01:41:13 +02:00
project_id:
type: integer
template_id:
type: integer
2024-02-11 20:52:14 +01:00
IntegrationExtractValueRequest:
2023-07-03 01:41:13 +02:00
type: object
properties:
name:
type: string
example: deploy
value_source:
type: string
enum: [body, header]
body_data_type:
type: string
enum: [json, xml, string]
key:
type: string
example: key
variable:
type: string
example: variable
2024-02-11 20:52:14 +01:00
IntegrationExtractValue:
2023-07-03 01:41:13 +02:00
type: object
properties:
id:
type: integer
name:
type: string
example: extract this value
value_source:
type: string
enum: [body, header]
body_data_type:
type: string
enum: [json, xml, string]
key:
type: string
example: key
variable:
type: string
example: variable
2024-03-06 16:28:54 +01:00
integration_id:
type: integer
2023-07-03 01:41:13 +02:00
2024-02-11 20:52:14 +01:00
IntegrationMatcherRequest:
2023-07-03 01:41:13 +02:00
type: object
properties:
name:
type: string
example: deploy
match_type:
type: string
enum: [body, header]
method:
type: string
enum: [equals, unequals, contains]
body_data_type:
type: string
enum: [json, xml, string]
key:
type: string
example: key
value:
type: string
example: value
2024-02-11 20:52:14 +01:00
IntegrationMatcher:
2023-07-03 01:41:13 +02:00
type: object
properties:
id:
type: integer
2024-03-06 16:28:54 +01:00
integration_id:
type: integer
2023-07-03 01:41:13 +02:00
name:
type: string
example: deploy
match_type:
type: string
enum: [body, header]
method:
type: string
enum: [equals, unequals, contains]
body_data_type:
type: string
enum: [json, xml, string]
key:
type: string
example: key
value:
type: string
example: value
RepositoryRequest:
2023-07-03 01:41:13 +02:00
type: object
properties:
name:
type: string
example: Test
project_id:
type: integer
git_url:
type: string
example: git@example.com
git_branch:
type: string
example: master
ssh_key_id:
type: integer
2016-04-09 21:38:14 +02:00
Repository:
type: object
properties:
id:
type: integer
name:
type: string
2021-11-03 11:28:46 +01:00
example: Test
2016-04-09 21:38:14 +02:00
project_id:
type: integer
git_url:
type: string
2022-01-25 08:05:03 +01:00
example: git@example.com
git_branch:
type: string
example: master
2016-04-09 21:38:14 +02:00
ssh_key_id:
type: integer
2016-04-09 21:38:14 +02:00
Task:
type: object
properties:
id:
type: integer
example: 23
2016-04-09 21:38:14 +02:00
template_id:
type: integer
status:
type: string
debug:
type: boolean
playbook:
type: string
environment:
type: string
2022-06-29 18:25:28 +02:00
limit:
type: string
TaskOutput:
type: object
properties:
task_id:
type: integer
example: 23
task:
type: string
time:
type: string
format: date-time
output:
type: string
TemplateRequest:
type: object
properties:
project_id:
type: integer
minimum: 1
inventory_id:
type: integer
minimum: 1
repository_id:
type: integer
minimum: 1
environment_id:
type: integer
minimum: 1
view_id:
type: integer
minimum: 1
2024-04-02 14:13:43 +02:00
vault_id:
type: integer
minimum: 1
2022-02-03 08:05:13 +01:00
name:
type: string
2021-11-03 10:45:15 +01:00
example: Test
playbook:
type: string
2021-11-03 10:45:15 +01:00
example: test.yml
arguments:
type: string
2021-11-03 11:29:51 +01:00
example: '[]'
description:
type: string
example: Hello, World!
allow_override_args_in_task:
type: boolean
example: false
2022-06-29 18:25:28 +02:00
limit:
type: string
example: ''
suppress_success_alerts:
type: boolean
survey_vars:
type: array
items:
$ref: "#/definitions/TemplateSurveyVar"
2016-04-09 21:38:14 +02:00
Template:
type: object
properties:
id:
type: integer
minimum: 1
2016-04-09 21:38:14 +02:00
project_id:
type: integer
minimum: 1
2016-04-09 21:38:14 +02:00
inventory_id:
type: integer
minimum: 1
2016-04-09 21:38:14 +02:00
repository_id:
type: integer
environment_id:
type: integer
minimum: 1
view_id:
type: integer
minimum: 1
2022-02-03 08:05:13 +01:00
name:
2016-11-15 16:44:41 +01:00
type: string
2021-11-03 10:45:15 +01:00
example: Test
2016-04-09 21:38:14 +02:00
playbook:
type: string
2021-11-03 10:45:15 +01:00
example: test.yml
2016-04-09 21:38:14 +02:00
arguments:
type: string
2021-11-03 11:29:51 +01:00
example: '[]'
description:
type: string
example: Hello, World!
allow_override_args_in_task:
2016-04-09 21:38:14 +02:00
type: boolean
example: false
suppress_success_alerts:
type: boolean
app:
type: string
TemplateSurveyVar:
type: object
properties:
name:
type: string
title:
type: string
description:
type: string
type:
type: string
example: String => "", Integer => "int"
required:
type: boolean
2021-09-06 16:26:35 +02:00
ScheduleRequest:
type: object
properties:
id:
type: integer
cron_format:
type: string
x-example: "* * * 1 *"
example: "* * * 1 *"
2021-09-06 16:26:35 +02:00
project_id:
type: integer
template_id:
type: integer
Schedule:
type: object
properties:
id:
type: integer
cron_format:
type: string
project_id:
type: integer
template_id:
type: integer
ViewRequest:
2023-07-03 01:41:13 +02:00
type: object
properties:
title:
type: string
example: Test
project_id:
type: integer
minimum: 1
position:
type: integer
minimum: 1
View:
2021-10-27 14:25:51 +02:00
type: object
properties:
id:
type: integer
title:
2021-10-27 14:25:51 +02:00
type: string
project_id:
type: integer
position:
2021-10-27 14:25:51 +02:00
type: integer
Runner:
type: object
properties:
token:
type: string
2021-10-27 14:25:51 +02:00
Event:
type: object
properties:
project_id:
type: integer
user_id:
type: integer
object_id:
type:
- integer
- 'null'
object_type:
type:
- string
- 'null'
description:
type: string
InfoType:
type: object
properties:
version:
type: string
updateBody:
type: string
update:
type: object
properties:
tag_name:
type: string
2016-04-09 02:31:13 +02:00
securityDefinitions:
cookie:
type: apiKey
name: Cookie
in: header
bearer:
type: apiKey
name: Authorization
in: header
security:
- bearer: []
- cookie: []
parameters:
project_id:
name: project_id
description: Project ID
in: path
type: integer
required: true
x-example: 1
user_id:
name: user_id
description: User ID
in: path
type: integer
required: true
x-example: 2
2016-04-09 21:38:14 +02:00
key_id:
name: key_id
description: key ID
in: path
type: integer
required: true
x-example: 3
2016-04-09 21:38:14 +02:00
repository_id:
name: repository_id
description: repository ID
in: path
type: integer
required: true
x-example: 4
2016-04-09 21:38:14 +02:00
inventory_id:
name: inventory_id
description: inventory ID
in: path
type: integer
required: true
x-example: 5
2016-04-09 21:38:14 +02:00
environment_id:
name: environment_id
description: environment ID
in: path
type: integer
required: true
x-example: 6
2016-04-09 21:38:14 +02:00
template_id:
name: template_id
description: template ID
in: path
type: integer
required: true
x-example: 7
task_id:
name: task_id
description: task ID
in: path
type: integer
required: true
x-example: 8
2021-09-09 20:56:15 +02:00
schedule_id:
name: schedule_id
description: schedule ID
in: path
type: integer
required: true
x-example: 9
2021-10-27 18:22:52 +02:00
view_id:
name: view_id
description: view ID
in: path
type: integer
required: true
x-example: 10
2024-02-11 20:52:14 +01:00
integration_id:
name: integration_id
description: integration ID
2023-07-03 01:41:13 +02:00
in: path
type: integer
required: true
x-example: 11
extractvalue_id:
name: extractvalue_id
2024-01-15 20:35:47 +01:00
description: extractValue ID
2023-07-03 01:41:13 +02:00
in: path
type: integer
required: true
2024-03-06 16:28:54 +01:00
x-example: 12
2023-07-03 01:41:13 +02:00
matcher_id:
name: matcher_id
2024-01-15 20:35:47 +01:00
description: matcher ID
2023-07-03 01:41:13 +02:00
in: path
type: integer
required: true
2024-03-06 16:28:54 +01:00
x-example: 13
2023-07-03 01:41:13 +02:00
2016-04-09 02:31:13 +02:00
paths:
/ping:
get:
summary: PING test
produces:
- text/plain
security: [] # No security
2016-04-09 02:31:13 +02:00
responses:
200:
2016-04-09 02:46:29 +02:00
description: Successful "PONG" reply
2016-04-09 02:31:13 +02:00
schema:
$ref: "#/definitions/Pong"
headers:
content-type:
type: string
x-example: text/plain; charset=utf-8
/ws:
get:
summary: Websocket handler
schemes:
- ws
- wss
responses:
200:
description: OK
401:
description: not authenticated
2016-05-17 17:18:26 +02:00
/info:
get:
summary: Fetches information about semaphore
description: you must be authenticated to use this
responses:
200:
description: ok
schema:
$ref: "#/definitions/InfoType"
# Authentication
2016-04-09 02:31:13 +02:00
/auth/login:
2023-04-16 23:57:56 +02:00
get:
tags:
- authentication
summary: Fetches login metadata
description: Fetches metadata for login, such as available OIDC providers
security: []
responses:
200:
description: Login metadata
schema:
$ref: "#/definitions/LoginMetadata"
2016-04-09 02:31:13 +02:00
post:
tags:
- authentication
2016-04-09 02:31:13 +02:00
summary: Performs Login
description: Upon success you will be logged in
security: [] # No security
2016-04-09 02:31:13 +02:00
parameters:
- name: Login Body
in: body
required: true
schema:
$ref: '#/definitions/Login'
responses:
204:
description: You are logged in
400:
description: something in body is missing / is invalid
2016-04-09 02:31:13 +02:00
/auth/logout:
post:
tags:
- authentication
2016-04-09 02:31:13 +02:00
summary: Destroys current session
responses:
204:
description: Your session was successfully nuked
2023-04-16 23:57:56 +02:00
/auth/oidc/{provider_id}/login:
parameters:
- name: provider_id
in: path
type: string
required: true
x-example: "mysso"
get:
tags:
- authentication
summary: Begin OIDC authentication flow and redirect to OIDC provider
description: The user agent is redirected to this endpoint when chosing to sign in via OIDC
responses:
302:
description: Redirection to the OIDC provider on success, or to the login page on error
/auth/oidc/{provider_id}/redirect:
parameters:
- name: provider_id
in: path
type: string
required: true
x-example: "mysso"
get:
tags:
- authentication
summary: Finish OIDC authentication flow, upon succes you will be logged in
description: The user agent is redirected here by the OIDC provider to complete authentication
responses:
302:
description: Redirection to the Semaphore root URL on success, or to the login page on error
# User Tokens
2020-10-01 10:01:04 +02:00
/user/:
2016-04-09 02:31:13 +02:00
get:
tags:
- user
2016-04-09 02:31:13 +02:00
summary: Fetch logged in user
responses:
200:
description: User
schema:
$ref: "#/definitions/User"
/user/tokens:
get:
tags:
- authentication
- user
summary: Fetch API tokens for user
responses:
200:
description: API Tokens
schema:
type: array
items:
$ref: "#/definitions/APIToken"
post:
tags:
- authentication
- user
summary: Create an API token
responses:
201:
description: API Token
schema:
$ref: "#/definitions/APIToken"
/user/tokens/{api_token_id}:
parameters:
- name: api_token_id
in: path
type: string
required: true
x-example: "kwofd61g93-yuqvex8efmhjkgnbxlo8mp1tin6spyhu="
delete:
tags:
- authentication
- user
summary: Expires API token
responses:
204:
description: Expired API Token
# User Profiles
/users:
get:
tags:
- user
summary: Fetches all users
responses:
200:
description: Users
schema:
type: array
items:
$ref: "#/definitions/User"
post:
tags:
- user
summary: Creates a user
consumes:
- application/json
parameters:
- name: User
in: body
required: true
schema:
$ref: "#/definitions/UserRequest"
responses:
400:
description: User creation failed
201:
description: User created
schema:
$ref: "#/definitions/User"
2020-10-01 10:01:04 +02:00
/users/{user_id}/:
parameters:
- $ref: "#/parameters/user_id"
get:
tags:
- user
summary: Fetches a user profile
responses:
200:
description: User profile
schema:
$ref: "#/definitions/User"
put:
tags:
- user
summary: Updates user details
consumes:
- application/json
parameters:
- name: User
in: body
required: true
schema:
2020-10-02 22:10:41 +02:00
$ref: "#/definitions/UserPutRequest"
responses:
204:
description: User Updated
delete:
tags:
- user
summary: Deletes user
responses:
204:
description: User deleted
/users/{user_id}/password:
parameters:
- $ref: "#/parameters/user_id"
post:
tags:
- user
summary: Updates user password
consumes:
- application/json
parameters:
- name: Password
in: body
required: true
schema:
type: object
properties:
password:
type: string
format: password
responses:
204:
description: Password updated
# Projects
/projects:
get:
tags:
- projects
summary: Get projects
responses:
200:
description: List of projects
schema:
type: array
items:
$ref: "#/definitions/Project"
post:
tags:
- projects
summary: Create a new project
consumes:
- application/json
parameters:
- name: Project
in: body
required: true
schema:
$ref: '#/definitions/ProjectRequest'
responses:
201:
description: Created project
2024-02-04 14:50:38 +01:00
/projects/restore:
post:
tags:
- projects
summary: Restore Project
consumes:
- application/json
parameters:
- name: Backup
in: body
required: true
schema:
$ref: '#/definitions/ProjectBackup'
responses:
200:
description: Created project
schema:
$ref: "#/definitions/Project"
/events:
get:
summary: Get Events related to Semaphore and projects you are part of
responses:
200:
description: Array of events in chronological order
schema:
type: array
items:
$ref: '#/definitions/Event'
2017-07-25 06:50:45 +02:00
/events/last:
get:
summary: Get last 200 Events related to Semaphore and projects you are part of
responses:
200:
description: Array of events in chronological order
schema:
type: array
items:
$ref: '#/definitions/Event'
2020-10-01 10:01:04 +02:00
/project/{project_id}/:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Fetch project
responses:
200:
description: Project
schema:
$ref: "#/definitions/Project"
put:
tags:
- project
summary: Update project
parameters:
- name: Project
in: body
required: true
schema:
type: object
properties:
name:
type: string
responses:
204:
description: Project saved
delete:
tags:
- project
summary: Delete project
responses:
204:
description: Project deleted
2024-02-04 14:50:38 +01:00
/project/{project_id}/backup:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Backup A Project
responses:
200:
description: Backup
schema:
$ref: '#/definitions/ProjectBackup'
2023-08-26 20:43:42 +02:00
2023-08-26 22:58:23 +02:00
/project/{project_id}/role:
2023-08-26 20:43:42 +02:00
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Fetch permissions of the current user for project
responses:
200:
description: Permissions
schema:
type: object
properties:
role:
type: string
2023-08-26 22:58:23 +02:00
example: owner
2023-08-26 20:43:42 +02:00
permissions:
type: number
2023-08-26 22:58:23 +02:00
example: 0
2023-08-26 20:43:42 +02:00
/project/{project_id}/events:
parameters:
- $ref: '#/parameters/project_id'
get:
tags:
- project
summary: Get Events related to this project
responses:
200:
description: Array of events in chronological order
schema:
type: array
items:
$ref: '#/definitions/Event'
# User management
/project/{project_id}/users:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Get users linked to project
parameters:
- name: sort
in: query
required: true
type: string
enum: [name, username, email, role]
description: sorting name
x-example: email
- name: order
in: query
required: true
type: string
enum: [asc, desc]
description: ordering manner
x-example: desc
responses:
200:
description: Users
schema:
type: array
items:
2023-09-18 19:49:55 +02:00
$ref: "#/definitions/ProjectUser"
post:
tags:
- project
summary: Link user to project
parameters:
- name: User
in: body
required: true
schema:
type: object
properties:
user_id:
type: integer
minimum: 2
role:
type: string
2024-01-15 20:35:47 +01:00
enum: [owner, manager, task_runner, guest]
example: owner
responses:
204:
description: User added
/project/{project_id}/users/{user_id}:
parameters:
- $ref: "#/parameters/project_id"
- $ref: "#/parameters/user_id"
delete:
tags:
- project
summary: Removes user from project
responses:
204:
description: User removed
put:
parameters:
- name: Project User
in: body
required: true
schema:
type: object
properties:
role:
type: string
2024-01-15 20:35:47 +01:00
enum: [owner, manager, task_runner, guest]
example: owner
summary: Update user role
responses:
204:
description: User updated
2016-04-09 21:38:14 +02:00
2024-02-11 20:52:14 +01:00
/project/{project_id}/integrations:
2023-07-03 01:41:13 +02:00
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
2024-02-11 20:52:14 +01:00
summary: get all integrations
2023-07-03 01:41:13 +02:00
responses:
200:
2024-02-11 20:52:14 +01:00
description: integration
2023-07-03 01:41:13 +02:00
schema:
type: array
items:
2024-02-11 20:52:14 +01:00
$ref: "#/definitions/Integration"
2023-07-03 01:41:13 +02:00
post:
2024-02-11 20:52:14 +01:00
summary: create a new integration
2023-07-03 01:41:13 +02:00
tags:
- project
parameters:
2024-02-11 20:52:14 +01:00
- name: Integration
2023-07-03 01:41:13 +02:00
in: body
required: true
schema:
2024-02-11 20:52:14 +01:00
$ref: "#/definitions/IntegrationRequest"
2023-07-03 01:41:13 +02:00
responses:
201:
2024-02-11 20:52:14 +01:00
description: Integration Created
2024-01-15 20:35:47 +01:00
schema:
2024-02-11 20:52:14 +01:00
$ref: "#/definitions/Integration"
/project/{project_id}/integrations/{integration_id}:
2023-07-03 01:41:13 +02:00
parameters:
- $ref: "#/parameters/project_id"
2024-02-11 20:52:14 +01:00
- $ref: "#/parameters/integration_id"
2023-07-03 01:41:13 +02:00
put:
tags:
- project
2024-02-11 20:52:14 +01:00
summary: Update Integration
2023-07-03 01:41:13 +02:00
parameters:
2024-02-11 20:52:14 +01:00
- name: Integration
2023-07-03 01:41:13 +02:00
in: body
required: true
schema:
2024-02-11 20:52:14 +01:00
$ref: "#/definitions/IntegrationRequest"
2023-07-03 01:41:13 +02:00
responses:
204:
2024-02-11 20:52:14 +01:00
description: Integration updated
2023-07-03 01:41:13 +02:00
delete:
tags:
- project
2024-02-11 20:52:14 +01:00
summary: Remove integration
2023-07-03 01:41:13 +02:00
responses:
204:
2024-02-11 20:52:14 +01:00
description: integration removed
/project/{project_id}/integrations/{integration_id}/values:
2023-07-03 01:41:13 +02:00
parameters:
- $ref: "#/parameters/project_id"
2024-02-11 20:52:14 +01:00
- $ref: "#/parameters/integration_id"
2023-07-03 01:41:13 +02:00
get:
tags:
2024-02-11 20:52:14 +01:00
- integration
summary: Get Integration Extracted Values linked to integration extractor
2023-07-03 01:41:13 +02:00
responses:
200:
2024-02-11 20:52:14 +01:00
description: Integration Extracted Value
2023-07-03 01:41:13 +02:00
schema:
type: array
items:
2024-02-11 20:52:14 +01:00
$ref: "#/definitions/IntegrationExtractValue"
2023-07-03 01:41:13 +02:00
post:
tags:
- project
2024-02-11 20:52:14 +01:00
summary: Add Integration Extracted Value
2023-07-03 01:41:13 +02:00
parameters:
2024-02-11 20:52:14 +01:00
- name: Integration Extracted Value
2023-07-03 01:41:13 +02:00
in: body
required: true
schema:
2024-02-11 20:52:14 +01:00
$ref: "#/definitions/IntegrationExtractValue"
2023-07-03 01:41:13 +02:00
responses:
2024-03-03 17:31:38 +01:00
201:
2024-02-11 20:52:14 +01:00
description: Integration Extract Value Created
2023-07-03 01:41:13 +02:00
400:
2024-02-11 20:52:14 +01:00
description: Bad Integration Extract Value params
/project/{project_id}/integrations/{integration_id}/values/{extractvalue_id}:
2023-07-03 01:41:13 +02:00
parameters:
- $ref: "#/parameters/project_id"
2024-02-11 20:52:14 +01:00
- $ref: "#/parameters/integration_id"
2023-07-03 01:41:13 +02:00
- $ref: "#/parameters/extractvalue_id"
put:
tags:
2024-02-11 20:52:14 +01:00
- integration
summary: Updates Integration ExtractValue
2023-07-03 01:41:13 +02:00
parameters:
2024-02-11 20:52:14 +01:00
- name: Integration ExtractValue
2023-07-03 01:41:13 +02:00
in: body
required: true
schema:
2024-02-11 20:52:14 +01:00
$ref: "#/definitions/IntegrationExtractValueRequest"
2023-07-03 01:41:13 +02:00
responses:
204:
2024-02-11 20:52:14 +01:00
description: Integration Extract Value updated
2023-07-03 01:41:13 +02:00
400:
2024-02-11 20:52:14 +01:00
description: Bad integration extract value parameter
2023-07-03 01:41:13 +02:00
delete:
tags:
2024-02-11 20:52:14 +01:00
- integration
summary: Removes integration extract value
2023-07-03 01:41:13 +02:00
responses:
204:
2024-02-11 20:52:14 +01:00
description: integration extract value removed
/project/{project_id}/integrations/{integration_id}/matchers:
2023-07-03 01:41:13 +02:00
parameters:
- $ref: "#/parameters/project_id"
2024-02-11 20:52:14 +01:00
- $ref: "#/parameters/integration_id"
2023-07-03 01:41:13 +02:00
get:
tags:
2024-02-11 20:52:14 +01:00
- integration
summary: Get Integration Matcher linked to integration extractor
2023-07-03 01:41:13 +02:00
responses:
200:
2024-02-11 20:52:14 +01:00
description: Integration Matcher
2023-07-03 01:41:13 +02:00
schema:
type: array
items:
2024-02-11 20:52:14 +01:00
$ref: "#/definitions/IntegrationMatcher"
2023-07-03 01:41:13 +02:00
post:
tags:
- project
2024-02-11 20:52:14 +01:00
summary: Add Integration Matcher
2023-07-03 01:41:13 +02:00
parameters:
2024-02-11 20:52:14 +01:00
- name: Integration Matcher
2023-07-03 01:41:13 +02:00
in: body
required: true
schema:
2024-02-11 20:52:14 +01:00
$ref: "#/definitions/IntegrationMatcher"
2023-07-03 01:41:13 +02:00
responses:
2024-03-03 17:31:38 +01:00
200:
2024-02-11 20:52:14 +01:00
description: Integration Matcher Created
2023-07-03 01:41:13 +02:00
400:
2024-02-11 20:52:14 +01:00
description: Bad Integration Matcher params
/project/{project_id}/integrations/{integration_id}/matchers/{matcher_id}:
2023-07-03 01:41:13 +02:00
parameters:
- $ref: "#/parameters/project_id"
2024-02-11 20:52:14 +01:00
- $ref: "#/parameters/integration_id"
2023-07-03 01:41:13 +02:00
- $ref: "#/parameters/matcher_id"
put:
tags:
2024-02-11 20:52:14 +01:00
- integration
summary: Updates Integration Matcher
2023-07-03 01:41:13 +02:00
parameters:
2024-02-11 20:52:14 +01:00
- name: Integration Matcher
2023-07-03 01:41:13 +02:00
in: body
required: true
schema:
2024-02-11 20:52:14 +01:00
$ref: "#/definitions/IntegrationMatcherRequest"
2023-07-03 01:41:13 +02:00
responses:
204:
2024-02-11 20:52:14 +01:00
description: Integration Matcher updated
2023-07-03 01:41:13 +02:00
400:
2024-02-11 20:52:14 +01:00
description: Bad integration matcher parameter
2023-07-03 01:41:13 +02:00
delete:
tags:
2024-02-11 20:52:14 +01:00
- integration
summary: Removes integration matcher
2023-07-03 01:41:13 +02:00
responses:
204:
2024-02-11 20:52:14 +01:00
description: integration matcher removed
2023-07-03 01:41:13 +02:00
2016-04-09 21:38:14 +02:00
# project access keys
/project/{project_id}/keys:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Get access keys linked to project
parameters:
# TODO - the space in this parameter name results in a dredd warning
- name: Key type
in: query
required: false
type: string
2024-01-15 20:35:47 +01:00
enum: [none, ssh, login_password]
description: Filter by key type
x-example: none
- name: sort
in: query
required: true
type: string
enum: [name, type]
description: sorting name
x-example: type
- name: order
in: query
required: true
type: string
enum: [asc, desc]
description: ordering manner
x-example: asc
2016-04-09 21:38:14 +02:00
responses:
200:
description: Access Keys
schema:
type: array
items:
$ref: "#/definitions/AccessKey"
post:
tags:
- project
summary: Add access key
parameters:
- name: Access Key
in: body
required: true
schema:
$ref: "#/definitions/AccessKeyRequest"
2016-04-09 21:38:14 +02:00
responses:
204:
description: Access Key created
400:
description: Bad type
/project/{project_id}/keys/{key_id}:
parameters:
- $ref: "#/parameters/project_id"
- $ref: "#/parameters/key_id"
put:
tags:
- project
summary: Updates access key
parameters:
- name: Access Key
in: body
required: true
schema:
$ref: "#/definitions/AccessKeyRequest"
2016-04-09 21:38:14 +02:00
responses:
204:
description: Key updated
400:
description: Bad type
delete:
tags:
- project
summary: Removes access key
responses:
204:
description: access key removed
# project repositories
/project/{project_id}/repositories:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Get repositories
parameters:
- name: sort
in: query
required: true
type: string
enum: [name, git_url, ssh_key]
description: sorting name
- name: order
in: query
required: true
type: string
format: asc/desc
enum: [asc, desc]
description: ordering manner
2016-04-09 21:38:14 +02:00
responses:
200:
description: repositories
schema:
type: array
items:
$ref: "#/definitions/Repository"
post:
tags:
- project
summary: Add repository
parameters:
- name: Repository
in: body
required: true
schema:
$ref: "#/definitions/RepositoryRequest"
2016-04-09 21:38:14 +02:00
responses:
204:
description: Repository created
/project/{project_id}/repositories/{repository_id}:
parameters:
- $ref: "#/parameters/project_id"
- $ref: "#/parameters/repository_id"
put:
tags:
- project
summary: Updates repository
parameters:
- name: Repository
in: body
required: true
schema:
$ref: "#/definitions/RepositoryRequest"
responses:
204:
description: Repository updated
400:
description: Bad request
2016-04-09 21:38:14 +02:00
delete:
tags:
- project
summary: Removes repository
responses:
204:
description: repository removed
# project inventory
/project/{project_id}/inventory:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Get inventory
parameters:
- name: sort
in: query
required: true
type: string
description: sorting name
enum: [name, type]
- name: order
in: query
required: true
type: string
description: ordering manner
enum: [asc, desc]
2016-04-09 21:38:14 +02:00
responses:
200:
description: inventory
schema:
type: array
items:
$ref: "#/definitions/Inventory"
post:
tags:
- project
summary: create inventory
parameters:
- name: Inventory
in: body
required: true
schema:
$ref: "#/definitions/InventoryRequest"
2016-04-09 21:38:14 +02:00
responses:
201:
2016-04-09 21:38:14 +02:00
description: inventory created
schema:
2024-01-15 20:35:47 +01:00
$ref: "#/definitions/Inventory"
2016-04-09 21:38:14 +02:00
/project/{project_id}/inventory/{inventory_id}:
parameters:
- $ref: "#/parameters/project_id"
- $ref: "#/parameters/inventory_id"
put:
tags:
- project
summary: Updates inventory
parameters:
- name: Inventory
in: body
required: true
schema:
$ref: "#/definitions/InventoryRequest"
2016-04-09 21:38:14 +02:00
responses:
204:
description: Inventory updated
delete:
tags:
- project
summary: Removes inventory
responses:
204:
description: inventory removed
# project environment
/project/{project_id}/environment:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Get environment
parameters:
- name: sort
in: query
required: true
type: string
format: name
description: sorting name
x-example: 'db-deploy'
- name: order
in: query
required: true
type: string
format: asc/desc
description: ordering manner
x-example: desc
2016-04-09 21:38:14 +02:00
responses:
200:
description: environment
schema:
type: array
items:
$ref: "#/definitions/Environment"
post:
tags:
- project
summary: Add environment
parameters:
- name: environment
in: body
required: true
schema:
$ref: "#/definitions/EnvironmentRequest"
2016-04-09 21:38:14 +02:00
responses:
204:
description: Environment created
/project/{project_id}/environment/{environment_id}:
parameters:
- $ref: "#/parameters/project_id"
- $ref: "#/parameters/environment_id"
put:
tags:
- project
summary: Update environment
parameters:
- name: environment
in: body
required: true
schema:
$ref: "#/definitions/EnvironmentRequest"
responses:
204:
description: Environment Updated
2016-04-09 21:38:14 +02:00
delete:
tags:
- project
summary: Removes environment
responses:
204:
description: environment removed
# project templates
/project/{project_id}/templates:
2016-04-09 21:38:14 +02:00
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Get template
parameters:
- name: sort
in: query
required: true
type: string
description: sorting name
2022-02-03 08:05:13 +01:00
enum: [name, playbook, ssh_key, inventory, environment, repository]
- name: order
in: query
required: true
type: string
description: ordering manner
enum: [asc, desc]
2016-04-09 21:38:14 +02:00
responses:
200:
description: template
schema:
type: array
items:
$ref: "#/definitions/Template"
properties:
survey_vars:
type: array
items:
$ref: "#/definitions/TemplateSurveyVar"
last_task:
$ref: "#/definitions/Task"
2016-04-09 21:38:14 +02:00
post:
tags:
- project
summary: create template
parameters:
- name: templateyes
2016-04-09 21:38:14 +02:00
in: body
required: true
schema:
$ref: "#/definitions/TemplateRequest"
2016-04-09 21:38:14 +02:00
responses:
201:
2016-04-09 21:38:14 +02:00
description: template created
schema:
$ref: "#/definitions/TemplateRequest"
/project/{project_id}/templates/{template_id}:
2016-04-09 21:38:14 +02:00
parameters:
- $ref: "#/parameters/project_id"
- $ref: "#/parameters/template_id"
2020-10-05 00:29:02 +02:00
get:
tags:
- project
summary: Get template
2020-10-05 00:29:02 +02:00
responses:
200:
description: template object
schema:
$ref: "#/definitions/Template"
2016-04-09 21:38:14 +02:00
put:
tags:
- project
summary: Updates template
parameters:
- name: template
in: body
required: true
schema:
$ref: "#/definitions/TemplateRequest"
2016-04-09 21:38:14 +02:00
responses:
204:
description: template updated
delete:
tags:
- project
summary: Removes template
responses:
204:
description: template removed
2021-09-06 16:26:35 +02:00
# project schedules
2021-09-09 20:56:15 +02:00
/project/{project_id}/schedules/{schedule_id}:
parameters:
2024-01-15 20:35:47 +01:00
- $ref: "#/parameters/project_id"
- $ref: "#/parameters/schedule_id"
2021-09-09 20:56:15 +02:00
get:
tags:
2024-01-15 20:35:47 +01:00
- schedule
2021-09-09 20:56:15 +02:00
summary: Get schedule
responses:
200:
description: Schedule
schema:
$ref: "#/definitions/Schedule"
delete:
tags:
2024-01-15 20:35:47 +01:00
- schedule
2021-09-09 20:56:15 +02:00
summary: Deletes schedule
responses:
204:
description: schedule deleted
put:
tags:
2024-01-15 20:35:47 +01:00
- schedule
2021-09-09 20:56:15 +02:00
summary: Updates schedule
parameters:
2024-01-15 20:35:47 +01:00
- name: schedule
in: body
required: true
schema:
$ref: "#/definitions/ScheduleRequest"
2021-09-09 20:56:15 +02:00
responses:
204:
description: schedule updated
2021-09-06 16:26:35 +02:00
/project/{project_id}/schedules:
parameters:
2024-01-15 20:35:47 +01:00
- $ref: "#/parameters/project_id"
2021-09-06 16:26:35 +02:00
post:
tags:
2024-01-15 20:35:47 +01:00
- schedule
2021-09-06 16:26:35 +02:00
summary: create schedule
parameters:
2024-01-15 20:35:47 +01:00
- name: schedule
in: body
required: true
schema:
$ref: "#/definitions/ScheduleRequest"
2021-09-06 16:26:35 +02:00
responses:
201:
description: schedule created
schema:
$ref: "#/definitions/Schedule"
# project views
/project/{project_id}/views:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Get view
responses:
200:
description: view
schema:
type: array
items:
$ref: "#/definitions/View"
post:
tags:
- project
summary: create view
parameters:
- name: view
in: body
required: true
schema:
$ref: "#/definitions/ViewRequest"
responses:
201:
description: view created
schema:
$ref: "#/definitions/View"
/project/{project_id}/views/{view_id}:
parameters:
- $ref: "#/parameters/project_id"
- $ref: "#/parameters/view_id"
get:
tags:
- project
summary: Get view
responses:
200:
description: view object
schema:
$ref: "#/definitions/View"
put:
tags:
- project
summary: Updates view
parameters:
- name: view
in: body
required: true
schema:
$ref: "#/definitions/ViewRequest"
responses:
204:
description: view updated
delete:
tags:
- project
summary: Removes view
responses:
204:
description: view removed
2016-04-09 21:38:14 +02:00
# tasks
/project/{project_id}/tasks:
parameters:
- $ref: "#/parameters/project_id"
2017-07-25 06:50:45 +02:00
get:
tags:
- project
summary: Get Tasks related to current project
responses:
200:
description: Array of tasks in chronological order
schema:
type: array
items:
$ref: '#/definitions/Task'
2016-04-09 21:38:14 +02:00
post:
tags:
- project
summary: Starts a job
parameters:
2016-12-21 11:33:08 +01:00
- name: task
2016-04-09 21:38:14 +02:00
in: body
required: true
schema:
2016-12-21 11:33:08 +01:00
type: object
properties:
template_id:
type: integer
debug:
type: boolean
dry_run:
type: boolean
2022-10-28 05:05:13 +02:00
diff:
type: boolean
2016-12-21 11:33:08 +01:00
playbook:
type: string
environment:
type: string
2022-01-11 19:28:29 +01:00
limit:
type: string
2016-04-09 21:38:14 +02:00
responses:
201:
description: Task queued
schema:
$ref: "#/definitions/Task"
2023-08-27 00:03:04 +02:00
2017-07-25 06:50:45 +02:00
/project/{project_id}/tasks/last:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Get last 200 Tasks related to current project
responses:
200:
description: Array of tasks in chronological order
schema:
type: array
items:
$ref: '#/definitions/Task'
2023-08-27 00:03:04 +02:00
/project/{project_id}/tasks/{task_id}/stop:
parameters:
- $ref: "#/parameters/project_id"
- $ref: '#/parameters/task_id'
post:
tags:
- project
summary: Stop a job
responses:
204:
description: Task queued
/project/{project_id}/tasks/{task_id}:
parameters:
- $ref: "#/parameters/project_id"
- $ref: "#/parameters/task_id"
get:
tags:
- project
summary: Get a single task
responses:
200:
description: Task
schema:
$ref: "#/definitions/Task"
delete:
tags:
- project
summary: Deletes task (including output)
responses:
204:
description: task deleted
2023-08-27 00:03:04 +02:00
/project/{project_id}/tasks/{task_id}/output:
parameters:
- $ref: '#/parameters/project_id'
- $ref: '#/parameters/task_id'
get:
tags:
- project
summary: Get task output
responses:
200:
description: output
schema:
type: array
items:
$ref: "#/definitions/TaskOutput"
# /runners:
# post:
# tags:
# - project
# summary: Starts a job
# parameters:
# - name: task
# in: body
# required: true
# schema:
# type: object
# properties:
# registration_token:
# type: string
# example: test123
# responses:
# 201:
# description: Task queued
# schema:
# $ref: "#/definitions/Runner"