openapi: 3.2.0 info: contact: email: info@portainer.io description: Portainer API is an HTTP API served by Portainer. license: name: zlib url: https://github.com/portainer/portainer/blob/develop/LICENSE title: PortainerCE Custom Templates API version: 2.39.1 servers: - url: /api tags: - description: Manage Custom Templates name: Custom Templates paths: /custom_templates: get: description: 'List available custom templates. **Access policy**: authenticated' operationId: CustomTemplateList parameters: - description: Template types in: query name: type required: true style: form explode: false schema: type: array items: enum: - 1 - 2 - 3 type: integer - description: Filter by edge templates in: query name: edge schema: type: boolean responses: '200': description: Success content: application/json: schema: items: $ref: '#/components/schemas/portainer.CustomTemplate' type: array '500': description: Server error security: - ApiKeyAuth: [] - jwt: [] summary: List available custom templates tags: - Custom Templates /custom_templates/{id}: delete: description: 'Remove a template. **Access policy**: authenticated' operationId: CustomTemplateDelete parameters: - description: Template identifier in: path name: id required: true schema: type: integer responses: '204': description: Success '400': description: Invalid request '403': description: Access denied to resource '404': description: Template not found '500': description: Server error security: - ApiKeyAuth: [] - jwt: [] summary: Remove a template tags: - Custom Templates get: description: 'Retrieve details about a template. **Access policy**: authenticated' operationId: CustomTemplateInspect parameters: - description: Template identifier in: path name: id required: true schema: type: integer responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/portainer.CustomTemplate' '400': description: Invalid request '404': description: Template not found '500': description: Server error security: - ApiKeyAuth: [] - jwt: [] summary: Inspect a custom template tags: - Custom Templates put: description: 'Update a template. **Access policy**: authenticated' operationId: CustomTemplateUpdate parameters: - description: Template identifier in: path name: id required: true schema: type: integer responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/portainer.CustomTemplate' '400': description: Invalid request '403': description: Permission denied to access template '404': description: Template not found '500': description: Server error security: - ApiKeyAuth: [] - jwt: [] summary: Update a template tags: - Custom Templates requestBody: content: application/json: schema: $ref: '#/components/schemas/customtemplates.customTemplateUpdatePayload' description: Template details required: true /custom_templates/{id}/file: get: description: 'Retrieve the content of the Stack file for the specified custom template **Access policy**: authenticated' operationId: CustomTemplateFile parameters: - description: Template identifier in: path name: id required: true schema: type: integer responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/customtemplates.fileResponse' '400': description: Invalid request '404': description: Custom template not found '500': description: Server error security: - ApiKeyAuth: [] - jwt: [] summary: Get Template stack file content tags: - Custom Templates /custom_templates/{id}/git_fetch: put: description: 'Retrieve details about a template created from git repository method. **Access policy**: authenticated' operationId: CustomTemplateGitFetch parameters: - description: Template identifier in: path name: id required: true schema: type: integer responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/customtemplates.fileResponse' '400': description: Invalid request '404': description: Custom template not found '500': description: Server error security: - ApiKeyAuth: [] - jwt: [] summary: Fetch the latest config file content based on custom template's git repository… tags: - Custom Templates /custom_templates/create/file: post: description: 'Create a custom template. **Access policy**: authenticated' operationId: CustomTemplateCreateFile responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/portainer.CustomTemplate' '400': description: Invalid request '500': description: Server error security: - ApiKeyAuth: [] - jwt: [] summary: Create a custom template tags: - Custom Templates requestBody: content: multipart/form-data: schema: type: object properties: Title: type: string description: Title of the template Description: type: string description: Description of the template Note: type: string description: A note that will be displayed in the UI. Supports HTML content Platform: type: integer enum: - 1 - 2 description: Platform associated to the template (1 - 'linux', 2 - 'windows') Type: type: integer enum: - 1 - 2 - 3 description: Type of created stack (1 - swarm, 2 - compose, 3 - kubernetes) File: type: string description: File format: binary Logo: type: string description: URL of the template's logo Variables: type: string description: A json array of variables definitions required: - Title - Description - Note - Platform - Type - File /custom_templates/create/repository: post: description: 'Create a custom template. **Access policy**: authenticated' operationId: CustomTemplateCreateRepository responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/portainer.CustomTemplate' '400': description: Invalid request '500': description: Server error security: - ApiKeyAuth: [] - jwt: [] summary: Create a custom template tags: - Custom Templates requestBody: content: application/json: schema: $ref: '#/components/schemas/customtemplates.customTemplateFromGitRepositoryPayload' description: Required when using method=repository required: true /custom_templates/create/string: post: description: 'Create a custom template. **Access policy**: authenticated' operationId: CustomTemplateCreateString responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/portainer.CustomTemplate' '400': description: Invalid request '500': description: Server error security: - ApiKeyAuth: [] - jwt: [] summary: Create a custom template tags: - Custom Templates requestBody: content: application/json: schema: $ref: '#/components/schemas/customtemplates.customTemplateFromFileContentPayload' description: body required: true components: schemas: gittypes.GitCredentialAuthType: enum: - 0 - 1 type: integer x-enum-varnames: - GitCredentialAuthType_Basic - GitCredentialAuthType_Token gittypes.GitAuthentication: properties: AuthorizationType: $ref: '#/components/schemas/gittypes.GitCredentialAuthType' GitCredentialID: description: 'Git credentials identifier when the value is not 0 When the value is 0, Username, Password, and Authtype are set without using saved credential This is introduced since 2.15.0' example: 0 type: integer Password: type: string Username: type: string type: object customtemplates.customTemplateFromFileContentPayload: properties: Description: description: Description of the template example: High performance web server type: string EdgeTemplate: description: EdgeTemplate indicates if this template purpose for Edge Stack example: false type: boolean FileContent: description: Content of stack file type: string Logo: description: URL of the template's logo example: https://portainer.io/img/logo.svg type: string Note: description: A note that will be displayed in the UI. Supports HTML content example: This is my custom template type: string Platform: allOf: - $ref: '#/components/schemas/portainer.CustomTemplatePlatform' description: 'Platform associated to the template. Valid values are: 1 - ''linux'', 2 - ''windows'' Required for Docker stacks' enum: - 1 - 2 example: 1 Title: description: Title of the template example: Nginx type: string Type: allOf: - $ref: '#/components/schemas/portainer.StackType' description: 'Type of created stack: * 1 - swarm * 2 - compose * 3 - kubernetes' enum: - 1 - 2 - 3 example: 1 Variables: description: Definitions of variables in the stack file items: $ref: '#/components/schemas/portainer.CustomTemplateVariableDefinition' type: array required: - Description - FileContent - Title - Type type: object portainer.CustomTemplate: properties: CreatedByUserId: description: User identifier who created this template example: 3 type: integer Description: description: Description of the template example: High performance web server type: string EdgeTemplate: description: EdgeTemplate indicates if this template purpose for Edge Stack example: false type: boolean EntryPoint: description: Path to the Stack file example: docker-compose.yml type: string GitConfig: $ref: '#/components/schemas/gittypes.RepoConfig' Id: description: CustomTemplate Identifier example: 1 type: integer IsComposeFormat: description: IsComposeFormat indicates if the Kubernetes template is created from a Docker Compose file example: false type: boolean Logo: description: URL of the template's logo example: https://portainer.io/img/logo.svg type: string Note: description: A note that will be displayed in the UI. Supports HTML content example: This is my custom template type: string Platform: allOf: - $ref: '#/components/schemas/portainer.CustomTemplatePlatform' description: 'Platform associated to the template. Valid values are: 1 - ''linux'', 2 - ''windows''' enum: - 1 - 2 example: 1 ProjectPath: description: Path on disk to the repository hosting the Stack file example: /data/custom_template/3 type: string ResourceControl: $ref: '#/components/schemas/portainer.ResourceControl' Title: description: Title of the template example: Nginx type: string Type: allOf: - $ref: '#/components/schemas/portainer.StackType' description: 'Type of created stack: * 1 - swarm * 2 - compose * 3 - kubernetes' enum: - 1 - 2 - 3 example: 1 Variables: items: $ref: '#/components/schemas/portainer.CustomTemplateVariableDefinition' type: array type: object portainer.UserResourceAccess: properties: AccessLevel: $ref: '#/components/schemas/portainer.ResourceAccessLevel' UserId: type: integer type: object gittypes.RepoConfig: properties: Authentication: allOf: - $ref: '#/components/schemas/gittypes.GitAuthentication' description: Git credentials ConfigFilePath: description: Path to where the config file is in this url/refName example: docker-compose.yml type: string ConfigHash: description: Repository hash example: bc4c183d756879ea4d173315338110b31004b8e0 type: string ReferenceName: description: The reference name example: refs/heads/branch_name type: string TLSSkipVerify: description: TLSSkipVerify skips SSL verification when cloning the Git repository example: false type: boolean URL: description: The repo url example: https://github.com/portainer/portainer.git type: string type: object portainer.CustomTemplateVariableDefinition: properties: defaultValue: example: default value type: string description: example: Description type: string label: example: My Variable type: string name: example: MY_VAR type: string type: object customtemplates.customTemplateUpdatePayload: properties: ComposeFilePathInRepository: default: docker-compose.yml description: Path to the Stack file inside the Git repository example: docker-compose.yml type: string Description: description: Description of the template example: High performance web server type: string EdgeTemplate: description: EdgeTemplate indicates if this template purpose for Edge Stack example: false type: boolean FileContent: description: Content of stack file type: string IsComposeFormat: description: IsComposeFormat indicates if the Kubernetes template is created from a Docker Compose file example: false type: boolean Logo: description: URL of the template's logo example: https://portainer.io/img/logo.svg type: string Note: description: A note that will be displayed in the UI. Supports HTML content example: This is my custom template type: string Platform: allOf: - $ref: '#/components/schemas/portainer.CustomTemplatePlatform' description: 'Platform associated to the template. Valid values are: 1 - ''linux'', 2 - ''windows'' Required for Docker stacks' enum: - 1 - 2 example: 1 RepositoryAuthentication: description: Use authentication to clone the Git repository example: true type: boolean RepositoryAuthorizationType: allOf: - $ref: '#/components/schemas/gittypes.GitCredentialAuthType' description: RepositoryAuthorizationType is the authorization type to use example: 0 RepositoryGitCredentialID: description: 'GitCredentialID used to identify the bound git credential. Required when RepositoryAuthentication is true and RepositoryUsername/RepositoryPassword are not provided' example: 0 type: integer RepositoryPassword: description: 'Password used in basic authentication or token used in token authentication. Required when RepositoryAuthentication is true and RepositoryGitCredentialID is 0' example: myGitPassword type: string RepositoryReferenceName: description: Reference name of a Git repository hosting the Stack file example: refs/heads/master type: string RepositoryURL: description: URL of a Git repository hosting the Stack file example: https://github.com/openfaas/faas type: string RepositoryUsername: description: 'Username used in basic authentication. Required when RepositoryAuthentication is true and RepositoryGitCredentialID is 0. Ignored if RepositoryAuthType is token' example: myGitUsername type: string TLSSkipVerify: description: TLSSkipVerify skips SSL verification when cloning the Git repository example: false type: boolean Title: description: Title of the template example: Nginx type: string Type: allOf: - $ref: '#/components/schemas/portainer.StackType' description: Type of created stack (1 - swarm, 2 - compose, 3 - kubernetes) enum: - 1 - 2 - 3 example: 1 Variables: description: Definitions of variables in the stack file items: $ref: '#/components/schemas/portainer.CustomTemplateVariableDefinition' type: array required: - Description - FileContent - RepositoryURL - Title - Type type: object portainer.StackType: enum: - 0 - 1 - 2 - 3 type: integer x-enum-varnames: - _ - DockerSwarmStack - DockerComposeStack - KubernetesStack customtemplates.fileResponse: properties: FileContent: type: string type: object customtemplates.customTemplateFromGitRepositoryPayload: properties: ComposeFilePathInRepository: default: docker-compose.yml description: Path to the Stack file inside the Git repository example: docker-compose.yml type: string Description: description: Description of the template example: High performance web server type: string EdgeTemplate: description: EdgeTemplate indicates if this template purpose for Edge Stack example: false type: boolean IsComposeFormat: description: IsComposeFormat indicates if the Kubernetes template is created from a Docker Compose file example: false type: boolean Logo: description: URL of the template's logo example: https://portainer.io/img/logo.svg type: string Note: description: A note that will be displayed in the UI. Supports HTML content example: This is my custom template type: string Platform: allOf: - $ref: '#/components/schemas/portainer.CustomTemplatePlatform' description: 'Platform associated to the template. Valid values are: 1 - ''linux'', 2 - ''windows'' Required for Docker stacks' enum: - 1 - 2 example: 1 RepositoryAuthentication: description: Use basic authentication to clone the Git repository example: true type: boolean RepositoryPassword: description: Password used in basic authentication. Required when RepositoryAuthentication is true. example: myGitPassword type: string RepositoryReferenceName: description: Reference name of a Git repository hosting the Stack file example: refs/heads/master type: string RepositoryURL: description: URL of a Git repository hosting the Stack file example: https://github.com/openfaas/faas type: string RepositoryUsername: description: Username used in basic authentication. Required when RepositoryAuthentication is true. example: myGitUsername type: string TLSSkipVerify: description: TLSSkipVerify skips SSL verification when cloning the Git repository example: false type: boolean Title: description: Title of the template example: Nginx type: string Type: allOf: - $ref: '#/components/schemas/portainer.StackType' description: 'Type of created stack: * 1 - swarm * 2 - compose * 3 - kubernetes' enum: - 1 - 2 example: 1 Variables: description: Definitions of variables in the stack file items: $ref: '#/components/schemas/portainer.CustomTemplateVariableDefinition' type: array required: - Description - RepositoryURL - Title - Type type: object portainer.ResourceControlType: enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 type: integer x-enum-varnames: - _ - ContainerResourceControl - ServiceResourceControl - VolumeResourceControl - NetworkResourceControl - SecretResourceControl - StackResourceControl - ConfigResourceControl - CustomTemplateResourceControl - ContainerGroupResourceControl portainer.ResourceAccessLevel: enum: - 0 - 1 type: integer x-enum-varnames: - _ - ReadWriteAccessLevel portainer.TeamResourceAccess: properties: AccessLevel: $ref: '#/components/schemas/portainer.ResourceAccessLevel' TeamId: type: integer type: object portainer.CustomTemplatePlatform: enum: - 0 - 1 - 2 type: integer x-enum-varnames: - _ - CustomTemplatePlatformLinux - CustomTemplatePlatformWindows portainer.ResourceControl: properties: AccessLevel: $ref: '#/components/schemas/portainer.ResourceAccessLevel' AdministratorsOnly: description: Permit access to resource only to admins example: true type: boolean Id: description: ResourceControl Identifier example: 1 type: integer OwnerId: description: 'Deprecated fields Deprecated in DBVersion == 2' type: integer Public: description: Permit access to the associated resource to any user example: true type: boolean ResourceId: description: 'Docker resource identifier on which access control will be applied.\ In the case of a resource control applied to a stack, use the stack name as identifier' example: 617c5f22bb9b023d6daab7cba43a57576f83492867bc767d1c59416b065e5f08 type: string SubResourceIds: description: List of Docker resources that will inherit this access control example: - 617c5f22bb9b023d6daab7cba43a57576f83492867bc767d1c59416b065e5f08 items: type: string type: array System: type: boolean TeamAccesses: items: $ref: '#/components/schemas/portainer.TeamResourceAccess' type: array Type: allOf: - $ref: '#/components/schemas/portainer.ResourceControlType' description: 'Type of Docker resource. Valid values are: 1- container, 2 -service 3 - volume, 4 - secret, 5 - stack, 6 - config or 7 - custom template' example: 1 UserAccesses: items: $ref: '#/components/schemas/portainer.UserResourceAccess' type: array type: object securitySchemes: ApiKeyAuth: in: header name: X-API-KEY type: apiKey jwt: in: header name: Authorization type: apiKey