# Dostępne żądania API

**REST API Xopero ONE udostępnia kompaktowy zestaw endpointów dla środowisk DevOps (zaimplementowanych metodą POST) do uwierzytelniania użytkowników, przeglądania i zarządzania organizacjami oraz repozytoriami Git, a także automatyzacji operacji backupu, takich jak podłączanie lub odłączanie repozytoriów, inicjowanie synchronizacji oraz sprawdzanie statusu organizacji.**

***

## Lista endpointów API

Poniższa tabela przedstawia wszystkie dostępne endpointy API **Xopero ONE**, wraz z krótkim opisem oraz linkiem do ich pełnej dokumentacji.

{% hint style="warning" %}
Do autoryzacji wszystkich żądań API (z wyjątkiem logowania) należy używać tokena dostępu. Więcej informacji na temat uwierzytelniania w API można znaleźć w [tym artykule](https://helpcenter.xopero.com/xopero-one-en/pl/zarzadzanie/przeglad-i-uwierzytelnianie#uwierzytelnianie).
{% endhint %}

| Metoda HTTP i ścieżka                                                              | Opis                                                                         |
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| [`POST /account/login`](#post-account-login)                                       | Zaloguj się do **Xopero ONE Management Service** i uzyskaj token dostępu.    |
| [`POST /git/organizations/getmany`](#post-git-organizations-getmany)               | Wyświetl listę organizacji **Git** zintegrowanych z **Xopero ONE**.          |
| [`POST /plans/listassignedtoorganization`](#post-plans-listassignedtoorganization) | Wyświetl wszystkie plany backupu przypisane do wybranej organizacji **Git**. |
| [`POST /plans/attachgitrepository`](#post-plans-attachgitrepository)               | Dołącz repozytorium do planu backupu.                                        |
| [`POST plans/AttachAzureProject`](#post-plans-attachazureproject)                  | Dołącz projekt **Azure DevOps** do planu backupu.                            |
| [`POST /plans/detachgitrepository`](#post-plans-detachgitrepository)               | Usuń repozytorium z planu backupu.                                           |
| [`POST plans/DetachAzureProject`](#post-plans-detachazureproject)                  | Usuń projekt **Azure DevOps** z planu backupu.                               |
| [`POST /plans/modifygitplan`](#post-plans-modifygitplan)                           | Edytuj ustawienia istniejącego planu backupu.                                |
| [`POST plans/ModifyAzurePlanAsync`](#post-plans-modifyazureplanasync)              | Edytuj ustawienia istniejącego planu backupu **Azure DevOps**.               |
| [`POST /git/repositories/getmany`](#post-git-repositories-getmany)                 | Pobierz listę repozytoriów wybranej organizacji **Git**.                     |
| [`POST /git/repositories/activate`](#post-git-repositories-activate)               | Aktywuj licencje dla wybranych repozytoriów.                                 |
| [`POST /git/repositories/deactivate`](#post-git-repositories-deactivate)           | Dezaktywuj licencje wybranych repozytoriów.                                  |
| [`POST /git/repositories/remove`](#post-git-repositories-remove)                   | Usuń repozytorium z systemu **Xopero ONE**.                                  |
| [`POST /git/repositories/sync`](#post-git-repositories-sync)                       | Zsynchronizuj dane wybranej organizacji **Git** z systemem **Xopero ONE**.   |

***

## Konto

<details>

<summary><code>POST /account/login</code></summary>

Zaloguj się do **Xopero ONE Management Service**.

{% hint style="info" %}
To żądanie zwraca token dostępu, który jest wymagany do wszystkich kolejnych żądań API.
{% endhint %}

{% hint style="warning" %}
Token dostępu wygenerowany za pomocą żądania logowania POST jest ważny przez 30 dni.
{% endhint %}

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/account/login
```

{% endcode %}

**Parametry:**

| Klucz        | Wartość (opis)                                      | Typ danych |
| ------------ | --------------------------------------------------- | ---------- |
| `email`      | Nazwa użytkownika **Xopero ONE** (adres e-mail).    | String     |
| `password`   | Hasło konta **Xopero ONE**.                         | String     |
| `rememberMe` | Określa, czy sesja logowania ma zostać zapamiętana. | Boolean    |

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "email":"admin@company.com",
   "password":"admin123",
    "rememberMe":true
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" %}

```json
{
 "userId":"a4ac78431-30c2-4d65-bd3e-eb6416784c",     "accessToken":"yMDA1LzA1L2lka4acXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6ImZiODZiNDMxLTMwYzItNGQ2NS1iZDNlLWViNjQxzL25hbWUiOiJhjm1lbG9uQHhvcGVyby5jb20iLCJodHRwOhjvc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2a4aclbWFpbGFkZHJlc3MiOiJtLm1lbG9uQHhvcGVyby5jb20iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOlsiU3l50IiwiVXNlck1hbmFnZW1lbnQiXSwiZXhwIjoxNjU0NjkwNhj4LCJpc3MiOiJodHRa4acxob3N0OjUwMDAiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjUwMDAifQ.eHVRw1KqYi3SOqN-AJUXoEIFKxGVokhoMp910L1LkzA"
}
```

{% endcode %}

</details>

***

## Organizacja

<details>

<summary><code>POST /git/organizations/getmany</code></summary>

Pobierz listę organizacji **Git**.

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/git/organizations/getmany
```

{% endcode %}

**Parametry:**

| Klucz       | Wartość (opis)                                            | Typ danych      |
| ----------- | --------------------------------------------------------- | --------------- |
| `limit`     | Liczba repozytoriów na stronę.                            | Integer         |
| `orderby`   | Określa pole oraz kierunek sortowania zwracanych wyników. | String          |
| `ordertype` | Określa kolejność sortowania.                             | String          |
| `page`      | Numer strony wyników.                                     | Integer         |
| `filters`   | Filtry danych.                                            | Array\<filters> |

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "limit": 2,
    "orderby": "Name",
    "ordertype": "asc",
    "Page": 2
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" expandable="true" %}

```json
{
    "currentPage": 2,
    "pageCount": 2,
    "totalEntries": 4,
    "result": [
        {
            "id": "a4ac2cd0-ed2f-4ced-be39-60c631e033ff",
            "driver": 1,
            "name": "OrgName",
            "apiUrl": null,
            "isReadOnly": false,
            "protectedRepositories": 43,
            "totalRepositories": 58,
            "missingLicences": 58,
            "removedRepositories": 15,
            "defaultWorkerId": "a4ac11eb-bbe7-406e-b3da-24fb4df5642a",
            "isCreatedByMarketplace": false,
            "synchronizationInProgress": false,
            "plans": [
                {
                    "id": "a4acff69-266e-4771-b47b-fd5e4fae6a40",
                    "name": "name1",
                    "backupType": 5,
                    "includeMetadata": true,
                    "repoCount": 1,
                    "lastStatus": {
                        "successes": 0,
                        "warnings": 0,
                        "errors": 1
                    },
                    "planFinishedTime": 1643754961233,
                    "isRunning": false
                },
                {
                    "id": "a4ac8dd-6bf4-4c6c-8bc3-7305a9cc4dad",
                    "name": "name2",
                    "backupType": 5,
                    "includeMetadata": true,
                    "repoCount": 1,
                    "lastStatus": {
                        "successes": 0,
                        "warnings": 0,
                        "errors": 1
                    },
                    "planFinishedTime": 1643754482141,
                    "isRunning": false
                },
                {
                    "id": "a4ac8001-1d3f-45ae-bb7a-49e86286ad6b",
                    "name": "name3",
                    "backupType": 5,
                    "includeMetadata": true,
                    "repoCount": 1,
                    "lastStatus": {
                        "successes": 0,
                        "warnings": 0,
                        "errors": 1
                    },
                    "planFinishedTime": 1643754482453,
                    "isRunning": false
                }
            ]
        },
        {
            "id": "a4ac6bff8-0000-0000-0000-000000000000",
            "driver": 2,
            "name": "xopero",
            "apiUrl": null,
            "isReadOnly": false,
            "protectedRepositories": 1,
            "totalRepositories": 775,
            "missingLicences": 676,
            "removedRepositories": 0,
            "defaultWorkerId": "a4ac0f30-6641-a4ac7-ac26-fd7e47abf8f3",
            "isCreatedByMarketplace": false,
            "synchronizationInProgress": false,
            "plans": [
                {
                    "id": "3a4ac5-fdd1-4a4ac1-9415-66d0fbedb0e0",
                    "name": "name1",
                    "backupType": 5,
                    "includeMetadata": true,
                    "repoCount": 1,
                    "lastStatus": {
                        "successes": 1,
                        "warnings": 0,
                        "errors": 0
                    },
                    "planFinishedTime": 1645136722019,
                    "isRunning": false
                },
                {
                    "id": "a4aca5252-2d02-a4ac-8a24-e2be4598c8ce",
                    "name": "name2",
                    "backupType": 5,
                    "includeMetadata": true,
                    "repoCount": 1,
                    "lastStatus": {
                        "successes": 0,
                        "warnings": 1,
                        "errors": 0
                    },
                    "planFinishedTime": 1645115366992,
                    "isRunning": false
                },
                {
                    "id": "a4acb8c-7b2a-a4ac83-8167-44a9a1e14272",
                    "name": "name3",
                    "backupType": 5,
                    "includeMetadata": true,
                    "repoCount": 1,
                    "lastStatus": {
                        "successes": 0,
                        "warnings": 1,
                        "errors": 0
                    },
                    "planFinishedTime": 1645115380587,
                    "isRunning": false
                }
            ]
        }
    ]
}
```

{% endcode %}

</details>

***

## Backup

<details>

<summary><code>POST /plans/listassignedtoorganization</code></summary>

Wyświetl wszystkie plany backupu, do których przypisane są repozytoria wybranej organizacji **Git**.

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/plans/listassignedtoorganization
```

{% endcode %}

**Parametry:**

| Klucz            | Wartość (opis)                                                             | Typ danych |
| ---------------- | -------------------------------------------------------------------------- | ---------- |
| `limit`          | Określa maksymalną liczbę wyników zwracanych w pojedynczej odpowiedzi API. | Integer    |
| `page`           | Numer strony wyników.                                                      | Integer    |
| `organizationid` | ID organizacji.                                                            | Guid       |

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "limit":5,
    "page":5,
    "organizationid":"a4a4acgd0-eg78f-4a4ac-kl39-99ka4ac1e777ff"
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" expandable="true" %}

```json
{
    "currentPage": 5,
    "pageCount": 5,
    "totalEntries": 23,
    "result": [
        {
            "id": "ea6a260b-a4ac-4204-a92d-918e6940b136",
            "name": "example1",
            "includeAllRepositories": false,
            "repositoryIds": [
                "c1961c1c-a425-a4ac-8757-32d5b6fc9aeb"
            ]
        },
        {
            "id": "fba158dd-6bf4-a4ac-8bc3-7305a9cc4dad",
            "name": "example2",
            "includeAllRepositories": false,
            "repositoryIds": [
                "de5c5995-b422-43c4-90b7-7ee182480dbb"
            ]
        },
        {
            "id": "fdb48001-1d3f-45ae-bb7a-49e86286ad6b",
            "name": "example3",
            "includeAllRepositories": false,
            "repositoryIds": [
                "a4ac5995-b422-43c4-a4ac-7ee182480dbb"
            ]
        }
     ]
}
```

{% endcode %}

</details>

<details>

<summary><code>POST /plans/attachgitrepository</code></summary>

Dodaj repozytorium do planu backupu, pod warunkiem, że zarówno repozytorium, jak i plan już istnieją.

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/plans/attachgitrepository
```

{% endcode %}

**Parametry:**

| Klucz          | Wartość (opis)               | Typ danych |
| -------------- | ---------------------------- | ---------- |
| `planid`       | ID planu backup&#x75;**\***. | Guid       |
| `repositoryid` | ID repozytorium.             | Guid       |

<sub>**\***</sub><sub>Możesz użyć żądania</sub> <sub></sub><sub>`getMany`</sub><sub>, aby znaleźć konkretny identyfikator planu kopii zapasowej.</sub>

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "planid":"hjkhkj60b-baac-4564-a92d-918e6940b136",
    "repositoryid":"ca4ac8f1c-a425-4869-8757-32c6567gc9aeb"
}
```

{% endcode %}

**Przykładowa odpowiedź:**

```json
200 OK
```

</details>

<details>

<summary><code>POST plans/AttachAzureProject</code></summary>

Dodaj projekt **Azure DevOps** do planu backupu, pod warunkiem, że zarówno projekt, jak i plan już istnieją.

{% hint style="danger" %}
Działa tylko dla planów z indywidualnym wyborem projektów.
{% endhint %}

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/plans/attachazureproject
```

{% endcode %}

**Parametry:**

| Klucz       | Wartość (opis)               | Typ danych |
| ----------- | ---------------------------- | ---------- |
| `planId`    | ID planu backup&#x75;**\***. | Guid       |
| `projectId` | ID projektu.                 | Guid       |

<sub>**\***</sub><sub>Możesz użyć żądania</sub> <sub></sub><sub>`getMany`</sub><sub>, aby znaleźć konkretny identyfikator planu kopii zapasowej.</sub>

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "planId":"ea6a260b-brrc-4204-a56c-918e6940b136",
    "projectId": "c1961r1e-a425-4769-8757-32d6b6fc7aeb"
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" %}

```json
200 OK
```

{% endcode %}

</details>

<details>

<summary><code>POST /plans/detachgitrepository</code></summary>

Usuń repozytorium z planu backupu.

**Endpoint API:**

```http
POST https://server_address/plans/detachgitrepository
```

**Parametry:**

| Klucz          | Wartość (opis)               | Typ danych |
| -------------- | ---------------------------- | ---------- |
| `planid`       | ID planu backup&#x75;**\***. | Guid       |
| `repositoryid` | ID repozytorium.             | Guid       |

<sub>**\***</sub><sub>Możesz użyć żądania</sub> <sub></sub><sub>`getMany`</sub><sub>, aby znaleźć konkretny identyfikator planu kopii zapasowej.</sub>

**Przykładowe żądanie:**

```json
{
    "planid":"hjkhkj60b-baac-4564-a92d-918e6940b136",
    "repositoryid":"a4ac8f1c-a425-48hj-8757-32hj567gchjeb"
}
```

**Przykładowa odpowiedź:**

```json
200 OK
```

</details>

<details>

<summary><code>POST plans/DetachAzureProject</code></summary>

Usuń projekt **Azure DevOps** z planu backupu.

{% hint style="danger" %}
Działa tylko dla planów z indywidualnym wyborem projektów.
{% endhint %}

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/plans/detachazureproject
```

{% endcode %}

**Parametry:**

| Klucz       | Wartość (opis)               | Typ danych |
| ----------- | ---------------------------- | ---------- |
| `planId`    | ID planu backup&#x75;**\***. | Guid       |
| `projectId` | ID projektu.                 | Guid       |

<sub>**\***</sub><sub>Możesz użyć żądania</sub> <sub></sub><sub>`getMany`</sub><sub>, aby znaleźć konkretny identyfikator planu kopii zapasowej.</sub>

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "planId": "05d46e44-f026-4cf9-a64a-1dd97328808c",
    "projectId": "022056bd-0044-0000-0000-004400000003"
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" %}

```json
200 OK
```

{% endcode %}

</details>

<details>

<summary><code>POST /plans/modifygitplan</code></summary>

Edytuj istniejący plan backupu **Git**.

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/plans/modifygitplan
```

{% endcode %}

**Parametry:**

| Klucz                     | Wartość (opis)                                                                                                 | Typ danych                  |
| ------------------------- | -------------------------------------------------------------------------------------------------------------- | --------------------------- |
| `id`                      | ID planu backup&#x75;**\***.                                                                                   | Guid                        |
| `isActive`                | Wskazuje, czy harmonogram jest obecnie włączony (`true`) czy wyłączony (`false`).                              | Boolean                     |
| `name`                    | Nazwa planu backupu.                                                                                           | String                      |
| `type`                    | Określa typ planu backupu.                                                                                     | EPlanType                   |
| `backupType`              | Typ backupu.                                                                                                   | EBackupType                 |
| `storageId`               | ID magazynu danych backupu.                                                                                    | Guid                        |
| `repositoriesIds`         | Tabela identyfikatorów repozytoriów.                                                                           | IEnumerable\<Guid>          |
| `workerId`                | Unikalny identyfikator agenta (workera) wykonującego operacje backupu.                                         | Guid                        |
| `schedule`                | Harmonogram backupu.                                                                                           | BackupScheduleDTO           |
| `advancedOptions`         | Opcje zaawansowane.                                                                                            | Dictionary\<string, string> |
| `compressionSettings`     | Ustawienia kompresji.                                                                                          | CompressionSettingsEntry    |
| `encryptionSettings`      | Ustawienia szyfrowania.                                                                                        | EncryptionSettingsEntry     |
| `customActions`           | Akcje zdefiniowane przez użytkownika.                                                                          | BackupCustomActionsEntry    |
| `inculdeAllReposistories` | Jeśli wartość wynosi `true`, plan ignoruje wybrane repozytoria i obejmuje wszystkie repozytoria w organizacji. | Boolean                     |
| `organizationId`          | ID organizacji.                                                                                                | Guid                        |
| `includeMetadata`         | Jeśli wartość wynosi `true`, backup obejmuje metadane.                                                         | Boolean                     |

<sub>**\***</sub><sub>Możesz użyć żądania</sub> <sub></sub><sub>`getMany`</sub><sub>, aby znaleźć konkretny identyfikator planu kopii zapasowej.</sub>

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" expandable="true" %}

```json
{
   "id":"a4acc15-b08b-40cb-a4ac-5e40ea4ac54",
   "isActive":true,
   "name":"example",
   "backupType":5,
   "schedule":{
      "id":"a4ac21-6da6-4c8c-a4ac5-f2ffca4ac516",
      "scheme":3,
      "delay":0,
      "preventSystemSleep":false,
      "options":[
         {
            "type":1,
            "trigger":1,
            "frequency":1,
            "days":[
               1
            ],
            "startAt":[
               {
                  "hour":17,
                  "minute":25
               }
            ],
            "interval":0,
            "nthDayOfWeek":0
         },
         {
            "type":3,
            "trigger":1,
            "frequency":3,
            "days":[
               1,
               2,
               3,
               4,
               5
            ],
            "startAt":[
               {
                  "hour":17,
                  "minute":25
               }
            ],
            "interval":0,
            "nthDayOfWeek":0
         }
      ],
      "backupWindow":
      [     
         [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
      ],
      "retention":{
         "id":"00000000-0000-0000-0000-000000000000",
         "rule":1,
         "options":null,
         "order":0
      }
   },
   "compressionSettings":{
      "codec":2,
      "level":2
   },
   "encryptionSettings":null,
   "customActions":{
      "preBackupAction":null,
      "postSnapshotAction":null,
      "postBackupAction":null
   },
   "advancedOptions":{
      "useVss":"True",
      "maxTaskRetriesCount":"3",
      "taskRetriesFrequency":"60000",
      "maxConcurrentTasks":"5",
      "processorProperties_PartSize":"1048576"
   },
   "deltaSettings":null,
   "workerId":"a4ac1eb-bbe7-a4ac-b3da-a4acf5642a",
   "filteringSettings":null,
   "organizationId":"a4ac2cd0-ea4ac-4ced-be39-6a4ace033ff",
   "repositoriesIds":[
      "c1961c1c-a425-4769-8757-32d5b6fc9aeb"
   ],
   "includeAllRepositories":false,
   "includeMetadata":true,
   "storageId":"a4ac74ac-7a4ac-4fec-9448-a4ace9267d7"
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" %}

```json
200 OK
```

{% endcode %}

</details>

<details>

<summary><code>POST plans/ModifyAzurePlanAsync</code></summary>

Edytuj istniejący plan backupu **Azure DevOps**.

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/plans/modifyazureplanasync
```

{% endcode %}

**Parametry:**

<table><thead><tr><th width="220">Klucz</th><th width="219.66666666666666">Wartość (opis)</th><th>Typ danych</th></tr></thead><tbody><tr><td><code>id</code></td><td>ID planu backupu<strong>*</strong>.</td><td>Guid</td></tr><tr><td><code>isActive</code></td><td>Wskazuje, czy harmonogram jest obecnie włączony (<code>true</code>) czy wyłączony (<code>false</code>).</td><td>Boolean</td></tr><tr><td><code>name</code></td><td>Nazwa planu backupu.</td><td>String</td></tr><tr><td><code>type</code></td><td>Określa typ planu backupu.</td><td>EPlanType</td></tr><tr><td><code>backupType</code></td><td>Typ backupu.</td><td>EBackupType</td></tr><tr><td><code>storageId</code></td><td>ID magazynu danych backupu.</td><td>Guid</td></tr><tr><td><code>repositoriesIds</code></td><td>Tabela identyfikatorów repozytoriów.</td><td>IEnumerable&#x3C;Guid></td></tr><tr><td><code>excludedRepositoriesIds</code></td><td>Identyfikatory wykluczonych repozytoriów.</td><td>IEnumerable&#x3C;Guid></td></tr><tr><td><code>projectsIds</code></td><td>Identyfikatory projektów do objęcia backupem.</td><td>IEnumerable&#x3C;Guid></td></tr><tr><td><code>wikisIds</code></td><td>Identyfikatory wiki do objęcia backupem.</td><td>IEnumerable&#x3C;Guid></td></tr><tr><td><code>workerId</code></td><td>Unikalny identyfikator agenta (workera) wykonującego operacje backupu.</td><td>Guid</td></tr><tr><td><code>schedule</code></td><td>Harmonogram backupu.</td><td>BackupScheduleDTO</td></tr><tr><td><code>advancedOptions</code></td><td>Opcje zaawansowane.</td><td>Dictionary&#x3C;string, string></td></tr><tr><td><code>compressionSettings</code></td><td>Ustawienia kompresji.</td><td>CompressionSettingsEntry</td></tr><tr><td><code>encryptionSettings</code></td><td>Ustawienia szyfrowania.</td><td>EncryptionSettingsEntry</td></tr><tr><td><code>customActions</code></td><td>Akcje zdefiniowane przez użytkownika.</td><td>BackupCustomActionsEntry</td></tr><tr><td><code>notificationSettings</code></td><td>Ustawienia powiadomień.</td><td>NotificationSettingsEntry</td></tr><tr><td><code>organizationId</code></td><td>ID organizacji <strong>Azure DevOps</strong>.</td><td>Guid</td></tr><tr><td><code>includeMetadata</code></td><td>Jeśli wartość wynosi <code>true</code>, backup obejmuje metadane.</td><td>Boolean</td></tr><tr><td><code>useExtraCredentials</code></td><td>Wskazuje, czy podczas tworzenia kopii zapasowej organizacji w chmurze używane są dodatkowe poświadczenia.</td><td>Boolean</td></tr><tr><td><code>additionalCredentials</code></td><td>Zbiór dodatkowych poświadczeń.</td><td>Guid[]</td></tr><tr><td><code>resourceKindsToIgnore</code></td><td>Rodzaje zasobów do zignorowania.</td><td>List&#x3C;int></td></tr><tr><td><code>gitChoiceMode</code></td><td>Tryb wyboru repozytorium.</td><td>[EGitChoiceMode](Classes/EGitChoiceMode.md)</td></tr><tr><td><code>rules</code></td><td>Ustawienia wyboru opartego na regułach dla każdego elementu: projekt, wiki, repozytorium.</td><td>List&#x3C;AzureDevOpsRule></td></tr></tbody></table>

<sub>**\***</sub><sub>Możesz użyć żądania</sub> <sub></sub><sub>`getMany`</sub><sub>, aby znaleźć konkretny identyfikator planu kopii zapasowej.</sub>

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" expandable="true" %}

```json
{
  "id":"f4b99db4-c0e9-4111-9292-ffc5812aad2c",
  "isActive":true,
  "name":"Plan DevOps",
  "backupType":10,
  "schedule":{
    "scheme":5,
    "options":[
      {
        "type":0,
        "trigger":1,
        "frequency":3,
        "days":[
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "startAt":[
          {
            "hour":9,
            "minute":29
          }
        ],
        "nthDayOfWeek":0,
        "interval":0
     }
    ],
    "retention":{
      "rule":3,
      "options":[
        {
          "number":3,
          "period":1,
          "type":0
        }
      ],
      "order":0
    },
    "backupWindow":[
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ]
  },
  "compressionSettings":{
    "codec":2,
    "level":2
  },
  "encryptionSettings":null,
  "customActions":{
  "preBackupAction":{
      "windows":{
        "enabled":true,
        "scriptType":0,
        "command":"C:\\Users\\Name\\Desktop\\test.bat",
        "passwordId":"00000000-0000-0000-0000-000000000000",
        "arguments":null
      },
      "unix":{
        "enabled":false
      },
      "waitForExecution":true,
      "waitingInterval":0
    },
    "postSnapshotAction":null,
    "postBackupAction":null
  },
  "advancedOptions":{
    "useVss":"True",
    "maxTaskRetriesCount":3,
    "taskRetriesFrequency":60000,
    "maxConcurrentTasks":5,
    "largeResourcesBufferSize":134217728
  },
  "deltaSettings":null,
  "notificationSettings":{
    "enabled":false,
    "planNotificationsConfiguration":null,
    "recipients":[

    ]
  },
  "workerId":"758fa497-f93b-436f-9571-2a3f7d496ac1",
  "filteringSettings":null,
  "ignoreCorruptedAttachments":false,
  "organizationId":"017f210e-0edd-6645-82a8-f9c9c3cae4d6",
  "gitChoiceMode":3,
  "repositoriesIds":[

  ],
  "excludedRepositoriesIds":[

  ],
  "projectsIds":[

  ],
  "wikisIds":[

  ],
  "additionalCredentials":[

  ],
  "rules":[
    {
      "choiceMode":2,
      "type":2,
      "ruleChoice":{
        "meetAllRules":false,
        "rules":[

        ]
      }
    },
    {
      "choiceMode":2,
      "type":1,
      "ruleChoice":{
        "meetAllRules":false,
        "rules":[

        ]
      }
    }
  ],
  "storageId":"718fgta6-fo5c-4194-8d4e-13e91cd68a70",
  "type":1
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" %}

```json
200 OK
```

{% endcode %}

</details>

***

## Repozytorium

<details>

<summary><code>POST /git/repositories/getmany</code></summary>

Pobierz listę repozytoriów wybranej organizacji **Git**.

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/git/repositories/getmany
```

{% endcode %}

**Parametry:**

| Klucz       | Wartość (opis)                                                       | Typ danych      |
| ----------- | -------------------------------------------------------------------- | --------------- |
| `id`        | ID organizacji.                                                      | Guid            |
| `limit`     | Określa liczbę repozytoriów zwracanych na stronę.                    | Integer         |
| `orderby`   | Określa pole używane do sortowania zwracanych wyników.               | String          |
| `ordertype` | Określa kolejność sortowania: rosnącą (`asc`) lub malejącą (`desc`). | String          |
| `page`      | Numer strony wyników.                                                | Integer         |
| `filters`   | Filtry danych.                                                       | Array\<filters> |

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "id": "a4ac2cd0-a4ac-4ced-be39-a4ac31e033ff",
    "limit": 2,
    "orderby": "Name",
    "ordertype": "asc",
    "page": 1,
    "filters":[
    {
        "operator": "eq",
        "value": true,
        "property": "IsRemoved"
    }
    ]
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" expandable="true" %}

```json
{
    "currentPage": 1,
    "pageCount": 1,
    "totalEntries": 2,
    "result": {
        "synchronizationInProgress": false,
        "lastSynchronizationRepositoriesStartTime": 1645546071481,
        "repositories": [
            {
                "id": "a4ac3ac7d-99e4-a4ac-b5a4-a4acdeee5",
                "serverId": "a4acac7d-99e4-a4ac-b5a4-ea4ac2deee5",
                "name": "org/repo1",
                "lastBackup": 0,
                "lastSuccessfulBackup": 0,
                "nextBackup": 0,
                "isProtected": true,
                "isRemoved": true,
                "status": 2,
                "lastBackupTaskStatus": 0,
                "isPublic": false
            },
            {
                "id": "a4acf294-b30e-a4ac-aabb-6a4ac6578686",
                "serverId": "a4ac294-b30e-a4ac-aabb-63a4ac578686",
                "name": "org/repo2",
                "lastBackup": 0,
                "lastSuccessfulBackup": 0,
                "nextBackup": 1645556400000,
                "isProtected": true,
                "isRemoved": true,
                "status": 2,
                "lastBackupTaskStatus": 0,
                "isPublic": false
            }
       ],
     "removedRepositories": 15
}
```

{% endcode %}

</details>

<details>

<summary><code>POST /git/repositories/activate</code></summary>

Aktywuj licencje dla wybranych repozytoriów **Git**.

{% hint style="danger" %}
Autoryzacja wymaga konta użytkownika z jedną z następujących ról: **DataRemoveManagement** lub **GitManagement**.
{% endhint %}

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/git/repositories/activate
```

{% endcode %}

**Parametry:**

| Klucz | Wartość (opis)                            | Typ danych   |
| ----- | ----------------------------------------- | ------------ |
| `Ids` | Identyfikatory repozytoriów do aktywacji. | Array\<Guid> |

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "Ids":[
        "a4ac979e-0000-0000-0000-000000000000",
        "a4acca07-0000-0000-0000-000000000000",
        "a4ac7c5-0000-0000-0000-000000000000",
        "a4ac9d7a-0000-0000-0000-000000000000",
        "1a4ac9bc9-0000-0000-0000-000000000000",
        "a4ac79fe9-0000-0000-0000-000000000000",
        "a4ac3f220-0000-0000-0000-000000000000",
        "a4aca817-0000-0000-0000-000000000000"
    ]
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" expandable="true" %}

```json
{
    "success": [],
    "error": [
        {
            "id": "a4ac7979e-0000-0000-0000-000000000000",
            "errorCode": "LI5020"
        },
        {
            "id": "a4acdca07-0000-0000-0000-000000000000",
            "errorCode": "LI5020"
        },
        {
            "id": "a4ac797c5-0000-0000-0000-000000000000",
            "errorCode": "LI5020"
        },
        {
            "id": "a4ac79d7a-0000-0000-0000-000000000000",
            "errorCode": "LI5020"
        },
        {
            "id": "a4ac79bc9-0000-0000-0000-000000000000",
            "errorCode": "LI5020"
        },
        {
            "id": "a4ac79fe9-0000-0000-0000-000000000000",
            "errorCode": "LI5020"
        },
        {
            "id": "a4ac3f220-0000-0000-0000-000000000000",
            "errorCode": "LI5020"
        },
        {
            "id": "a4acea817-0000-0000-0000-000000000000",
            "errorCode": "LI5020"
        }
    ]
}
```

{% endcode %}

</details>

<details>

<summary><code>POST /git/repositories/deactivate</code></summary>

Dezaktywuj licencje wybranych repozytoriów **Git**.

{% hint style="danger" %}
Autoryzacja wymaga konta użytkownika z jedną z następujących ról: **DataRemoveManagement** lub **GitManagement**.
{% endhint %}

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/git/repositories/deactivate
```

{% endcode %}

**Parametry:**

| Klucz | Wartość (opis)                               | Typ danych   |
| ----- | -------------------------------------------- | ------------ |
| `Ids` | Identyfikatory repozytoriów do dezaktywacji. | Array\<Guid> |

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "Ids":[
        "a4ac7979e-0000-0000-0000-000000000000",
        "a4acdca07-0000-0000-0000-000000000000",
        "a4ac797c5-0000-0000-0000-000000000000",
        "a4ac79d7a-0000-0000-0000-000000000000",
        "a4ac79bc9-0000-0000-0000-000000000000",
        "a4ac79fe9-0000-0000-0000-000000000000",
        "a4ac3f220-0000-0000-0000-000000000000",
        "a4acea817-0000-0000-0000-000000000000"
    ]
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" expandable="true" %}

```json
{
    "success": [],
    "error": [
        {
            "id": "a4ac7979e-0000-0000-0000-000000000000",
            "errorCode": "GT1001"
        },
        {
            "id": "a4acdca07-0000-0000-0000-000000000000",
            "errorCode": "GT1001"
        },
        {
            "id": "a4ac797c5-0000-0000-0000-000000000000",
            "errorCode": "GT1001"
        },
        {
            "id": "a4ac79d7a-0000-0000-0000-000000000000",
            "errorCode": "GT1001"
        },
        {
            "id": "a4ac79bc9-0000-0000-0000-000000000000",
            "errorCode": "GT1001"
        },
        {
            "id": "a4ac79fe9-0000-0000-0000-000000000000",
            "errorCode": "GT1001"
        },
        {
            "id": "a4ac3f220-0000-0000-0000-000000000000",
            "errorCode": "GT1001"
        },
        {
            "id": "a4acea817-0000-0000-0000-000000000000",
            "errorCode": "GT1001"
        }
    ]
}
```

{% endcode %}

</details>

<details>

<summary><code>POST /git/repositories/remove</code></summary>

Usuń dane repozytorium z systemu **Xopero ONE**.

{% hint style="danger" %}
Autoryzacja wymaga konta użytkownika z jedną z następujących ról: **DataRemoveManagement** lub **GitManagement**.
{% endhint %}

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/git/repositories/remove
```

{% endcode %}

**Parametry:**

| Klucz        | Wartość (opis)                                                                                 | Typ danych |
| ------------ | ---------------------------------------------------------------------------------------------- | ---------- |
| `id`         | Identyfikatory repozytoriów do usunięcia.                                                      | Guid       |
| `removedata` | Jeśli wartość wynosi `true`, system usuwa również dane kopii zapasowej wybranego repozytorium. | Boolean    |

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "id": "a4acd28-eee0-404a-a4ac0-6ca4ac260ca",
    "removedata": true
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" %}

```json
{
    "succeededIds": [
        "a4ac8d28-eee0-a4ac-a070-6a4ac76260ca"
    ],
    "failedIds": [],
    "errors": []
}
```

{% endcode %}

</details>

<details>

<summary><code>POST /git/repositories/sync</code></summary>

Uruchom synchronizację wybranej organizacji **Git**.

**Endpoint API:**

{% code overflow="wrap" %}

```http
POST https://server_address/git/repositories/sync
```

{% endcode %}

**Parametry:**

| Klucz | Wartość (opis)  | Typ danych |
| ----- | --------------- | ---------- |
| `id`  | ID organizacji. | Guid       |

**Przykładowe żądanie:**

{% code title="JSON" overflow="wrap" %}

```json
{
    "id": "a4ac2cd0-a4ac-4ced-a4ac-60ca4ac3ff"
}
```

{% endcode %}

**Przykładowa odpowiedź:**

{% code overflow="wrap" %}

```json
200 OK
```

{% endcode %}

</details>
