swagger: '2.0' info: title: GitLab access_requests environments API version: v4 description: Operations related to access requests host: gitlab.com produces: - application/json tags: - name: environments description: Operations related to environments paths: /api/v4/projects/{id}/environments: get: summary: List environments description: Get all environments for a given project. This feature was introduced in GitLab 8.11. produces: - application/json parameters: - in: path name: id description: The ID or URL-encoded path of the project owned by the authenticated user type: string required: true - in: query name: page description: Current page number type: integer format: int32 default: 1 required: false example: 1 - in: query name: per_page description: Number of items per page type: integer format: int32 default: 20 required: false example: 20 - in: query name: name description: Return the environment with this name. Mutually exclusive with search type: string required: false - in: query name: search description: Return list of environments matching the search criteria. Mutually exclusive with name. Must be at least 3 characters. type: string required: false - in: query name: states description: 'List all environments that match a specific state. Accepted values: `available`, `stopping`, or `stopped`. If no state value given, returns all environments' type: string enum: - stopped - stopping - available required: false responses: '200': description: List environments schema: type: array items: $ref: '#/definitions/API_Entities_Environment' '401': description: Unauthorized '404': description: Not found tags: - environments operationId: getApiV4ProjectsIdEnvironments post: summary: Create a new environment description: Creates a new environment with the given name and `external_url`. It returns `201` if the environment was successfully created, `400` for wrong parameters. This feature was introduced in GitLab 8.11. produces: - application/json consumes: - application/json parameters: - in: path name: id description: The ID or URL-encoded path of the project owned by the authenticated user type: string required: true - name: postApiV4ProjectsIdEnvironments in: body required: true schema: $ref: '#/definitions/postApiV4ProjectsIdEnvironments' responses: '201': description: Create a new environment schema: $ref: '#/definitions/API_Entities_Environment' '400': description: Bad request '401': description: Unauthorized '404': description: Not found tags: - environments operationId: postApiV4ProjectsIdEnvironments /api/v4/projects/{id}/environments/{environment_id}: put: summary: Update an existing environment description: Updates an existing environment name and/or `external_url`. It returns `200` if the environment was successfully updated. In case of an error, a status code `400` is returned. This feature was introduced in GitLab 8.11. produces: - application/json consumes: - application/json parameters: - in: path name: id description: The ID or URL-encoded path of the project owned by the authenticated user type: string required: true - in: path name: environment_id description: The ID of the environment type: integer format: int32 required: true - name: putApiV4ProjectsIdEnvironmentsEnvironmentId in: body required: true schema: $ref: '#/definitions/putApiV4ProjectsIdEnvironmentsEnvironmentId' responses: '200': description: Update an existing environment schema: $ref: '#/definitions/API_Entities_Environment' '400': description: Bad request '401': description: Unauthorized '404': description: Not found tags: - environments operationId: putApiV4ProjectsIdEnvironmentsEnvironmentId delete: summary: Delete an environment description: It returns 204 if the environment was successfully deleted, and 404 if the environment does not exist. This feature was introduced in GitLab 8.11. produces: - application/json parameters: - in: path name: id description: The ID or URL-encoded path of the project owned by the authenticated user type: string required: true - in: path name: environment_id description: The ID of the environment type: integer format: int32 required: true responses: '401': description: Unauthorized '204': description: Delete an environment schema: $ref: '#/definitions/API_Entities_Environment' '404': description: Not found tags: - environments operationId: deleteApiV4ProjectsIdEnvironmentsEnvironmentId get: description: Get a specific environment produces: - application/json parameters: - in: path name: id description: The ID or URL-encoded path of the project owned by the authenticated user type: string required: true - in: path name: environment_id description: The ID of the environment type: integer format: int32 required: true responses: '200': description: Get a specific environment schema: $ref: '#/definitions/API_Entities_Environment' '401': description: Unauthorized '404': description: Not found tags: - environments operationId: getApiV4ProjectsIdEnvironmentsEnvironmentId /api/v4/projects/{id}/environments/review_apps: delete: summary: Delete multiple stopped review apps description: It schedules for deletion multiple environments that have already been stopped and are in the review app folder. The actual deletion is performed after 1 week from the time of execution. By default, it only deletes environments 30 days or older. You can change this default using the `before` parameter. produces: - application/json parameters: - in: path name: id description: The ID or URL-encoded path of the project owned by the authenticated user type: string required: true - in: query name: before description: The date before which environments can be deleted. Defaults to 30 days ago. Expected in ISO 8601 format (`YYYY-MM-DDTHH:MM:SSZ`) type: string format: date-time default: {} required: false - in: query name: limit description: Maximum number of environments to delete. Defaults to 100 type: integer format: int32 default: 100 minimum: 1 maximum: 1000 required: false - in: query name: dry_run description: Defaults to true for safety reasons. It performs a dry run where no actual deletion will be performed. Set to false to actually delete the environment type: boolean default: true required: false responses: '400': description: Bad request '204': description: Delete multiple stopped review apps schema: $ref: '#/definitions/API_Entities_EnvironmentBasic' '401': description: Unauthorized '404': description: Not found '409': description: Conflict tags: - environments operationId: deleteApiV4ProjectsIdEnvironmentsReviewApps /api/v4/projects/{id}/environments/{environment_id}/stop: post: summary: Stop an environment description: It returns 200 if the environment was successfully stopped. produces: - application/json consumes: - application/json parameters: - in: path name: id description: The ID or URL-encoded path of the project owned by the authenticated user type: string required: true - in: path name: environment_id description: The ID of the environment type: integer format: int32 required: true - name: postApiV4ProjectsIdEnvironmentsEnvironmentIdStop in: body required: true schema: $ref: '#/definitions/postApiV4ProjectsIdEnvironmentsEnvironmentIdStop' responses: '201': description: Stop an environment schema: $ref: '#/definitions/API_Entities_Environment' '400': description: Bad request '401': description: Unauthorized '404': description: Not found tags: - environments operationId: postApiV4ProjectsIdEnvironmentsEnvironmentIdStop /api/v4/projects/{id}/environments/stop_stale: post: summary: Stop stale environments description: It returns `200` if stale environment check was scheduled successfully produces: - application/json consumes: - application/json parameters: - in: path name: id description: The ID or URL-encoded path of the project owned by the authenticated user type: string required: true - name: postApiV4ProjectsIdEnvironmentsStopStale in: body required: true schema: $ref: '#/definitions/postApiV4ProjectsIdEnvironmentsStopStale' responses: '201': description: Stop stale environments '400': description: Bad request '401': description: Unauthorized tags: - environments operationId: postApiV4ProjectsIdEnvironmentsStopStale definitions: API_Entities_CustomAttribute: type: object properties: key: type: string example: foo value: type: string example: bar required: - key - value description: API_Entities_CustomAttribute model API_Entities_Ci_Runner: type: object properties: id: type: integer format: int32 example: 8 description: type: string example: test-1-20150125 ip_address: type: string example: 127.0.0.1 active: type: boolean example: true paused: type: boolean example: false is_shared: type: boolean example: true runner_type: type: string enum: - instance_type - group_type - project_type example: instance_type name: type: string example: test online: type: boolean example: true created_by: $ref: '#/definitions/API_Entities_UserBasic' created_at: type: string format: date-time example: '2025-05-03T00:00:00.000Z' status: type: string example: online job_execution_status: type: string enum: - active - idle example: idle required: - id - description - ip_address - active - paused - is_shared - runner_type - name - online - created_at - status - job_execution_status description: API_Entities_Ci_Runner model API_Entities_Ci_RunnerManager: type: object properties: id: type: integer format: int32 example: 8 system_id: type: string example: runner-1 version: type: string example: 16.11.0 revision: type: string example: 91a27b2a platform: type: string example: linux architecture: type: string example: amd64 created_at: type: string example: '2023-10-24T01:27:06.549Z' contacted_at: type: string example: '2023-10-24T01:27:06.549Z' ip_address: type: string example: 127.0.0.1 status: type: string example: online job_execution_status: type: string enum: - active - idle example: idle required: - id - system_id - version - revision - platform - architecture - created_at - contacted_at - ip_address - status - job_execution_status description: API_Entities_Ci_RunnerManager model API_Entities_UserBasic: type: object properties: id: type: integer format: int32 example: 1 username: type: string example: admin public_email: type: string example: john@example.com name: type: string example: Administrator state: type: string example: active locked: type: boolean avatar_url: type: string example: https://gravatar.com/avatar/1 avatar_path: type: string example: /user/avatar/28/The-Big-Lebowski-400-400.png custom_attributes: type: array items: $ref: '#/definitions/API_Entities_CustomAttribute' web_url: type: string example: https://gitlab.example.com/root required: - id - username - public_email - name - state - locked - avatar_url - web_url description: API_Entities_UserBasic model postApiV4ProjectsIdEnvironmentsStopStale: type: object properties: before: type: string format: date-time description: Stop all environments that were last modified or deployed to before this date. required: - before description: Stop stale environments API_Entities_ProjectIdentity: type: object properties: id: type: integer format: int32 example: 1 description: type: string example: desc name: type: string example: project1 name_with_namespace: type: string example: John Doe / project1 path: type: string example: project1 path_with_namespace: type: string example: namespace1/project1 created_at: type: string format: date-time example: '2020-05-07T04:27:17.016Z' required: - id - description - name - name_with_namespace - path - path_with_namespace - created_at API_Entities_User: type: object properties: id: type: integer format: int32 example: 1 username: type: string example: admin public_email: type: string example: john@example.com name: type: string example: Administrator state: type: string example: active locked: type: boolean avatar_url: type: string example: https://gravatar.com/avatar/1 avatar_path: type: string example: /user/avatar/28/The-Big-Lebowski-400-400.png custom_attributes: type: array items: $ref: '#/definitions/API_Entities_CustomAttribute' web_url: type: string example: https://gitlab.example.com/root created_at: type: string bio: type: string location: type: string linkedin: type: string twitter: type: string discord: type: string website_url: type: string github: type: string job_title: type: string pronouns: type: string organization: type: string bot: type: boolean work_information: type: string followers: type: string following: type: string is_followed: type: string local_time: type: string required: - id - username - public_email - name - state - locked - avatar_url - web_url - bio - location - linkedin - twitter - discord - website_url - github - job_title - pronouns - organization - bot - work_information - local_time API_Entities_Environment: type: object properties: id: type: integer format: int32 example: 1 name: type: string example: deploy slug: type: string example: deploy external_url: type: string example: https://deploy.gitlab.example.com created_at: type: string format: date-time example: '2019-05-25T18:55:13.252Z' updated_at: type: string format: date-time example: '2019-05-25T18:55:13.252Z' tier: type: string example: development project: $ref: '#/definitions/API_Entities_BasicProjectDetails' last_deployment: $ref: '#/definitions/API_Entities_Deployment' state: type: string example: available auto_stop_at: type: string format: date-time example: '2019-05-25T18:55:13.252Z' cluster_agent: $ref: '#/definitions/API_Entities_Clusters_Agent' kubernetes_namespace: type: string flux_resource_path: type: string description: type: string example: description auto_stop_setting: type: string example: always required: - id - name - slug - external_url - created_at - updated_at - tier - project - state - auto_stop_at - description - auto_stop_setting description: API_Entities_Environment model postApiV4ProjectsIdEnvironmentsEnvironmentIdStop: type: object properties: force: type: boolean description: Force environment to stop without executing `on_stop` actions default: false description: Stop an environment API_Entities_Ci_PipelineBasic: type: object properties: id: type: integer format: int32 example: 1 iid: type: integer format: int32 example: 2 project_id: type: integer format: int32 example: 3 sha: type: string example: 0ec9e58fdfca6cdd6652c083c9edb53abc0bad52 ref: type: string example: feature-branch status: type: string example: success source: type: string example: push created_at: type: string format: date-time example: '2022-10-21T16:49:48.000+02:00' updated_at: type: string format: date-time example: '2022-10-21T16:49:48.000+02:00' web_url: type: string example: https://gitlab.example.com/gitlab-org/gitlab-foss/-/pipelines/61 required: - id - iid - project_id - sha - ref - status - source - created_at - updated_at - web_url description: API_Entities_Ci_PipelineBasic model API_Entities_Ci_JobArtifact: type: object properties: file_type: type: string enum: - archive - metadata - trace - junit - sast - dependency_scanning - container_scanning - dast - codequality - license_scanning - performance - metrics - metrics_referee - network_referee - lsif - dotenv - cobertura - terraform - accessibility - cluster_applications - secret_detection - requirements - coverage_fuzzing - browser_performance - load_performance - api_fuzzing - cluster_image_scanning - cyclonedx - requirements_v2 - annotations - repository_xray - jacoco - scip - sarif - environment_key example: archive size: type: integer format: int32 example: 1000 filename: type: string example: artifacts.zip file_format: type: string enum: - raw - zip - gzip example: zip required: - file_type - size - filename - file_format API_Entities_Commit: type: object properties: id: type: string example: 2695effb5807a22ff3d138d593fd856244e155e7 short_id: type: string example: 2695effb created_at: type: string format: date-time example: '2017-07-26T11:08:53.000+02:00' parent_ids: type: array items: type: string example: - 2a4b78934375d7f53875269ffd4f45fd83a84ebe title: type: string example: Initial commit message: type: string example: Initial commit author_name: type: string example: John Smith author_email: type: string example: john@example.com authored_date: type: string format: date-time example: '2012-05-28T04:42:42-07:00' committer_name: type: string example: Jack Smith committer_email: type: string example: jack@example.com committed_date: type: string format: date-time example: '2012-05-28T04:42:42-07:00' trailers: type: object example: Merged-By: Jane Doe janedoe@gitlab.com extended_trailers: type: object example: Signed-off-by: - John Doe - Jane Doe web_url: type: string example: https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746 required: - id - short_id - created_at - parent_ids - title - message - author_name - author_email - authored_date - committer_name - committer_email - committed_date - trailers - extended_trailers - web_url description: API_Entities_Commit model API_Entities_EnvironmentBasic: type: object properties: id: type: integer format: int32 example: 1 name: type: string example: deploy slug: type: string example: deploy external_url: type: string example: https://deploy.gitlab.example.com created_at: type: string format: date-time example: '2019-05-25T18:55:13.252Z' updated_at: type: string format: date-time example: '2019-05-25T18:55:13.252Z' required: - id - name - slug - external_url - created_at - updated_at description: API_Entities_EnvironmentBasic model postApiV4ProjectsIdEnvironments: type: object properties: name: type: string description: The name of the environment external_url: type: string description: Place to link to for this environment tier: type: string description: The tier of the new environment. Allowed values are `production`, `staging`, `testing`, `development`, and `other` enum: - production - staging - testing - development - other cluster_agent_id: type: integer format: int32 description: The ID of the Cluster Agent to associate with this environment kubernetes_namespace: type: string description: The Kubernetes namespace to associate with this environment flux_resource_path: type: string description: The Flux resource path to associate with this environment description: type: string description: The description of the environment auto_stop_setting: type: string description: The auto stop setting for the environment. Allowed values are `always` and `with_action` enum: - always - with_action required: - name description: Create a new environment API_Entities_NamespaceBasic: type: object properties: id: type: integer format: int32 example: 2 name: type: string example: project path: type: string example: my_project kind: type: string example: project full_path: type: string example: group/my_project parent_id: type: integer format: int32 example: 1 avatar_url: type: string example: https://example.com/avatar/12345 web_url: type: string example: https://example.com/group/my_project required: - id - name - path - kind - full_path - parent_id - avatar_url - web_url API_Entities_BasicProjectDetails: type: object properties: id: type: integer format: int32 example: 1 description: type: string example: desc name: type: string example: project1 name_with_namespace: type: string example: John Doe / project1 path: type: string example: project1 path_with_namespace: type: string example: namespace1/project1 created_at: type: string format: date-time example: '2020-05-07T04:27:17.016Z' default_branch: type: string example: main tag_list: type: array items: type: string example: - tag topics: type: array items: type: string example: - topic ssh_url_to_repo: type: string example: git@gitlab.example.com:gitlab/gitlab.git http_url_to_repo: type: string example: https://gitlab.example.com/gitlab/gitlab.git web_url: type: string example: https://gitlab.example.com/gitlab/gitlab readme_url: type: string example: https://gitlab.example.com/gitlab/gitlab/blob/master/README.md forks_count: type: integer format: int32 example: 1 license_url: type: string example: https://gitlab.example.com/gitlab/gitlab/blob/master/LICENCE license: $ref: '#/definitions/API_Entities_LicenseBasic' avatar_url: type: string example: http://example.com/uploads/project/avatar/3/uploads/avatar.png star_count: type: integer format: int32 example: 1 last_activity_at: type: string format: date-time example: '2013-09-30T13:46:02Z' visibility: type: string example: public namespace: $ref: '#/definitions/API_Entities_NamespaceBasic' custom_attributes: $ref: '#/definitions/API_Entities_CustomAttribute' repository_storage: type: string example: default required: - id - description - name - name_with_namespace - path - path_with_namespace - created_at - tag_list - topics - ssh_url_to_repo - http_url_to_repo - web_url - avatar_url - star_count - last_activity_at - visibility - namespace description: API_Entities_BasicProjectDetails model putApiV4ProjectsIdEnvironmentsEnvironmentId: type: object properties: external_url: type: string description: The new URL on which this deployment is viewable tier: type: string description: The tier of the new environment. Allowed values are `production`, `staging`, `testing`, `development`, and `other` enum: - production - staging - testing - development - other cluster_agent_id: type: integer format: int32 description: The ID of the Cluster Agent to associate with this environment kubernetes_namespace: type: string description: The Kubernetes namespace to associate with this environment flux_resource_path: type: string description: The Flux resource path to associate with this environment description: type: string description: The description of the environment auto_stop_setting: type: string description: The auto stop setting for the environment. Allowed values are `always` and `with_action` enum: - always - with_action description: Update an existing environment API_Entities_Clusters_Agent: type: object properties: id: type: string name: type: string config_project: $ref: '#/definitions/API_Entities_ProjectIdentity' created_at: type: string created_by_user_id: type: string is_receptive: type: string required: - id - name - config_project - created_at - created_by_user_id - is_receptive description: API_Entities_Clusters_Agent model API_Entities_Deployment: type: object properties: id: type: integer format: int32 example: 41 iid: type: integer format: int32 example: 1 ref: type: string example: main sha: type: string example: 99d03678b90d914dbb1b109132516d71a4a03ea8 created_at: type: string format: date-time example: '2016-08-11T11:32:35.444Z' updated_at: type: string format: date-time example: '2016-08-11T11:32:35.444Z' user: $ref: '#/definitions/API_Entities_UserBasic' environment: $ref: '#/definitions/API_Entities_EnvironmentBasic' deployable: $ref: '#/definitions/API_Entities_Ci_Job' status: type: string example: created required: - id - iid - ref - sha - created_at - updated_at - user - environment - deployable - status description: API_Entities_Deployment model API_Entities_Ci_Job: type: object properties: id: type: integer format: int32 example: 1 status: type: string example: waiting_for_resource stage: type: string example: deploy name: type: string example: deploy_to_production ref: type: string example: main tag: type: boolean coverage: type: number format: float example: 98.29 allow_failure: type: boolean created_at: type: string format: date-time example: '2015-12-24T15:51:21.880Z' started_at: type: string format: date-time example: '2015-12-24T17:54:30.733Z' finished_at: type: string format: date-time example: '2015-12-24T17:54:31.198Z' erased_at: type: string format: date-time example: '2015-12-24T18:00:29.728Z' duration: type: number format: float example: 0.465 description: Time spent running queued_duration: type: number format: float example: 0.123 description: Time spent enqueued user: $ref: '#/definitions/API_Entities_User' commit: $ref: '#/definitions/API_Entities_Commit' pipeline: $ref: '#/definitions/API_Entities_Ci_PipelineBasic' failure_reason: type: string example: script_failure web_url: type: string example: https://example.com/foo/bar/-/jobs/1 project: type: object properties: ci_job_token_scope_enabled: type: string example: false required: - ci_job_token_scope_enabled artifacts_file: $ref: '#/definitions/API_Entities_Ci_JobArtifactFile' artifacts: type: array items: $ref: '#/definitions/API_Entities_Ci_JobArtifact' runner: $ref: '#/definitions/API_Entities_Ci_Runner' runner_manager: $ref: '#/definitions/API_Entities_Ci_RunnerManager' artifacts_expire_at: type: string format: date-time example: '2016-01-19T09:05:50.355Z' archived: type: boolean example: false tag_list: type: array items: type: string example: - ubuntu18 - docker runner required: - id - status - stage - name - ref - tag - coverage - allow_failure - created_at - started_at - finished_at - erased_at - duration - queued_duration - user - commit - pipeline - web_url - project - artifacts - runner - artifacts_expire_at - archived - tag_list description: API_Entities_Ci_Job model API_Entities_Ci_JobArtifactFile: type: object properties: filename: type: string example: artifacts.zip size: type: integer format: int32 example: 1000 required: - filename - size API_Entities_LicenseBasic: type: object properties: key: type: string example: gpl-3.0 name: type: string example: GNU General Public License v3.0 nickname: type: string example: GNU GPLv3 html_url: type: string example: http://choosealicense.com/licenses/gpl-3.0 source_url: type: string required: - key - name - nickname - html_url - source_url securityDefinitions: access_token_header: type: apiKey name: PRIVATE-TOKEN in: header access_token_query: type: apiKey name: private_token in: query