# Project repository storage moves API

> 原文：[https://docs.gitlab.com/ee/api/project_repository_storage_moves.html](https://docs.gitlab.com/ee/api/project_repository_storage_moves.html)

*   [Retrieve all project repository storage moves](#retrieve-all-project-repository-storage-moves)
*   [Retrieve all repository storage moves for a project](#retrieve-all-repository-storage-moves-for-a-project)
*   [Get a single project repository storage move](#get-a-single-project-repository-storage-move)
*   [Get a single repository storage move for a project](#get-a-single-repository-storage-move-for-a-project)
*   [Schedule a repository storage move for a project](#schedule-a-repository-storage-move-for-a-project)

# Project repository storage moves API[](#project-repository-storage-moves-api-core-only "Permalink")

在 GitLab 13.0 中[引入](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/31285) .

项目存储库存储可以移动. 要使用 API​​检索项目存储库存储移动，您必须以管理员[身份进行身份验证](README.html#authentication) .

## Retrieve all project repository storage moves[](#retrieve-all-project-repository-storage-moves "Permalink")

```
GET /project_repository_storage_moves 
```

默认情况下，因为 API 结果是[分页的](README.html#pagination) ，所以`GET`请求一次返回 20 个结果.

请求示例：

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_repository_storage_moves" 
```

响应示例：

```
[  {  "id":  1,  "created_at":  "2020-05-07T04:27:17.234Z",  "state":  "scheduled",  "source_storage_name":  "default",  "destination_storage_name":  "storage2",  "project":  {  "id":  1,  "description":  null,  "name":  "project1",  "name_with_namespace":  "John Doe2 / project1",  "path":  "project1",  "path_with_namespace":  "namespace1/project1",  "created_at":  "2020-05-07T04:27:17.016Z"  }  ] 
```

## Retrieve all repository storage moves for a project[](#retrieve-all-repository-storage-moves-for-a-project "Permalink")

```
GET /projects/:project_id/repository_storage_moves 
```

默认情况下，因为 API 结果是[分页的](README.html#pagination) ，所以`GET`请求一次返回 20 个结果.

Parameters:

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `project_id` | integer | yes | 项目编号 |

请求示例：

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/repository_storage_moves" 
```

响应示例：

```
[  {  "id":  1,  "created_at":  "2020-05-07T04:27:17.234Z",  "state":  "scheduled",  "source_storage_name":  "default",  "destination_storage_name":  "storage2",  "project":  {  "id":  1,  "description":  null,  "name":  "project1",  "name_with_namespace":  "John Doe2 / project1",  "path":  "project1",  "path_with_namespace":  "namespace1/project1",  "created_at":  "2020-05-07T04:27:17.016Z"  }  ] 
```

## Get a single project repository storage move[](#get-a-single-project-repository-storage-move "Permalink")

```
GET /project_repository_storage_moves/:repository_storage_id 
```

Parameters:

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `repository_storage_id` | integer | yes | 项目存储库存储移动的标识 |

请求示例：

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_repository_storage_moves/1" 
```

响应示例：

```
{  "id":  1,  "created_at":  "2020-05-07T04:27:17.234Z",  "state":  "scheduled",  "source_storage_name":  "default",  "destination_storage_name":  "storage2",  "project":  {  "id":  1,  "description":  null,  "name":  "project1",  "name_with_namespace":  "John Doe2 / project1",  "path":  "project1",  "path_with_namespace":  "namespace1/project1",  "created_at":  "2020-05-07T04:27:17.016Z"  } 
```

## Get a single repository storage move for a project[](#get-a-single-repository-storage-move-for-a-project "Permalink")

```
GET /projects/:project_id/repository_storage_moves/:repository_storage_id 
```

Parameters:

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `project_id` | integer | yes | 项目编号 |
| `repository_storage_id` | integer | yes | 项目存储库存储移动的标识 |

请求示例：

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/repository_storage_moves/1" 
```

响应示例：

```
{  "id":  1,  "created_at":  "2020-05-07T04:27:17.234Z",  "state":  "scheduled",  "source_storage_name":  "default",  "destination_storage_name":  "storage2",  "project":  {  "id":  1,  "description":  null,  "name":  "project1",  "name_with_namespace":  "John Doe2 / project1",  "path":  "project1",  "path_with_namespace":  "namespace1/project1",  "created_at":  "2020-05-07T04:27:17.016Z"  } 
```

## Schedule a repository storage move for a project[](#schedule-a-repository-storage-move-for-a-project "Permalink")

```
POST /projects/:project_id/repository_storage_moves 
```

Parameters:

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `project_id` | integer | yes | 项目编号 |
| `destination_storage_name` | string | yes | 目标存储分片的名称 |

请求示例：

```
curl --request POST --header "PRIVATE_TOKEN: <your_access_token>" --header "Content-Type: application/json" \
--data '{"destination_storage_name":"storage2"}' "https://gitlab.example.com/api/v4/projects/1/repository_storage_moves" 
```

响应示例：

```
{  "id":  1,  "created_at":  "2020-05-07T04:27:17.234Z",  "state":  "scheduled",  "source_storage_name":  "default",  "destination_storage_name":  "storage2",  "project":  {  "id":  1,  "description":  null,  "name":  "project1",  "name_with_namespace":  "John Doe2 / project1",  "path":  "project1",  "path_with_namespace":  "namespace1/project1",  "created_at":  "2020-05-07T04:27:17.016Z"  } 
```