Documentation
Documentation
https://docs.gitlab.com/api/
APIReference
https://docs.gitlab.com/api/api_resources/
Authentication
https://docs.gitlab.com/api/rest/authentication/
swagger: '2.0'
info:
title: GitLab access_requests terraform API
version: v4
description: Operations related to access requests
host: gitlab.com
produces:
- application/json
tags:
- name: terraform
description: Operations about terraforms
paths:
/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}:
get:
summary: Download the latest version of a module
description: This feature was introduced in GitLab 16.7
produces:
- application/json
parameters:
- in: path
name: id
description: The ID or full path of a project
type: string
required: true
- in: path
name: module_name
description: Module name
type: string
required: true
example: infra-registry
- in: path
name: module_system
description: Module system
type: string
required: true
example: aws
- in: query
name: terraform-get
description: Terraform get redirection flag
type: string
enum:
- '1'
required: false
responses:
'204':
description: Download the latest version of a module
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not found
tags:
- terraform
operationId: getApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem
/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}/*module_version:
get:
summary: Download a specific version of a module
description: This feature was introduced in GitLab 16.7
produces:
- application/json
parameters:
- in: path
name: id
description: The ID or full path of a project
type: string
required: true
- in: path
name: module_name
description: Module name
type: string
required: true
example: infra-registry
- in: path
name: module_system
description: Module system
type: string
required: true
example: aws
- in: query
name: module_version
description: Module version
type: string
required: true
- in: query
name: terraform-get
description: Terraform get redirection flag
type: string
enum:
- '1'
required: false
responses:
'204':
description: Download a specific version of a module
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not found
tags:
- terraform
operationId: getApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersion
/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}/*module_version/file/authorize:
put:
summary: Workhorse authorize Terraform Module package file
description: This feature was introduced in GitLab 13.11
produces:
- application/json
consumes:
- application/json
parameters:
- in: path
name: id
description: The ID or full path of a project
type: string
required: true
- in: path
name: module_name
description: Module name
type: string
required: true
example: infra-registry
- in: path
name: module_system
description: Module system
type: string
required: true
example: aws
- name: putApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersionFileAuthorize
in: body
required: true
schema:
$ref: '#/definitions/putApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersionFileAuthorize'
responses:
'200':
description: Workhorse authorize Terraform Module package file
'403':
description: Forbidden
tags:
- terraform
operationId: putApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersionFileAuthorize
/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}/*module_version/file:
put:
summary: Upload Terraform Module package file
description: This feature was introduced in GitLab 13.11
produces:
- application/json
consumes:
- multipart/form-data
parameters:
- in: path
name: id
description: The ID or full path of a project
type: string
required: true
- in: path
name: module_name
description: Module name
type: string
required: true
example: infra-registry
- in: path
name: module_system
description: Module system
type: string
required: true
example: aws
- in: formData
name: module_version
description: Module version
type: string
required: true
- in: formData
name: file
description: The package file to be published (generated by Multipart middleware)
type: file
required: true
responses:
'201':
description: Upload Terraform Module package file
'400':
description: Invalid file
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not found
tags:
- terraform
operationId: putApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersionFile
/api/v4/projects/{id}/terraform/state/{name}:
get:
summary: Get a Terraform state by its name
description: Get a Terraform state by its name
produces:
- application/json
parameters:
- in: path
name: id
description: The ID or URL-encoded path of the project
type: string
required: true
- in: path
name: name
description: The name of a Terraform state
type: string
required: true
- in: query
name: ID
description: Terraform state lock ID
type: string
required: false
responses:
'200':
description: Get a Terraform state by its name
'204':
description: Empty state
'403':
description: Forbidden
'404':
description: Not found
'422':
description: Validation failure
tags:
- terraform
operationId: getApiV4ProjectsIdTerraformStateName
post:
summary: Add a new Terraform state or update an existing one
description: Add a new Terraform state or update an existing one
produces:
- application/json
consumes:
- application/json
parameters:
- in: path
name: id
description: The ID or URL-encoded path of the project
type: string
required: true
- in: path
name: name
description: The name of a Terraform state
type: string
required: true
- name: postApiV4ProjectsIdTerraformStateName
in: body
required: true
schema:
$ref: '#/definitions/postApiV4ProjectsIdTerraformStateName'
responses:
'200':
description: Add a new Terraform state or update an existing one
'204':
description: No data provided
'403':
description: Forbidden
'422':
description: Validation failure
'413':
description: Request Entity Too Large
tags:
- terraform
operationId: postApiV4ProjectsIdTerraformStateName
delete:
summary: Delete a Terraform state of a certain name
description: Delete a Terraform state of a certain name
produces:
- application/json
parameters:
- in: path
name: id
description: The ID or URL-encoded path of the project
type: string
required: true
- in: path
name: name
description: The name of a Terraform state
type: string
required: true
responses:
'204':
description: Delete a Terraform state of a certain name
'403':
description: Forbidden
'404':
description: Not found
'422':
description: Validation failure
tags:
- terraform
operationId: deleteApiV4ProjectsIdTerraformStateName
/api/v4/projects/{id}/terraform/state/{name}/authorize:
post:
summary: Authorize Terraform state upload
description: This feature was introduced in GitLab 18.5
produces:
- application/json
consumes:
- application/json
parameters:
- in: path
name: id
description: The ID or URL-encoded path of the project
type: string
required: true
- in: path
name: name
description: The name of a Terraform state
type: string
required: true
responses:
'200':
description: Authorize Terraform state upload
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
tags:
- terraform
operationId: postApiV4ProjectsIdTerraformStateNameAuthorize
/api/v4/projects/{id}/terraform/state/{name}/lock:
post:
summary: Lock a Terraform state of a certain name
description: Lock a Terraform state of a certain name
produces:
- application/json
consumes:
- application/json
parameters:
- in: path
name: id
description: The ID or URL-encoded path of the project
type: string
required: true
- in: path
name: name
description: The name of a Terraform state
type: string
required: true
- name: postApiV4ProjectsIdTerraformStateNameLock
in: body
required: true
schema:
$ref: '#/definitions/postApiV4ProjectsIdTerraformStateNameLock'
responses:
'200':
description: Lock a Terraform state of a certain name
'403':
description: Forbidden
'404':
description: Not found
'409':
description: Conflict
'422':
description: Validation failure
tags:
- terraform
operationId: postApiV4ProjectsIdTerraformStateNameLock
delete:
summary: Unlock a Terraform state of a certain name
description: Unlock a Terraform state of a certain name
produces:
- application/json
parameters:
- in: path
name: id
description: The ID or URL-encoded path of the project
type: string
required: true
- in: path
name: name
description: The name of a Terraform state
type: string
required: true
- in: query
name: ID
description: Terraform state lock ID
type: string
required: false
responses:
'204':
description: Unlock a Terraform state of a certain name
'403':
description: Forbidden
'404':
description: Not found
'409':
description: Conflict
'422':
description: Validation failure
tags:
- terraform
operationId: deleteApiV4ProjectsIdTerraformStateNameLock
/api/v4/projects/{id}/terraform/state/{name}/versions/{serial}:
get:
summary: Get a Terraform state version
description: Get a Terraform state version
produces:
- application/json
parameters:
- in: path
name: id
description: The ID or URL-encoded path of the project
type: string
required: true
- in: path
name: name
description: The name of a Terraform state
type: string
required: true
- in: path
name: serial
description: The version number of the state
type: integer
format: int32
required: true
responses:
'200':
description: Get a Terraform state version
schema:
type: file
'403':
description: Forbidden
'404':
description: Not found
tags:
- terraform
operationId: getApiV4ProjectsIdTerraformStateNameVersionsSerial
delete:
summary: Delete a Terraform state version
description: Delete a Terraform state version
produces:
- application/json
parameters:
- in: path
name: id
description: The ID or URL-encoded path of the project
type: string
required: true
- in: path
name: name
type: integer
format: int32
required: true
- in: path
name: serial
type: integer
format: int32
required: true
responses:
'204':
description: Delete a Terraform state version
'403':
description: Forbidden
'404':
description: Not found
tags:
- terraform
operationId: deleteApiV4ProjectsIdTerraformStateNameVersionsSerial
/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/versions:
get:
summary: List versions for a module
description: List versions for a module
produces:
- application/json
parameters:
- in: path
name: module_namespace
description: Group's ID or slug
type: string
required: true
- in: path
name: module_name
description: Name of the module
type: string
required: true
- in: path
name: module_system
description: System of the module
type: string
required: true
responses:
'200':
description: List versions for a module
schema:
type: array
items:
$ref: '#/definitions/API_Entities_Terraform_ModuleVersions'
'403':
description: Forbidden
tags:
- terraform
operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystemVersions
/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/download:
get:
summary: Get download location for the latest version of a module
description: Download the latest version of a module
produces:
- application/json
parameters:
- in: path
name: module_namespace
description: Group's ID or slug
type: string
required: true
- in: path
name: module_name
description: Name of the module
type: string
required: true
- in: path
name: module_system
description: System of the module
type: string
required: true
responses:
'302':
description: Get download location for the latest version of a module
'403':
description: Forbidden
'404':
description: Not found
tags:
- terraform
operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystemDownload
/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}:
get:
summary: Get details about the latest version of a module
description: Get details about the latest version of a module
produces:
- application/json
parameters:
- in: path
name: module_namespace
description: Group's ID or slug
type: string
required: true
- in: path
name: module_name
description: Name of the module
type: string
required: true
- in: path
name: module_system
description: System of the module
type: string
required: true
responses:
'200':
description: Get details about the latest version of a module
schema:
$ref: '#/definitions/API_Entities_Terraform_ModuleVersion'
'403':
description: Forbidden
'404':
description: Not found
tags:
- terraform
operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystem
/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/*module_version/download:
get:
summary: Get download location for specific version of a module
description: Download specific version of a module
produces:
- application/json
parameters:
- in: path
name: module_namespace
description: Group's ID or slug
type: string
required: true
- in: path
name: module_name
description: Name of the module
type: string
required: true
- in: path
name: module_system
description: System of the module
type: string
required: true
- in: query
name: module_version
description: Version of the module
type: string
required: true
responses:
'204':
description: Get download location for specific version of a module
'403':
description: Forbidden
'404':
description: Not found
tags:
- terraform
operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystem*moduleVersionDownload
/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/*module_version/file:
get:
summary: Download specific version of a module
description: Download specific version of a module
produces:
- application/json
parameters:
- in: path
name: module_namespace
description: Group's ID or slug
type: string
required: true
- in: path
name: module_name
description: Name of the module
type: string
required: true
- in: path
name: module_system
description: System of the module
type: string
required: true
- in: query
name: module_version
description: Version of the module
type: string
required: true
responses:
'200':
description: Download specific version of a module
schema:
type: file
'403':
description: Forbidden
'404':
description: Not found
tags:
- terraform
operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystem*moduleVersionFile
/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/*module_version:
get:
summary: Get details about specific version of a module
description: Get details about specific version of a module
produces:
- application/json
parameters:
- in: path
name: module_namespace
description: Group's ID or slug
type: string
required: true
- in: path
name: module_name
description: Name of the module
type: string
required: true
- in: path
name: module_system
description: System of the module
type: string
required: true
- in: query
name: module_version
description: Version of the module
type: string
required: true
responses:
'200':
description: Get details about specific version of a module
schema:
$ref: '#/definitions/API_Entities_Terraform_ModuleVersion'
'403':
description: Forbidden
'404':
description: Not found
tags:
- terraform
operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystem*moduleVersion
definitions:
API_Entities_Terraform_ModuleVersions:
type: object
properties:
modules:
type: string
required:
- modules
description: API_Entities_Terraform_ModuleVersions model
API_Entities_Terraform_ModuleVersion:
type: object
properties:
name:
type: string
provider:
type: string
providers:
type: string
root:
type: string
source:
type: string
submodules:
type: string
version:
type: string
versions:
type: string
required:
- name
- provider
- providers
- root
- source
- submodules
- version
- versions
description: API_Entities_Terraform_ModuleVersion model
postApiV4ProjectsIdTerraformStateName:
type: object
properties:
file:
type: file
description: The package file to be published (generated by Multipart middleware)
required:
- file
description: Add a new Terraform state or update an existing one
postApiV4ProjectsIdTerraformStateNameLock:
type: object
properties:
ID:
type: string
description: Terraform state lock ID
Operation:
type: string
description: Terraform operation
Info:
type: string
description: Terraform info
Who:
type: string
description: Terraform state lock owner
Version:
type: string
description: Terraform version
Created:
type: string
description: Terraform state lock timestamp
Path:
type: string
description: Terraform path
required:
- ID
- Operation
- Info
- Who
- Version
- Created
- Path
description: Lock a Terraform state of a certain name
putApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersionFileAuthorize:
type: object
properties:
module_version:
type: string
description: Module version
required:
- module_version
description: Workhorse authorize Terraform Module package file
securityDefinitions:
access_token_header:
type: apiKey
name: PRIVATE-TOKEN
in: header
access_token_query:
type: apiKey
name: private_token
in: query