docker4ssh/protocol/configure.yaml
2021-12-19 17:30:51 +01:00

204 lines
6.8 KiB
YAML

openapi: 3.0.1
info:
title: docker4ssh
description: Communicate between a container and the docker4ssh host
version: 0.1.0
license:
name: GNU Affero General Public License v3.0
url: https://www.gnu.org/licenses/agpl-3.0.txt
contact:
name: ByteDream
url: https://github.com/ByteDream
servers:
- url: 'unix:///var/run/docker4ssh.sock'
paths:
/ping:
get:
summary: Ping the server to see if it's latency and if it's alive
responses:
200:
description: OK
content:
application/json:
schema:
type: object
properties:
received:
type: integer
description: Unix nano timestamp when the message was received
/error:
get:
summary: Sends an error with code 400, only for test purposes
responses:
400:
description: Controlled bad return code
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: Example error message
/info:
get:
summary: Get information about the current container
responses:
200:
description: OK
content:
application/json:
schema:
type: object
properties:
container_id:
type: string
description: ID of the container
/config:
get:
summary: Get the configuration of the current container
responses:
200:
description: OK
content:
application/json:
schema:
type: object
properties:
network_mode:
type: integer
enum:
- 1
- 2
- 3
- 4
- 5
description: The container network mode. Take a look at server/docker/docker.go for extended information
configurable:
type: boolean
description: If the container should be configurable from within
run_level:
type: integer
enum:
- 1
- 2
- 3
description: The container run level / behavior. Take a look at server/docker/docker.go for extended information
startup_information:
type: boolean
description: If information about the container should be shown when a user connects
exit_after:
type: string
description: The process name after the container exits
keep_on_exit:
type: boolean
description: If the container should be not deleted after exit
post:
summary: Set some config settings
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
network_mode:
type: integer
enum:
- 1
- 2
- 3
- 4
- 5
description: The container network mode. Take a look at server/docker/docker.go for extended information
configurable:
type: boolean
description: If the container should be configurable from within
run_level:
type: integer
enum:
- 1
- 2
- 3
description: The container run level / behavior. Take a look at server/docker/docker.go for extended information
startup_information:
type: boolean
description: If information about the container should be shown when a user connects
exit_after:
type: string
description: The process name after the container exits
keep_on_exit:
type: boolean
description: If the container should be not deleted after exit
responses:
200:
description: Settings was made
406:
description: One or more settings could not be changed
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: Human readable description why the changes could not be made
rejected:
type: array
description: The rejected changes
items:
type: object
description: The rejected setting + a description why it couldn't be processed
properties:
name:
type: string
description: Name of the setting
description:
type: string
description: Description of the processing error
/auth:
get:
summary: Returns the current username used for ssh authentication and if a password is set
responses:
200:
description: OK
content:
application/json:
schema:
type: object
properties:
user:
type: string
description: Username
has_password:
type: boolean
description: If a password is set
404:
description: Auth does not exist
content:
application/json:
schema:
type: string
description: Message that the auth does not exists
post:
summary: Changes authentication for the current container
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user:
type: string
description: The new username. Cannot be empty but nullable
password:
type: string
description: The new password. If empty or null, the complete authentication gets deleted
responses:
200:
description: Configuration was changed
406:
description: The given username was empty