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