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

# Approve a merge request

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

## Request

- Base URL: `https://connection.keboola.com`
- URL: `https://connection.keboola.com/v2/storage/merge-request/{id}/approve`
- 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/approve/put.ts> (a function with typed inputs; its response is checked against the schema)

Each project has defined required number of approvals. If the last approval arrives, MR changes it state to `approved`.

## Path parameters

- `id` integer, required

## Response `200`

Approved merge request.

- MergeRequestWithChangeLogResponse
  - `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
  - `changeLog` object, required: Configurations the merge request carries, as recorded by MergeRequest::updateChangeLog().
    - `configurations` object[]: Present only once review was requested or skipped; until then `changeLog` is `{}`.
      - `componentId` string, required
      - `configurationId` string, required
      - `lastVersionIdentifier` string, required: Version of the configuration on the source branch at the time the change log was built.
      - `isDeleted` boolean, required: Whether the configuration is deleted on the source branch.

## Other responses

- `403`: Returned when the token does not have the required role or the project feature is not enabled.
- `404`: Returned when the merge request does not exist.
- `422`: Returned when the merge request cannot be approved in its current state.

---

[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)
