portainer/api/swagger.yaml

2488 lines
74 KiB
YAML

---
swagger: "2.0"
info:
description: "Portainer API is an HTTP API served by Portainer. It is used by the\
\ Portainer UI and everything you can do with the UI can be done using the HTTP\
\ API. \nExamples are available at https://gist.github.com/deviantony/77026d402366b4b43fa5918d41bc42f8\
\ \nYou can find out more about Portainer at [http://portainer.io](http://portainer.io)\
\ and get some support on [Slack](http://portainer.io/slack/).\n\n# Authentication\n\
\nMost of the API endpoints require to be authenticated as well as some level\
\ of authorization to be used.\nPortainer API uses JSON Web Token to manage authentication\
\ and thus requires you to provide a token in the **Authorization** header of\
\ each request\nwith the **Bearer** authentication mechanism.\n\nExample:\n```\n\
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsInJvbGUiOjEsImV4cCI6MTQ5OTM3NjE1NH0.NJ6vE8FY1WG6jsRQzfMqeatJ4vh2TWAeeYfDhP71YEE\n\
```\n\n# Security\n\nEach API endpoint has an associated access policy, it is\
\ documented in the description of each endpoint.\n\nDifferent access policies\
\ are available:\n* Public access\n* Authenticated access\n* Restricted access\n\
* Administrator access\n\n### Public access\n\nNo authentication is required to\
\ access the endpoints with this access policy.\n\n### Authenticated access\n\n\
Authentication is required to access the endpoints with this access policy.\n\n\
### Restricted access\n\nAuthentication is required to access the endpoints with\
\ this access policy.\nExtra-checks might be added to ensure access to the resource\
\ is granted. Returned data might also be filtered.\n\n### Administrator access\n\
\nAuthentication as well as an administrator role are required to access the endpoints\
\ with this access policy.\n\n# Execute Docker requests\n\nPortainer **DO NOT**\
\ expose specific endpoints to manage your Docker resources (create a container,\
\ remove a volume, etc...). \n\nInstead, it acts as a reverse-proxy to the Docker\
\ HTTP API. This means that you can execute Docker requests **via** the Portainer\
\ HTTP API.\n\nTo do so, you can use the `/endpoints/{id}/docker` Portainer API\
\ endpoint (which is not documented below due to Swagger limitations). This\n\
endpoint has a restricted access policy so you still need to be authenticated\
\ to be able to query this endpoint. Any query on this endpoint will be proxied\
\ to the\nDocker API of the associated endpoint (requests and responses objects\
\ are the same as documented in the Docker API).\n\n**NOTE**: You can find more\
\ information on how to query the Docker API in the [Docker official documentation](https://docs.docker.com/engine/api/v1.30/)\
\ as well as in [this Portainer example](https://gist.github.com/deviantony/77026d402366b4b43fa5918d41bc42f8).\n"
version: "1.14.0"
title: "Portainer API"
contact:
email: "info@portainer.io"
host: "portainer.domain"
basePath: "/api"
tags:
- name: "auth"
description: "Authenticate against Portainer HTTP API"
- name: "dockerhub"
description: "Manage how Portainer connects to the DockerHub"
- name: "endpoints"
description: "Manage Docker environments"
- name: "registries"
description: "Manage Docker registries"
- name: "resource_controls"
description: "Manage access control on Docker resources"
- name: "settings"
description: "Manage Portainer settings"
- name: "status"
description: "Information about the Portainer instance"
- name: "users"
description: "Manage users"
- name: "teams"
description: "Manage teams"
- name: "team_memberships"
description: "Manage team memberships"
- name: "templates"
description: "Manage App Templates"
- name: "upload"
description: "Upload files"
- name: "websocket"
description: "Create exec sessions using websockets"
schemes:
- "http"
- "https"
paths:
/auth:
post:
tags:
- "auth"
summary: "Authenticate a user"
description: "Use this endpoint to authenticate against Portainer using a username\
\ and password. \n**Access policy**: public\n"
operationId: "AuthenticateUser"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "Credentials used for authentication"
required: true
schema:
$ref: "#/definitions/AuthenticateUserRequest"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/AuthenticateUserResponse"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid credentials"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
503:
description: "Authentication disabled"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Authentication is disabled"
/dockerhub:
get:
tags:
- "dockerhub"
summary: "Retrieve DockerHub information"
description: "Use this endpoint to retrieve the information used to connect\
\ to the DockerHub \n**Access policy**: authenticated\n"
operationId: "DockerHubInspect"
produces:
- "application/json"
parameters: []
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/DockerHubInspectResponse"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
put:
tags:
- "dockerhub"
summary: "Update DockerHub information"
description: "Use this endpoint to update the information used to connect to\
\ the DockerHub \n**Access policy**: administrator\n"
operationId: "DockerHubUpdate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "DockerHub information"
required: true
schema:
$ref: "#/definitions/DockerHubUpdateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/endpoints:
get:
tags:
- "endpoints"
summary: "List endpoints"
description: "List all endpoints based on the current user authorizations. Will\n\
return all endpoints if using an administrator account otherwise it will\n\
only return authorized endpoints. \n**Access policy**: restricted \n"
operationId: "EndpointList"
produces:
- "application/json"
parameters: []
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/EndpointListResponse"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
post:
tags:
- "endpoints"
summary: "Create a new endpoint"
description: "Create a new endpoint that will be used to manage a Docker environment.\
\ \n**Access policy**: administrator\n"
operationId: "EndpointCreate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "Endpoint details"
required: true
schema:
$ref: "#/definitions/EndpointCreateRequest"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/EndpointCreateResponse"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
503:
description: "Endpoint management disabled"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Endpoint management is disabled"
/endpoints/{id}:
get:
tags:
- "endpoints"
summary: "Inspect an endpoint"
description: "Retrieve details abount an endpoint. \n**Access policy**: administrator\
\ \n"
operationId: "EndpointInspect"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Endpoint identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/Endpoint"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
404:
description: "Endpoint not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Endpoint not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
put:
tags:
- "endpoints"
summary: "Update an endpoint"
description: "Update an endpoint. \n**Access policy**: administrator\n"
operationId: "EndpointUpdate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Endpoint identifier"
required: true
type: "integer"
- in: "body"
name: "body"
description: "Endpoint details"
required: true
schema:
$ref: "#/definitions/EndpointUpdateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
404:
description: "Endpoint not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Endpoint not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
503:
description: "Endpoint management disabled"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Endpoint management is disabled"
delete:
tags:
- "endpoints"
summary: "Remove an endpoint"
description: "Remove an endpoint. \n**Access policy**: administrator \n"
operationId: "EndpointDelete"
parameters:
- name: "id"
in: "path"
description: "Endpoint identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
404:
description: "Endpoint not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Endpoint not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
503:
description: "Endpoint management disabled"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Endpoint management is disabled"
/endpoints/{id}/access:
put:
tags:
- "endpoints"
summary: "Manage accesses to an endpoint"
description: "Manage user and team accesses to an endpoint. \n**Access policy**:\
\ administrator \n"
operationId: "EndpointAccessUpdate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Endpoint identifier"
required: true
type: "integer"
- in: "body"
name: "body"
description: "Authorizations details"
required: true
schema:
$ref: "#/definitions/EndpointAccessUpdateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
404:
description: "Endpoint not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Endpoint not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/registries:
get:
tags:
- "registries"
summary: "List registries"
description: "List all registries based on the current user authorizations.\n\
Will return all registries if using an administrator account otherwise it\n\
will only return authorized registries. \n**Access policy**: restricted \
\ \n"
operationId: "RegistryList"
produces:
- "application/json"
parameters: []
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/RegistryListResponse"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
post:
tags:
- "registries"
summary: "Create a new registry"
description: "Create a new registry. \n**Access policy**: administrator \
\ \n"
operationId: "RegistryCreate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "Registry details"
required: true
schema:
$ref: "#/definitions/RegistryCreateRequest"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/RegistryCreateResponse"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
409:
description: "Registry already exists"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "A registry is already defined for this URL"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/registries/{id}:
get:
tags:
- "registries"
summary: "Inspect a registry"
description: "Retrieve details about a registry. \n**Access policy**: administrator\
\ \n"
operationId: "RegistryInspect"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Registry identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/Registry"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
404:
description: "Registry not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Endpoint not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
put:
tags:
- "registries"
summary: "Update a registry"
description: "Update a registry. \n**Access policy**: administrator \n"
operationId: "RegistryUpdate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Registry identifier"
required: true
type: "integer"
- in: "body"
name: "body"
description: "Registry details"
required: true
schema:
$ref: "#/definitions/RegistryUpdateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
404:
description: "Registry not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Endpoint not found"
409:
description: "Registry already exists"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "A registry is already defined for this URL"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
503:
description: "Endpoint management disabled"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Endpoint management is disabled"
delete:
tags:
- "registries"
summary: "Remove a registry"
description: "Remove a registry. \n**Access policy**: administrator \
\ \n"
operationId: "RegistryDelete"
parameters:
- name: "id"
in: "path"
description: "Registry identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
404:
description: "Registry not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Registry not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/registries/{id}/access:
put:
tags:
- "registries"
summary: "Manage accesses to a registry"
description: "Manage user and team accesses to a registry. \n**Access policy**:\
\ administrator \n"
operationId: "RegistryAccessUpdate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Registry identifier"
required: true
type: "integer"
- in: "body"
name: "body"
description: "Authorizations details"
required: true
schema:
$ref: "#/definitions/RegistryAccessUpdateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
404:
description: "Registry not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Registry not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/resource_controls:
post:
tags:
- "resource_controls"
summary: "Create a new resource control"
description: "Create a new resource control to restrict access to a Docker resource.\
\ \n**Access policy**: restricted \n"
operationId: "ResourceControlCreate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "Resource control details"
required: true
schema:
$ref: "#/definitions/ResourceControlCreateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
409:
description: "Resource control already exists"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "A resource control is already applied on this resource"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/resource_controls/{id}:
put:
tags:
- "resource_controls"
summary: "Update a resource control"
description: "Update a resource control. \n**Access policy**: restricted \
\ \n"
operationId: "ResourceControlUpdate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Resource control identifier"
required: true
type: "integer"
- in: "body"
name: "body"
description: "Resource control details"
required: true
schema:
$ref: "#/definitions/ResourceControlUpdateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
404:
description: "Resource control not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Resource control not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
delete:
tags:
- "resource_controls"
summary: "Remove a resource control"
description: "Remove a resource control. \n**Access policy**: restricted \
\ \n"
operationId: "ResourceControlDelete"
parameters:
- name: "id"
in: "path"
description: "Resource control identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
404:
description: "Resource control not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Resource control not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/settings:
get:
tags:
- "settings"
summary: "Retrieve Portainer settings"
description: "Retrieve Portainer settings. \n**Access policy**: administrator\
\ \n"
operationId: "SettingsInspect"
produces:
- "application/json"
parameters: []
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/Settings"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
put:
tags:
- "settings"
summary: "Update Portainer settings"
description: "Update Portainer settings. \n**Access policy**: administrator\
\ \n"
operationId: "SettingsUpdate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "New settings"
required: true
schema:
$ref: "#/definitions/SettingsUpdateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/settings/public:
get:
tags:
- "settings"
summary: "Retrieve Portainer public settings"
description: "Retrieve public settings. Returns a small set of settings that\
\ are not reserved to administrators only. \n**Access policy**: public \
\ \n"
operationId: "PublicSettingsInspect"
produces:
- "application/json"
parameters: []
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/PublicSettingsInspectResponse"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/settings/authentication/checkLDAP:
put:
tags:
- "settings"
summary: "Test LDAP connectivity"
description: "Test LDAP connectivity using LDAP details. \n**Access policy**:\
\ administrator \n"
operationId: "SettingsLDAPCheck"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "LDAP settings"
required: true
schema:
$ref: "#/definitions/SettingsLDAPCheckRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/status:
get:
tags:
- "status"
summary: "Check Portainer status"
description: "Retrieve Portainer status. \n**Access policy**: public \
\ \n"
operationId: "StatusInspect"
produces:
- "application/json"
parameters: []
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/Status"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/users:
get:
tags:
- "users"
summary: "List users"
description: "List Portainer users. Non-administrator users will only be able\
\ to list other non-administrator user accounts. \n**Access policy**: restricted\
\ \n"
operationId: "UserList"
produces:
- "application/json"
parameters: []
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/UserListResponse"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
post:
tags:
- "users"
summary: "Create a new user"
description: "Create a new Portainer user. Only team leaders and administrators\
\ can create users. Only administrators can\ncreate an administrator user\
\ account. \n**Access policy**: restricted \n"
operationId: "UserCreate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "User details"
required: true
schema:
$ref: "#/definitions/UserCreateRequest"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/UserCreateResponse"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
409:
description: "User already exists"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "User already exists"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/users/{id}:
get:
tags:
- "users"
summary: "Inspect a user"
description: "Retrieve details about a user. \n**Access policy**: administrator\
\ \n"
operationId: "UserInspect"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "User identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/User"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
404:
description: "User not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "User not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
put:
tags:
- "users"
summary: "Update a user"
description: "Update user details. A regular user account can only update his\
\ details. \n**Access policy**: authenticated \n"
operationId: "UserUpdate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "User identifier"
required: true
type: "integer"
- in: "body"
name: "body"
description: "User details"
required: true
schema:
$ref: "#/definitions/UserUpdateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
404:
description: "User not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "User not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
delete:
tags:
- "users"
summary: "Remove a user"
description: "Remove a user. \n**Access policy**: administrator \n"
operationId: "UserDelete"
parameters:
- name: "id"
in: "path"
description: "User identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
404:
description: "User not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "User not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/users/{id}/memberships:
get:
tags:
- "users"
summary: "Inspect a user memberships"
description: "Inspect a user memberships. \n**Access policy**: authenticated\
\ \n"
operationId: "UserMembershipsInspect"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "User identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/UserMembershipsResponse"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/users/{id}/passwd:
post:
tags:
- "users"
summary: "Check password validity for a user"
description: "Check if the submitted password is valid for the specified user.\
\ \n**Access policy**: authenticated \n"
operationId: "UserPasswordCheck"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "User identifier"
required: true
type: "integer"
- in: "body"
name: "body"
description: "User details"
required: true
schema:
$ref: "#/definitions/UserPasswordCheckRequest"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/UserPasswordCheckResponse"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
404:
description: "User not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "User not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/users/admin/check:
get:
tags:
- "users"
summary: "Check administrator account existence"
description: "Check if an administrator account exists in the database.\n**Access\
\ policy**: public \n"
operationId: "UserAdminCheck"
produces:
- "application/json"
parameters: []
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/UserListResponse"
404:
description: "User not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "User not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/users/admin/init:
post:
tags:
- "users"
summary: "Initialize administrator account"
description: "Initialize the 'admin' user account.\n**Access policy**: public\
\ \n"
operationId: "UserAdminInit"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "User details"
required: true
schema:
$ref: "#/definitions/UserAdminInitRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
409:
description: "Admin user already initialized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "User already exists"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/upload/tls/{certificate}:
post:
tags:
- "upload"
summary: "Upload TLS files"
description: "Use this endpoint to upload TLS files. \n**Access policy**: administrator\n"
operationId: "UploadTLS"
consumes:
- "multipart/form-data"
produces:
- "application/json"
parameters:
- name: "certificate"
in: "path"
description: "TLS file type. Valid values are 'ca', 'cert' or 'key'."
required: true
type: "string"
- name: "folder"
in: "query"
description: "Folder where the TLS file will be stored. Will be created if\
\ not existing."
required: true
type: "string"
- name: "file"
in: "formData"
description: "The file to upload."
required: false
type: "file"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/teams:
get:
tags:
- "teams"
summary: "List teams"
description: "List teams. For non-administrator users, will only list the teams\
\ they are member of. \n**Access policy**: restricted \n"
operationId: "TeamList"
produces:
- "application/json"
parameters: []
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/TeamListResponse"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
post:
tags:
- "teams"
summary: "Create a new team"
description: "Create a new team. \n**Access policy**: administrator \
\ \n"
operationId: "TeamCreate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "Team details"
required: true
schema:
$ref: "#/definitions/TeamCreateRequest"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/TeamCreateResponse"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
409:
description: "Team already exists"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Team already exists"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/teams/{id}:
get:
tags:
- "teams"
summary: "Inspect a team"
description: "Retrieve details about a team. Access is only available for administrator\
\ and leaders of that team. \n**Access policy**: restricted \n"
operationId: "TeamInspect"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Team identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/Team"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
404:
description: "Team not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Team not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
put:
tags:
- "teams"
summary: "Update a team"
description: "Update a team. \n**Access policy**: administrator \
\ \n"
operationId: "TeamUpdate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Team identifier"
required: true
type: "integer"
- in: "body"
name: "body"
description: "Team details"
required: true
schema:
$ref: "#/definitions/TeamUpdateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
404:
description: "Team not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Team not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
delete:
tags:
- "teams"
summary: "Remove a team"
description: "Remove a team. \n**Access policy**: administrator \n"
operationId: "TeamDelete"
parameters:
- name: "id"
in: "path"
description: "Team identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
404:
description: "Team not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Team not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/teams/{id}/memberships:
get:
tags:
- "teams"
summary: "Inspect a team memberships"
description: "Inspect a team memberships. Access is only available for administrator\
\ and leaders of that team. \n**Access policy**: restricted \n"
operationId: "TeamMembershipsInspect"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Team identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/TeamMembershipsResponse"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/team_memberships:
get:
tags:
- "team_memberships"
summary: "List team memberships"
description: "List team memberships. Access is only available to administrators\
\ and team leaders. \n**Access policy**: restricted \n"
operationId: "TeamMembershipList"
produces:
- "application/json"
parameters: []
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/TeamMembershipListResponse"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
post:
tags:
- "team_memberships"
summary: "Create a new team membership"
description: "Create a new team memberships. Access is only available to administrators\
\ leaders of the associated team. \n**Access policy**: restricted \n"
operationId: "TeamMembershipCreate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- in: "body"
name: "body"
description: "Team membership details"
required: true
schema:
$ref: "#/definitions/TeamMembershipCreateRequest"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/TeamMembershipCreateResponse"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
409:
description: "Team membership already exists"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Team membership already exists for this user and team."
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/team_memberships/{id}:
put:
tags:
- "team_memberships"
summary: "Update a team membership"
description: "Update a team membership. Access is only available to administrators\
\ leaders of the associated team. \n**Access policy**: restricted \
\ \n"
operationId: "TeamMembershipUpdate"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Team membership identifier"
required: true
type: "integer"
- in: "body"
name: "body"
description: "Team membership details"
required: true
schema:
$ref: "#/definitions/TeamMembershipUpdateRequest"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request data format"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
404:
description: "Team membership not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Team membership not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
delete:
tags:
- "team_memberships"
summary: "Remove a team membership"
description: "Remove a team membership. Access is only available to administrators\
\ leaders of the associated team. \n**Access policy**: restricted \n"
operationId: "TeamMembershipDelete"
parameters:
- name: "id"
in: "path"
description: "TeamMembership identifier"
required: true
type: "integer"
responses:
200:
description: "Success"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid request"
403:
description: "Unauthorized"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Access denied to resource"
404:
description: "Team membership not found"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Team membership not found"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
/templates:
get:
tags:
- "templates"
summary: "Retrieve App templates"
description: "Retrieve App templates. \nYou can find more information about\
\ the format at http://portainer.readthedocs.io/en/stable/templates.html \
\ \n**Access policy**: authenticated \n"
operationId: "TemplateList"
produces:
- "application/json"
parameters:
- name: "key"
in: "query"
description: "Templates key. Valid values are 'container' or 'linuxserver.io'."
required: true
type: "string"
responses:
200:
description: "Success"
schema:
$ref: "#/definitions/TemplateListResponse"
400:
description: "Invalid request"
schema:
$ref: "#/definitions/GenericError"
examples:
application/json:
err: "Invalid query format"
500:
description: "Server error"
schema:
$ref: "#/definitions/GenericError"
securityDefinitions:
jwt:
type: "apiKey"
name: "Authorization"
in: "header"
definitions:
Team:
type: "object"
properties:
Id:
type: "integer"
example: 1
description: "Team identifier"
Name:
type: "string"
example: "developers"
description: "Team name"
TeamMembership:
type: "object"
properties:
Id:
type: "integer"
example: 1
description: "Membership identifier"
UserID:
type: "integer"
example: 1
description: "User identifier"
TeamID:
type: "integer"
example: 1
description: "Team identifier"
Role:
type: "integer"
example: 1
description: "Team role (1 for team leader and 2 for team member)"
User:
type: "object"
properties:
Id:
type: "integer"
example: 1
description: "User identifier"
Username:
type: "string"
example: "bob"
description: "Username"
Role:
type: "integer"
example: 1
description: "User role (1 for administrator account and 2 for regular account)"
Status:
type: "object"
properties:
Authentication:
type: "boolean"
example: true
description: "Is authentication enabled"
EndpointManagement:
type: "boolean"
example: true
description: "Is endpoint management enabled"
Analytics:
type: "boolean"
example: true
description: "Is analytics enabled"
Version:
type: "string"
example: "1.14.0"
description: "Portainer API version"
PublicSettingsInspectResponse:
type: "object"
properties:
LogoURL:
type: "string"
example: "https://mycompany.mydomain.tld/logo.png"
description: "URL to a logo that will be displayed on the login page as well\
\ as on top of the sidebar. Will use default Portainer logo when value is\
\ empty string"
DisplayExternalContributors:
type: "boolean"
example: false
description: "Whether to display or not external templates contributions as\
\ sub-menus in the UI."
AuthenticationMethod:
type: "integer"
example: 1
description: "Active authentication method for the Portainer instance. Valid\
\ values are: 1 for managed or 2 for LDAP."
TLSConfiguration:
type: "object"
properties:
TLS:
type: "boolean"
example: true
description: "Use TLS"
TLSSkipVerify:
type: "boolean"
example: false
description: "Skip the verification of the server TLS certificate"
TLSCACertPath:
type: "string"
example: "/data/tls/ca.pem"
description: "Path to the TLS CA certificate file"
TLSCertPath:
type: "string"
example: "/data/tls/cert.pem"
description: "Path to the TLS client certificate file"
TLSKeyPath:
type: "string"
example: "/data/tls/key.pem"
description: "Path to the TLS client key file"
LDAPSearchSettings:
type: "object"
properties:
BaseDN:
type: "string"
example: "dc=ldap,dc=domain,dc=tld"
description: "The distinguished name of the element from which the LDAP server\
\ will search for users"
Filter:
type: "string"
example: "(objectClass=account)"
description: "Optional LDAP search filter used to select user elements"
UserNameAttribute:
type: "string"
example: "uid"
description: "LDAP attribute which denotes the username"
LDAPSettings:
type: "object"
properties:
ReaderDN:
type: "string"
example: "cn=readonly-account,dc=ldap,dc=domain,dc=tld"
description: "Account that will be used to search for users"
Password:
type: "string"
example: "readonly-password"
description: "Password of the account that will be used to search users"
URL:
type: "string"
example: "myldap.domain.tld:389"
description: "URL or IP address of the LDAP server"
TLSConfig:
$ref: "#/definitions/TLSConfiguration"
StartTLS:
type: "boolean"
example: true
description: "Whether LDAP connection should use StartTLS"
SearchSettings:
type: "array"
items:
$ref: "#/definitions/LDAPSearchSettings"
Settings:
type: "object"
properties:
TemplatesURL:
type: "string"
example: "https://raw.githubusercontent.com/portainer/templates/master/templates.json"
description: "URL to the templates that will be displayed in the UI when navigating\
\ to App Templates"
LogoURL:
type: "string"
example: "https://mycompany.mydomain.tld/logo.png"
description: "URL to a logo that will be displayed on the login page as well\
\ as on top of the sidebar. Will use default Portainer logo when value is\
\ empty string"
BlackListedLabels:
type: "array"
description: "A list of label name & value that will be used to hide containers\
\ when querying containers"
items:
$ref: "#/definitions/Settings_BlackListedLabels"
DisplayExternalContributors:
type: "boolean"
example: false
description: "Whether to display or not external templates contributions as\
\ sub-menus in the UI."
AuthenticationMethod:
type: "integer"
example: 1
description: "Active authentication method for the Portainer instance. Valid\
\ values are: 1 for managed or 2 for LDAP."
LDAPSettings:
$ref: "#/definitions/LDAPSettings"
Settings_BlackListedLabels:
properties:
name:
type: "string"
example: "com.foo"
value:
type: "string"
example: "bar"
Registry:
type: "object"
properties:
Id:
type: "integer"
example: 1
description: "Registry identifier"
Name:
type: "string"
example: "my-registry"
description: "Registry name"
URL:
type: "string"
example: "registry.mydomain.tld:2375"
description: "URL or IP address of the Docker registry"
Authentication:
type: "boolean"
example: true
description: "Is authentication against this registry enabled"
Username:
type: "string"
example: "registry_user"
description: "Username used to authenticate against this registry"
Password:
type: "string"
example: "registry_password"
description: "Password used to authenticate against this registry"
AuthorizedUsers:
type: "array"
description: "List of user identifiers authorized to use this registry"
items:
type: "integer"
example: 1
description: "User identifier"
AuthorizedTeams:
type: "array"
description: "List of team identifiers authorized to use this registry"
items:
type: "integer"
example: 1
description: "Team identifier"
Endpoint:
type: "object"
properties:
Id:
type: "integer"
example: 1
description: "Endpoint identifier"
Name:
type: "string"
example: "my-endpoint"
description: "Endpoint name"
URL:
type: "string"
example: "docker.mydomain.tld:2375"
description: "URL or IP address of the Docker host associated to this endpoint"
AuthorizedUsers:
type: "array"
description: "List of user identifiers authorized to connect to this endpoint"
items:
type: "integer"
example: 1
description: "User identifier"
AuthorizedTeams:
type: "array"
description: "List of team identifiers authorized to connect to this endpoint"
items:
type: "integer"
example: 1
description: "Team identifier"
GenericError:
type: "object"
properties:
err:
type: "string"
example: "Something bad happened"
description: "Error message"
AuthenticateUserRequest:
type: "object"
required:
- "Password"
- "Username"
properties:
Username:
type: "string"
example: "admin"
description: "Username"
Password:
type: "string"
example: "mypassword"
description: "Password"
AuthenticateUserResponse:
type: "object"
properties:
jwt:
type: "string"
example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsInJvbGUiOjEsImV4cCI6MTQ5OTM3NjE1NH0.NJ6vE8FY1WG6jsRQzfMqeatJ4vh2TWAeeYfDhP71YEE"
description: "JWT token used to authenticate against the API"
DockerHubInspectResponse:
type: "object"
properties:
Authentication:
type: "boolean"
example: true
description: "Is authentication against DockerHub enabled"
Username:
type: "string"
example: "hub_user"
description: "Username used to authenticate against the DockerHub"
Password:
type: "string"
example: "hub_password"
description: "Password used to authenticate against the DockerHub"
DockerHubUpdateRequest:
type: "object"
required:
- "Authentication"
- "Password"
- "Username"
properties:
Authentication:
type: "boolean"
example: true
description: "Enable authentication against DockerHub"
Username:
type: "string"
example: "hub_user"
description: "Username used to authenticate against the DockerHub"
Password:
type: "string"
example: "hub_password"
description: "Password used to authenticate against the DockerHub"
EndpointCreateRequest:
type: "object"
required:
- "Name"
- "URL"
properties:
Name:
type: "string"
example: "my-endpoint"
description: "Name that will be used to identify this endpoint"
URL:
type: "string"
example: "docker.mydomain.tld:2375"
description: "URL or IP address of a Docker host"
PublicURL:
type: "string"
example: "docker.mydomain.tld:2375"
description: "URL or IP address where exposed containers will be reachable.\
\ Defaults to URL if not specified"
TLS:
type: "boolean"
example: true
description: "Require TLS to connect against this endpoint"
EndpointCreateResponse:
type: "object"
properties:
Id:
type: "integer"
example: 1
description: "Id of the endpoint"
EndpointListResponse:
type: "array"
items:
$ref: "#/definitions/Endpoint"
EndpointUpdateRequest:
type: "object"
properties:
Name:
type: "string"
example: "my-endpoint"
description: "Name that will be used to identify this endpoint"
URL:
type: "string"
example: "docker.mydomain.tld:2375"
description: "URL or IP address of a Docker host"
PublicURL:
type: "string"
example: "docker.mydomain.tld:2375"
description: "URL or IP address where exposed containers will be reachable.\
\ Defaults to URL if not specified"
TLS:
type: "boolean"
example: true
description: "Require TLS to connect against this endpoint"
EndpointAccessUpdateRequest:
type: "object"
properties:
AuthorizedUsers:
type: "array"
description: "List of user identifiers authorized to connect to this endpoint"
items:
type: "integer"
example: 1
description: "User identifier"
AuthorizedTeams:
type: "array"
description: "List of team identifiers authorized to connect to this endpoint"
items:
type: "integer"
example: 1
description: "Team identifier"
RegistryCreateRequest:
type: "object"
required:
- "Authentication"
- "Name"
- "Password"
- "URL"
- "Username"
properties:
Name:
type: "string"
example: "my-registry"
description: "Name that will be used to identify this registry"
URL:
type: "string"
example: "registry.mydomain.tld:2375"
description: "URL or IP address of the Docker registry"
Authentication:
type: "boolean"
example: true
description: "Is authentication against this registry enabled"
Username:
type: "string"
example: "registry_user"
description: "Username used to authenticate against this registry"
Password:
type: "string"
example: "registry_password"
description: "Password used to authenticate against this registry"
RegistryCreateResponse:
type: "object"
properties:
Id:
type: "integer"
example: 1
description: "Id of the registry"
RegistryListResponse:
type: "array"
items:
$ref: "#/definitions/Registry"
RegistryUpdateRequest:
type: "object"
required:
- "Name"
- "URL"
properties:
Name:
type: "string"
example: "my-registry"
description: "Name that will be used to identify this registry"
URL:
type: "string"
example: "registry.mydomain.tld:2375"
description: "URL or IP address of the Docker registry"
Authentication:
type: "boolean"
example: true
description: "Is authentication against this registry enabled"
Username:
type: "string"
example: "registry_user"
description: "Username used to authenticate against this registry"
Password:
type: "string"
example: "registry_password"
description: "Password used to authenticate against this registry"
RegistryAccessUpdateRequest:
type: "object"
properties:
AuthorizedUsers:
type: "array"
description: "List of user identifiers authorized to use thi registry"
items:
type: "integer"
example: 1
description: "User identifier"
AuthorizedTeams:
type: "array"
description: "List of team identifiers authorized to use thi registry"
items:
type: "integer"
example: 1
description: "Team identifier"
ResourceControlCreateRequest:
type: "object"
required:
- "ResourceID"
- "Type"
properties:
ResourceID:
type: "string"
example: "617c5f22bb9b023d6daab7cba43a57576f83492867bc767d1c59416b065e5f08"
description: "Docker resource identifier on which access control will be applied"
Type:
type: "string"
example: "container"
description: "Type of Docker resource. Valid values are: container, volume\
\ or service"
AdministratorsOnly:
type: "boolean"
example: true
description: "Restrict access to the associated resource to administrators\
\ only"
Users:
type: "array"
description: "List of user identifiers with access to the associated resource"
items:
type: "integer"
example: 1
description: "User identifier"
Teams:
type: "array"
description: "List of team identifiers with access to the associated resource"
items:
type: "integer"
example: 1
description: "Team identifier"
SubResourceIDs:
type: "array"
description: "List of Docker resources that will inherit this access control"
items:
type: "string"
example: "617c5f22bb9b023d6daab7cba43a57576f83492867bc767d1c59416b065e5f08"
description: "Docker resource identifier"
ResourceControlUpdateRequest:
type: "object"
properties:
AdministratorsOnly:
type: "boolean"
example: false
description: "Restrict access to the associated resource to administrators\
\ only"
Users:
type: "array"
description: "List of user identifiers with access to the associated resource"
items:
type: "integer"
example: 1
description: "User identifier"
Teams:
type: "array"
description: "List of team identifiers with access to the associated resource"
items:
type: "integer"
example: 1
description: "Team identifier"
SettingsUpdateRequest:
type: "object"
required:
- "AuthenticationMethod"
- "TemplatesURL"
properties:
TemplatesURL:
type: "string"
example: "https://raw.githubusercontent.com/portainer/templates/master/templates.json"
description: "URL to the templates that will be displayed in the UI when navigating\
\ to App Templates"
LogoURL:
type: "string"
example: "https://mycompany.mydomain.tld/logo.png"
description: "URL to a logo that will be displayed on the login page as well\
\ as on top of the sidebar. Will use default Portainer logo when value is\
\ empty string"
BlackListedLabels:
type: "array"
description: "A list of label name & value that will be used to hide containers\
\ when querying containers"
items:
$ref: "#/definitions/Settings_BlackListedLabels"
DisplayExternalContributors:
type: "boolean"
example: false
description: "Whether to display or not external templates contributions as\
\ sub-menus in the UI."
AuthenticationMethod:
type: "integer"
example: 1
description: "Active authentication method for the Portainer instance. Valid\
\ values are: 1 for managed or 2 for LDAP."
LDAPSettings:
$ref: "#/definitions/LDAPSettings"
UserCreateRequest:
type: "object"
required:
- "Password"
- "Role"
- "Username"
properties:
Username:
type: "string"
example: "bob"
description: "Username"
Password:
type: "string"
example: "cg9Wgky3"
description: "Password"
Role:
type: "integer"
example: 1
description: "User role (1 for administrator account and 2 for regular account)"
UserCreateResponse:
type: "object"
properties:
Id:
type: "integer"
example: 1
description: "Id of the user"
UserListResponse:
type: "array"
items:
$ref: "#/definitions/User"
UserUpdateRequest:
type: "object"
properties:
Password:
type: "string"
example: "cg9Wgky3"
description: "Password"
Role:
type: "integer"
example: 1
description: "User role (1 for administrator account and 2 for regular account)"
UserMembershipsResponse:
type: "array"
items:
$ref: "#/definitions/TeamMembership"
UserPasswordCheckRequest:
type: "object"
required:
- "Password"
properties:
Password:
type: "string"
example: "cg9Wgky3"
description: "Password"
UserPasswordCheckResponse:
type: "object"
properties:
valid:
type: "boolean"
example: true
description: "Is the password valid"
TeamCreateRequest:
type: "object"
required:
- "Name"
properties:
Name:
type: "string"
example: "developers"
description: "Name"
TeamCreateResponse:
type: "object"
properties:
Id:
type: "integer"
example: 1
description: "Id of the team"
TeamListResponse:
type: "array"
items:
$ref: "#/definitions/Team"
TeamUpdateRequest:
type: "object"
required:
- "Name"
properties:
Name:
type: "string"
example: "developers"
description: "Name"
TeamMembershipsResponse:
type: "array"
items:
$ref: "#/definitions/TeamMembership"
TeamMembershipCreateRequest:
type: "object"
required:
- "Role"
- "TeamID"
- "UserID"
properties:
UserID:
type: "integer"
example: 1
description: "User identifier"
TeamID:
type: "integer"
example: 1
description: "Team identifier"
Role:
type: "integer"
example: 1
description: "Role for the user inside the team (1 for leader and 2 for regular\
\ member)"
TeamMembershipCreateResponse:
type: "object"
properties:
Id:
type: "integer"
example: 1
description: "Id of the team membership"
TeamMembershipListResponse:
type: "array"
items:
$ref: "#/definitions/TeamMembership"
TeamMembershipUpdateRequest:
type: "object"
required:
- "Role"
- "TeamID"
- "UserID"
properties:
UserID:
type: "integer"
example: 1
description: "User identifier"
TeamID:
type: "integer"
example: 1
description: "Team identifier"
Role:
type: "integer"
example: 1
description: "Role for the user inside the team (1 for leader and 2 for regular\
\ member)"
SettingsLDAPCheckRequest:
type: "object"
properties:
LDAPSettings:
$ref: "#/definitions/LDAPSettings"
UserAdminInitRequest:
type: "object"
properties:
Username:
type: "string"
example: "admin"
description: "Username of the initial administrator account"
Password:
type: "string"
example: "admin-password"
description: "Password of the initial administrator account"
TemplateListResponse:
type: "array"
items:
$ref: "#/definitions/Template"
Template:
type: "object"
properties:
title:
type: "string"
example: "Nginx"
description: "Title of the template"
description:
type: "string"
example: "High performance web server"
description: "Description of the template"
logo:
type: "string"
example: "https://cloudinovasi.id/assets/img/logos/nginx.png"
description: "URL of the template's logo"
image:
type: "string"
example: "nginx:latest"
description: "The Docker image associated to the template"