2020-08-04 02:10:16 -04:00
---
stage: Verify
2021-05-26 11:10:57 -04:00
group: Pipeline Execution
2020-11-26 01:09:20 -05:00
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
2020-08-04 02:10:16 -04:00
---
2021-05-30 23:10:48 -04:00
# Pipeline schedules API **(FREE)**
2017-05-12 12:37:01 -04:00
2020-03-05 22:08:08 -05:00
You can read more about [pipeline schedules ](../ci/pipelines/schedules.md ).
2017-05-12 12:37:01 -04:00
2017-05-24 06:25:13 -04:00
## Get all pipeline schedules
2017-05-12 12:37:01 -04:00
2017-05-24 06:25:13 -04:00
Get a list of the pipeline schedules of a project.
2017-05-12 12:37:01 -04:00
2020-02-27 19:09:08 -05:00
```plaintext
2017-05-12 12:37:01 -04:00
GET /projects/:id/pipeline_schedules
```
| Attribute | Type | required | Description |
|-----------|---------|----------|---------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2017-05-29 02:03:07 -04:00
| `scope` | string | no | The scope of pipeline schedules, one of: `active` , `inactive` |
2017-05-12 12:37:01 -04:00
2020-01-30 10:09:15 -05:00
```shell
2020-05-27 20:08:37 -04:00
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/29/pipeline_schedules"
2017-05-12 12:37:01 -04:00
```
```json
[
{
2017-05-19 09:48:36 -04:00
"id": 13,
"description": "Test schedule pipeline",
2021-05-27 11:10:39 -04:00
"ref": "main",
2017-05-19 09:48:36 -04:00
"cron": "* * * * * ",
"cron_timezone": "Asia/Tokyo",
"next_run_at": "2017-05-19T13:41:00.000Z",
2017-05-12 12:37:01 -04:00
"active": true,
2017-05-19 09:48:36 -04:00
"created_at": "2017-05-19T13:31:08.849Z",
"updated_at": "2017-05-19T13:40:17.727Z",
2017-05-12 12:37:01 -04:00
"owner": {
"name": "Administrator",
"username": "root",
"id": 1,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
2017-05-24 06:25:13 -04:00
"web_url": "https://gitlab.example.com/root"
2017-05-12 12:37:01 -04:00
}
}
]
```
2017-05-24 06:25:13 -04:00
## Get a single pipeline schedule
2017-05-12 12:37:01 -04:00
2017-05-24 06:25:13 -04:00
Get the pipeline schedule of a project.
2017-05-12 12:37:01 -04:00
2020-02-27 19:09:08 -05:00
```plaintext
2017-05-12 12:37:01 -04:00
GET /projects/:id/pipeline_schedules/:pipeline_schedule_id
```
| Attribute | Type | required | Description |
|--------------|---------|----------|--------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2020-05-07 02:09:38 -04:00
| `pipeline_schedule_id` | integer | yes | The pipeline schedule ID |
2017-05-12 12:37:01 -04:00
2020-01-30 10:09:15 -05:00
```shell
2020-05-27 20:08:37 -04:00
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/29/pipeline_schedules/13"
2017-05-12 12:37:01 -04:00
```
```json
{
2017-05-19 09:48:36 -04:00
"id": 13,
"description": "Test schedule pipeline",
2021-05-27 11:10:39 -04:00
"ref": "main",
2017-05-19 09:48:36 -04:00
"cron": "* * * * * ",
"cron_timezone": "Asia/Tokyo",
"next_run_at": "2017-05-19T13:41:00.000Z",
2017-05-12 12:37:01 -04:00
"active": true,
2017-05-19 09:48:36 -04:00
"created_at": "2017-05-19T13:31:08.849Z",
"updated_at": "2017-05-19T13:40:17.727Z",
"last_pipeline": {
"id": 332,
"sha": "0e788619d0b5ec17388dffb973ecd505946156db",
2021-05-27 11:10:39 -04:00
"ref": "main",
2017-05-19 09:48:36 -04:00
"status": "pending"
},
2017-05-12 12:37:01 -04:00
"owner": {
"name": "Administrator",
"username": "root",
"id": 1,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
2017-05-24 06:25:13 -04:00
"web_url": "https://gitlab.example.com/root"
2017-08-18 04:25:35 -04:00
},
"variables": [
{
"key": "TEST_VARIABLE_1",
2019-05-06 09:11:42 -04:00
"variable_type": "env_var",
2017-08-18 04:25:35 -04:00
"value": "TEST_1"
}
]
2017-05-12 12:37:01 -04:00
}
```
2022-07-28 05:10:54 -04:00
## Get all pipelines triggered by a pipeline schedule
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/368566) in GitLab 15.3.
Get all pipelines triggered by a pipeline schedule in a project.
```plaintext
GET /projects/:id/pipeline_schedules/:pipeline_schedule_id/pipelines
```
Supported attributes:
| Attribute | Type | Required | Description |
|------------------------|----------------|----------|-------------|
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user. |
| `pipeline_schedule_id` | integer | yes | The pipeline schedule ID. |
Example request:
```shell
curl --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/29/pipeline_schedules/13/pipelines"
```
Example response:
```json
[
{
"id": 47,
"iid": 12,
"project_id": 29,
"status": "pending",
"source": "scheduled",
"ref": "new-pipeline",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"web_url": "https://example.com/foo/bar/pipelines/47",
"created_at": "2016-08-11T11:28:34.085Z",
"updated_at": "2016-08-11T11:32:35.169Z"
},
{
"id": 48,
"iid": 13,
"project_id": 29,
"status": "pending",
"source": "scheduled",
"ref": "new-pipeline",
"sha": "eb94b618fb5865b26e80fdd8ae531b7a63ad851a",
"web_url": "https://example.com/foo/bar/pipelines/48",
"created_at": "2016-08-12T10:06:04.561Z",
"updated_at": "2016-08-12T10:09:56.223Z"
}
]
```
2017-05-24 06:25:13 -04:00
## Create a new pipeline schedule
2017-05-12 12:37:01 -04:00
2017-05-24 06:25:13 -04:00
Create a new pipeline schedule of a project.
2017-05-12 12:37:01 -04:00
2020-02-27 19:09:08 -05:00
```plaintext
2017-05-12 12:37:01 -04:00
POST /projects/:id/pipeline_schedules
```
2020-11-18 13:09:08 -05:00
| Attribute | Type | required | Description |
|-----------------|----------------|----------|-------------------------------------------------------------------------------------------------------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user. |
2020-11-18 13:09:08 -05:00
| `description` | string | yes | The description of the pipeline schedule. |
| `ref` | string | yes | The branch or tag name that is triggered. |
| `cron` | string | yes | The [cron ](https://en.wikipedia.org/wiki/Cron ) schedule, for example: `0 1 * * *` . |
2021-09-23 18:34:10 -04:00
| `cron_timezone` | string | no | The time zone supported by `ActiveSupport::TimeZone` , for example: `Pacific Time (US & Canada)` (default: `UTC` ). |
2020-11-18 13:09:08 -05:00
| `active` | boolean | no | The activation of pipeline schedule. If false is set, the pipeline schedule is initially deactivated (default: `true` ). |
2017-05-12 12:37:01 -04:00
2020-01-30 10:09:15 -05:00
```shell
2021-06-02 11:09:59 -04:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " \
--form description="Build packages" --form ref="main" --form cron="0 1 * * 5" --form cron_timezone="UTC" \
--form active="true" "https://gitlab.example.com/api/v4/projects/29/pipeline_schedules"
2017-05-12 12:37:01 -04:00
```
```json
{
2017-05-19 09:48:36 -04:00
"id": 14,
2017-05-12 12:37:01 -04:00
"description": "Build packages",
2021-05-27 11:10:39 -04:00
"ref": "main",
2017-05-12 12:37:01 -04:00
"cron": "0 1 * * 5",
"cron_timezone": "UTC",
2017-05-19 09:48:36 -04:00
"next_run_at": "2017-05-26T01:00:00.000Z",
2017-05-12 12:37:01 -04:00
"active": true,
2017-05-19 09:48:36 -04:00
"created_at": "2017-05-19T13:43:08.169Z",
"updated_at": "2017-05-19T13:43:08.169Z",
"last_pipeline": null,
2017-05-12 12:37:01 -04:00
"owner": {
"name": "Administrator",
"username": "root",
"id": 1,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
2017-05-24 06:25:13 -04:00
"web_url": "https://gitlab.example.com/root"
2017-05-12 12:37:01 -04:00
}
}
```
2017-05-24 06:25:13 -04:00
## Edit a pipeline schedule
2017-05-12 12:37:01 -04:00
2020-11-18 13:09:08 -05:00
Updates the pipeline schedule of a project. Once the update is done, it is rescheduled automatically.
2017-05-12 12:37:01 -04:00
2020-02-27 19:09:08 -05:00
```plaintext
2017-05-12 12:37:01 -04:00
PUT /projects/:id/pipeline_schedules/:pipeline_schedule_id
```
2020-11-18 13:09:08 -05:00
| Attribute | Type | required | Description |
|------------------------|----------------|----------|------------------------------------------------------------------------------------------------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user. |
2020-11-18 13:09:08 -05:00
| `pipeline_schedule_id` | integer | yes | The pipeline schedule ID. |
| `description` | string | no | The description of the pipeline schedule. |
| `ref` | string | no | The branch or tag name that is triggered. |
| `cron` | string | no | The [cron ](https://en.wikipedia.org/wiki/Cron ) schedule, for example: `0 1 * * *` . |
2021-09-23 18:34:10 -04:00
| `cron_timezone` | string | no | The time zone supported by `ActiveSupport::TimeZone` (for example `Pacific Time (US & Canada)` ), or `TZInfo::Timezone` (for example `America/Los_Angeles` ). |
2020-11-18 13:09:08 -05:00
| `active` | boolean | no | The activation of pipeline schedule. If false is set, the pipeline schedule is initially deactivated. |
2017-05-12 12:37:01 -04:00
2020-01-30 10:09:15 -05:00
```shell
2021-06-02 11:09:59 -04:00
curl --request PUT --header "PRIVATE-TOKEN: < your_access_token > " \
--form cron="0 2 * * *" "https://gitlab.example.com/api/v4/projects/29/pipeline_schedules/13"
2017-05-12 12:37:01 -04:00
```
```json
{
2017-05-19 09:48:36 -04:00
"id": 13,
"description": "Test schedule pipeline",
2021-05-27 11:10:39 -04:00
"ref": "main",
2017-05-12 12:37:01 -04:00
"cron": "0 2 * * *",
2017-05-19 09:48:36 -04:00
"cron_timezone": "Asia/Tokyo",
"next_run_at": "2017-05-19T17:00:00.000Z",
2017-05-12 12:37:01 -04:00
"active": true,
2017-05-19 09:48:36 -04:00
"created_at": "2017-05-19T13:31:08.849Z",
"updated_at": "2017-05-19T13:44:16.135Z",
"last_pipeline": {
"id": 332,
"sha": "0e788619d0b5ec17388dffb973ecd505946156db",
2021-05-27 11:10:39 -04:00
"ref": "main",
2017-05-19 09:48:36 -04:00
"status": "pending"
},
2017-05-12 12:37:01 -04:00
"owner": {
"name": "Administrator",
"username": "root",
"id": 1,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon",
2017-05-24 06:25:13 -04:00
"web_url": "https://gitlab.example.com/root"
2017-05-12 12:37:01 -04:00
}
}
```
## Take ownership of a pipeline schedule
2017-05-24 06:25:13 -04:00
Update the owner of the pipeline schedule of a project.
2017-05-12 12:37:01 -04:00
2020-02-27 19:09:08 -05:00
```plaintext
2017-05-12 12:37:01 -04:00
POST /projects/:id/pipeline_schedules/:pipeline_schedule_id/take_ownership
```
| Attribute | Type | required | Description |
|---------------|---------|----------|--------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2020-05-07 02:09:38 -04:00
| `pipeline_schedule_id` | integer | yes | The pipeline schedule ID |
2017-05-12 12:37:01 -04:00
2020-01-30 10:09:15 -05:00
```shell
2020-05-27 20:08:37 -04:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/29/pipeline_schedules/13/take_ownership"
2017-05-12 12:37:01 -04:00
```
```json
{
2017-05-19 09:48:36 -04:00
"id": 13,
"description": "Test schedule pipeline",
2021-05-27 11:10:39 -04:00
"ref": "main",
2017-05-12 12:37:01 -04:00
"cron": "0 2 * * *",
2017-05-19 09:48:36 -04:00
"cron_timezone": "Asia/Tokyo",
"next_run_at": "2017-05-19T17:00:00.000Z",
2017-05-12 12:37:01 -04:00
"active": true,
2017-05-19 09:48:36 -04:00
"created_at": "2017-05-19T13:31:08.849Z",
"updated_at": "2017-05-19T13:46:37.468Z",
"last_pipeline": {
"id": 332,
"sha": "0e788619d0b5ec17388dffb973ecd505946156db",
2021-05-27 11:10:39 -04:00
"ref": "main",
2017-05-19 09:48:36 -04:00
"status": "pending"
},
2017-05-12 12:37:01 -04:00
"owner": {
"name": "shinya",
"username": "maeda",
"id": 50,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/8ca0a796a679c292e3a11da50f99e801?s=80& d=identicon",
2017-05-24 06:25:13 -04:00
"web_url": "https://gitlab.example.com/maeda"
2017-05-12 12:37:01 -04:00
}
}
```
## Delete a pipeline schedule
2017-05-24 06:25:13 -04:00
Delete the pipeline schedule of a project.
2017-05-12 12:37:01 -04:00
2020-02-27 19:09:08 -05:00
```plaintext
2017-05-12 12:37:01 -04:00
DELETE /projects/:id/pipeline_schedules/:pipeline_schedule_id
```
| Attribute | Type | required | Description |
|----------------|---------|----------|--------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2020-05-07 02:09:38 -04:00
| `pipeline_schedule_id` | integer | yes | The pipeline schedule ID |
2017-05-12 12:37:01 -04:00
2020-01-30 10:09:15 -05:00
```shell
2020-05-27 20:08:37 -04:00
curl --request DELETE --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/29/pipeline_schedules/13"
2017-05-12 12:37:01 -04:00
```
```json
{
2017-05-19 09:48:36 -04:00
"id": 13,
"description": "Test schedule pipeline",
2021-05-27 11:10:39 -04:00
"ref": "main",
2017-05-12 12:37:01 -04:00
"cron": "0 2 * * *",
2017-05-19 09:48:36 -04:00
"cron_timezone": "Asia/Tokyo",
"next_run_at": "2017-05-19T17:00:00.000Z",
2017-05-12 12:37:01 -04:00
"active": true,
2017-05-19 09:48:36 -04:00
"created_at": "2017-05-19T13:31:08.849Z",
"updated_at": "2017-05-19T13:46:37.468Z",
"last_pipeline": {
"id": 332,
"sha": "0e788619d0b5ec17388dffb973ecd505946156db",
2021-05-27 11:10:39 -04:00
"ref": "main",
2017-05-19 09:48:36 -04:00
"status": "pending"
},
2017-05-12 12:37:01 -04:00
"owner": {
"name": "shinya",
"username": "maeda",
"id": 50,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/8ca0a796a679c292e3a11da50f99e801?s=80& d=identicon",
2017-05-24 06:25:13 -04:00
"web_url": "https://gitlab.example.com/maeda"
2017-05-12 12:37:01 -04:00
}
}
```
2017-08-18 04:25:35 -04:00
2020-02-04 04:08:32 -05:00
## Run a scheduled pipeline immediately
2020-05-21 02:08:25 -04:00
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/201786) in GitLab 12.8.
2020-02-04 04:08:32 -05:00
Trigger a new scheduled pipeline, which runs immediately. The next scheduled run
of this pipeline is not affected.
2020-05-19 23:08:04 -04:00
```plaintext
2020-02-04 04:08:32 -05:00
POST /projects/:id/pipeline_schedules/:pipeline_schedule_id/play
```
| Attribute | Type | required | Description |
| ---------------- | --------- | ---------- | -------------------------- |
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2020-05-07 02:09:38 -04:00
| `pipeline_schedule_id` | integer | yes | The pipeline schedule ID |
2020-02-04 04:08:32 -05:00
Example request:
2020-05-19 14:08:11 -04:00
```shell
2020-05-27 20:08:37 -04:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/42/pipeline_schedules/1/play"
2020-02-04 04:08:32 -05:00
```
Example response:
```json
{
"message": "201 Created"
}
```
2019-03-19 04:17:16 -04:00
## Pipeline schedule variables
2017-08-18 04:46:14 -04:00
2017-08-18 04:25:35 -04:00
## Create a new pipeline schedule variable
Create a new variable of a pipeline schedule.
2020-02-27 19:09:08 -05:00
```plaintext
2017-08-18 04:25:35 -04:00
POST /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables
```
2017-08-24 08:51:46 -04:00
| Attribute | Type | required | Description |
|------------------------|----------------|----------|--------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2020-05-07 02:09:38 -04:00
| `pipeline_schedule_id` | integer | yes | The pipeline schedule ID |
2017-08-24 08:51:46 -04:00
| `key` | string | yes | The `key` of a variable; must have no more than 255 characters; only `A-Z` , `a-z` , `0-9` , and `_` are allowed |
| `value` | string | yes | The `value` of a variable |
2019-05-06 09:11:42 -04:00
| `variable_type` | string | no | The type of a variable. Available types are: `env_var` (default) and `file` |
2017-08-18 04:25:35 -04:00
2020-01-30 10:09:15 -05:00
```shell
2021-06-02 11:09:59 -04:00
curl --request POST --header "PRIVATE-TOKEN: < your_access_token > " --form "key=NEW_VARIABLE" \
--form "value=new value" "https://gitlab.example.com/api/v4/projects/29/pipeline_schedules/13/variables"
2017-08-18 04:25:35 -04:00
```
```json
{
2017-08-18 04:46:14 -04:00
"key": "NEW_VARIABLE",
2019-05-06 09:11:42 -04:00
"variable_type": "env_var",
2017-08-18 04:46:14 -04:00
"value": "new value"
2017-08-18 04:25:35 -04:00
}
```
## Edit a pipeline schedule variable
Updates the variable of a pipeline schedule.
2020-02-27 19:09:08 -05:00
```plaintext
2017-08-18 04:25:35 -04:00
PUT /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables/:key
```
2017-08-24 08:51:46 -04:00
| Attribute | Type | required | Description |
|------------------------|----------------|----------|--------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2020-05-07 02:09:38 -04:00
| `pipeline_schedule_id` | integer | yes | The pipeline schedule ID |
2017-08-24 08:51:46 -04:00
| `key` | string | yes | The `key` of a variable |
| `value` | string | yes | The `value` of a variable |
2019-05-06 09:11:42 -04:00
| `variable_type` | string | no | The type of a variable. Available types are: `env_var` (default) and `file` |
2017-08-18 04:25:35 -04:00
2020-01-30 10:09:15 -05:00
```shell
2021-06-02 11:09:59 -04:00
curl --request PUT --header "PRIVATE-TOKEN: < your_access_token > " \
--form "value=updated value" \
"https://gitlab.example.com/api/v4/projects/29/pipeline_schedules/13/variables/NEW_VARIABLE"
2017-08-18 04:25:35 -04:00
```
```json
{
2017-08-18 04:46:14 -04:00
"key": "NEW_VARIABLE",
2021-04-29 08:09:58 -04:00
"value": "updated value",
"variable_type": "env_var"
2017-08-18 04:25:35 -04:00
}
```
## Delete a pipeline schedule variable
Delete the variable of a pipeline schedule.
2020-02-27 19:09:08 -05:00
```plaintext
2017-08-18 04:25:35 -04:00
DELETE /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables/:key
```
2017-08-24 08:51:46 -04:00
| Attribute | Type | required | Description |
|------------------------|----------------|----------|--------------------------|
2021-06-28 11:08:03 -04:00
| `id` | integer/string | yes | The ID or [URL-encoded path of the project ](index.md#namespaced-path-encoding ) owned by the authenticated user |
2020-05-07 02:09:38 -04:00
| `pipeline_schedule_id` | integer | yes | The pipeline schedule ID |
2017-08-24 08:51:46 -04:00
| `key` | string | yes | The `key` of a variable |
2017-08-18 04:25:35 -04:00
2020-01-30 10:09:15 -05:00
```shell
2020-05-27 20:08:37 -04:00
curl --request DELETE --header "PRIVATE-TOKEN: < your_access_token > " "https://gitlab.example.com/api/v4/projects/29/pipeline_schedules/13/variables/NEW_VARIABLE"
2017-08-18 04:25:35 -04:00
```
```json
2017-08-24 08:51:46 -04:00
{
"key": "NEW_VARIABLE",
"value": "updated value"
}
2017-08-18 04:25:35 -04:00
```