---
title: "Update a merge request"
method: PUT
path: "/v2/storage/merge-request/{id}"
tags: ["Development Branches"]
---

# Update a merge request

`PUT /v2/storage/merge-request/{id}`

## Request

- Base URL: `https://connection.keboola.com`
- URL: `https://connection.keboola.com/v2/storage/merge-request/{id}`
- Auth: one of:
  - API key in header `X-StorageApi-Token`
  - API key in header `X-KBC-ManageApiToken`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/keboola/apis/keboola-storage-api/docs/v2/storage/merge-request/:id/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates title, description, external id, auto-merge strategy or reviewers of the merge request. Omit an attribute to keep it unchanged.

## Path parameters

- `id` integer, required

## Request body

- MergeRequestUpdateRequest
  - `title` string, nullable: Omit to keep unchanged. Empty string is not allowed.
  - `description` string, nullable: Omit to keep unchanged. Send empty string to clear.
  - `externalId` string, nullable: Omit to keep unchanged. Send empty string to clear.
  - `autoMergeStrategy` 'immediately' | 'scheduled' | 'none', nullable: Omit to keep unchanged. Send "none" to disable.
  - `autoMergeAt` string, date-time, nullable: Required when autoMergeStrategy is "scheduled"
  - `reviewerIds` integer[], nullable: Omit to keep unchanged. Send empty array to clear.

## Response `200`

Updated merge request.

- MergeRequestResponse
  - `id` integer, required
  - `creator` object, required
    - `id` integer, required
    - `name` string, required
  - `title` string, required
  - `description` string, required
  - `state` 'development' | 'in_review' | 'approved' | 'in_merge' | 'published' | 'canceled', required
  - `branches` object, required
    - `branchFromId` integer, nullable, required
    - `branchIntoId` integer, nullable, required
  - `merge` object, required
    - `mergedAt` string, nullable, required: When the merge request was merged, ISO 8601 with a `+hhmm` offset.
    - `mergerId` integer, nullable, required
    - `mergerName` string, required
  - `createdAt` string, required: ISO 8601 with a `+hhmm` offset.
  - `externalId` string, required
  - `autoMergeStrategy` 'immediately' | 'scheduled' | 'none', required
  - `autoMergeAt` string, nullable, required: Scheduled auto-merge time in UTC, ISO 8601 with a `+hhmm` offset.
  - `approvals` object[], required
    - `approverId` string, required
    - `approverName` string, required
    - `createdAt` string, required: ISO 8601 with a `+hhmm` offset.
  - `reviewers` object[], required
    - `id` integer, required
    - `name` string, required
    - `email` string, required
    - `status` 'approved' | 'rejected', nullable, required

## Other responses

- `403`: Returned when the token does not have the required role, the project feature is not enabled, or the merge request is in a state that does not allow the requested update (in projects with the "protected-default-branch" feature only the "development" state is editable; in other projects the terminal states "published" and "canceled" are blocked).
- `404`: Returned when the merge request does not exist.
- `422`: Returned when a reviewer ID is not eligible for this project.

---

[API](https://skmtc.dev/keboola/apis/keboola-storage-api.md) - [All operations](https://skmtc.dev/keboola/apis/keboola-storage-api/llms.txt) - [OpenAPI document](https://skmtc.dev/keboola/apis/keboola-storage-api/revisions/34b5ceac0317?raw)
