import.md 3 KB
Newer Older
Craig Norris's avatar
Craig Norris committed
1 2 3 4 5 6
---
stage: none
group: unassigned
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/#designated-technical-writers
---

Ben's avatar
Ben committed
7 8 9 10 11 12
# Import API

## Import repository from GitHub

Import your projects from GitHub to GitLab via the API.

Amy Qualls's avatar
Amy Qualls committed
13
```plaintext
Ben's avatar
Ben committed
14 15 16 17 18 19 20
POST /import/github
```

| Attribute  | Type    | Required | Description         |
|------------|---------|----------|---------------------|
| `personal_access_token`       | string | yes      | GitHub personal access token |
| `repo_id`   | integer | yes      | GitHub repository ID     |
21
| `new_name`   | string | no      | New repository name     |
22
| `target_namespace`   | string | yes      | Namespace to import repository into. Supports subgroups like `/namespace/subgroup`.     |
23
| `github_hostname`   | string  | no  | Custom GitHub enterprise hostname. Defaults to GitHub.com if `github_hostname` is not set. |
Ben's avatar
Ben committed
24

25
```shell
26 27 28 29 30 31 32 33 34 35
curl --request POST \
  --url "https://gitlab.example.com/api/v4/import/github" \
  --header "content-type: application/json" \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --data '{
    "personal_access_token": "aBc123abC12aBc123abC12abC123+_A/c123",
    "repo_id": "12345",
    "target_namespace": "group/subgroup",
    "new_name": "NEW-NAME"
}'
Ben's avatar
Ben committed
36 37 38 39 40 41 42 43 44 45 46 47
```

Example response:

```json
{
    "id": 27,
    "name": "my-repo",
    "full_path": "/root/my-repo",
    "full_name": "Administrator / my-repo"
}
```
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

## Import repository from Bitbucket Server

Import your projects from Bitbucket Server to GitLab via the API.

NOTE: **Note:**
The Bitbucket Project Key is only used for finding the repository in Bitbucket.
You must specify a `target_namespace` if you want to import the repository to a GitLab group.
If you do not specify `target_namespace`, the project will import to your personal user namespace.

```plaintext
POST /import/bitbucket_server
```

| Attribute  | Type    | Required | Description         |
|------------|---------|----------|---------------------|
| `bitbucket_server_url` | string | yes | Bitbucket Server URL |
| `bitbucket_server_username` | string | yes | Bitbucket Server Username |
| `personal_access_token` | string | yes | Bitbucket Server personal access token/password |
| `bitbucket_server_project` | string | yes | Bitbucket Project Key |
| `bitbucket_server_repo` | string | yes | Bitbucket Repository Name |
Amy Qualls's avatar
Amy Qualls committed
69
| `new_name` | string | no | New repository name |
70
| `target_namespace` | string | no | Namespace to import repository into. Supports subgroups like `/namespace/subgroup` |
71 72 73

```shell
curl --request POST \
74
  --url https://gitlab.example.com/api/v4/import/bitbucket_server \
75 76 77 78 79 80 81 82 83 84
  --header "content-type: application/json" \
  --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" \
  --data '{
    "bitbucket_server_url": "http://bitbucket.example.com",
    "bitbucket_server_username": "root",
    "personal_access_token": "Nzk4MDcxODY4MDAyOiP8y410zF3tGAyLnHRv/E0+3xYs",
    "bitbucket_server_project": "NEW",
    "bitbucket_server_repo": "my-repo"
}'
```