This article describes available methods on Xopero ONE Management Service REST API. These methods are dedicated for Git-related features/operations in Xopero ONE.
Available REST API methods
Authorization method
Login method (POST) Login to the Management Service. The generated access token should be used for authorization during subsequent queries.
Address POST https://server_address/account/login
Method parameters
Parameter Description Type Specifies whether to remember the session
JSON example:
Copy {
"email":"test@test.test",
"password":"malpiGaj_123",
"rememberMe":true
}
Response:
Copy {
"userId":"a4ac78431-30c2-4d65-bd3e-eb6416784c", "accessToken":"yMDA1LzA1L2lka4acXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6ImZiODZiNDMxLTMwYzItNGQ2NS1iZDNlLWViNjQxzL25hbWUiOiJhjm1lbG9uQHhvcGVyby5jb20iLCJodHRwOhjvc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2a4aclbWFpbGFkZHJlc3MiOiJtLm1lbG9uQHhvcGVyby5jb20iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOlsiU3l50IiwiVXNlck1hbmFnZW1lbnQiXSwiZXhwIjoxNjU0NjkwNhj4LCJpc3MiOiJodHRa4acxob3N0OjUwMDAiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjUwMDAifQ.eHVRw1KqYi3SOqN-AJUXoEIFKxGVokhoMp910L1LkzA"
}
GitOrganizationController
Get many
GetMany method (POST) Gets a list of organizations. Authorization required.
Address POST https://server_address/git/organizations/getmany
Method parameters
Parameter Description Type Number of repository per page
The field followed by the sort
JSON example:
Copy {
"limit": 2,
"orderby": "Name",
"ordertype": "asc",
"Page": 2
}
Response:
Copy {
"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
}
]
}
]
}
Plans Controller
Attach Git Repository
AttachGitRepository method (POST) Adds a repository to the plan if the given repository and plan exist. Authorization required.
Address POST https://server_address/plans/attachgitrepository
Method parameters
JSON example:
Copy {
"planid":"hjkhkj60b-baac-4564-a92d-918e6940b136",
"repositoryid":"ca4ac8f1c-a425-4869-8757-32c6567gc9aeb"
}
Response:
Detach Git Repository
DetachGitRepository method (POST) Detaches the repository from the plan. Authorization required.
Address POST https://server_address/plans/detachgitrepository
Method parameters
JSON example:
Copy {
"planid":"hjkhkj60b-baac-4564-a92d-918e6940b136",
"repositoryid":"a4ac8f1c-a425-48hj-8757-32hj567gchjeb"
}
Response:
List Assigned To Organization
ListAssignedToOrganization method (POST) Returns a list of plans to which the organization's repositories are pinned. Authorization required.
Address POST https://server_address/plans/listassignedtoorganization
Method parameters
Parameter Description Type Numer of elements on the page
JSON example:
Copy {
"limit":5,
"page":5,
"organizationid":"a4a4acgd0-eg78f-4a4ac-kl39-99ka4ac1e777ff"
}
Response:
Copy {
"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"
]
}
]
}
Modify Git Plan
ModifyGitPlan method (POST) Editing a GIT backup plan. Authorization required.
Address POST https://server_address/plans/modifygitplan
Method parameters
Parameter Description Type Backup type (if the plan type is backup)
Identifier of the device performing the operation
Dictionary[string, string]
If true, it ignores selected repositories and takes all of them from the organization
If true, it performs a metadata backup
JSON example:
Copy {
"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"
}
Response:
GitRepositoryController
Activate
Activate method (POST) Activates licenses for selected repositories. Requires authorization with a user account with the following roles:
Address POST https://server_address/git/repositories/activate
Method parameters
Parameter Description Type Repository IDs to activate
JSON example:
Copy {
"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"
]
}
Response:
Copy {
"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"
}
]
}
Deactivate
Deactivate method (POST) Deactivates licenses for selected repositories. Requires authorization with a user account with the following roles:
Address POST https://server_address/git/repositories/deactivate
Method parameters
Parameter Description Type Repository IDs to be deactivated
JSON example:
Copy {
"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"
]
}
Response:
Copy {
"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"
}
]
}
Get Many
GetMany method (POST) Gets a list of the organization's repositories. Authorization required.
Address POST https://server_address/git/repositories/getmany
Method parameters
Parameter Description Type Number of repositories per page
The name of the field followed by sorting
JSON example:
Copy {
"id": "a4ac2cd0-a4ac-4ced-be39-a4ac31e033ff",
"limit": 2,
"orderby": "Name",
"ordertype": "asc",
"page": 1,
"filters":[
{
"operator": "eq",
"value": true,
"property": "IsRemoved"
}
]
}
Response:
Copy {
"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
}
Remove
Remove method (POST) Deletes repository data from the system. Requires authorization with a user account with the following roles:
DataRemoveManagement
GitManagement
Address POST https://server_address/git/repositories/remove
Method parameters
Parameter Description Type The repository IDs to be deleted
If true, it also deletes the backup data of the indicated repositories
JSON example:
Copy {
"id": "a4acd28-eee0-404a-a4ac0-6ca4ac260ca",
"removedata": true
}
Response:
Copy {
"succeededIds": [
"a4ac8d28-eee0-a4ac-a070-6a4ac76260ca"
],
"failedIds": [],
"errors": []
}
Sync
Sync Method (POST) Runs synchronization for your organization. Authorization required.
Address POST https://server_address/git/repositories/sync
Method parameters
JSON example:
Copy {
"id": "a4ac2cd0-a4ac-4ced-a4ac-60ca4ac3ff"
}
Response: