Imports
List staged imports
Get a list of staged (in-progress) imports.
Response
200 OK
{
"timestamp": "2016-04-18T11:39:04.368857076-04:00",
"data": [
{
"id": "1",
"user_id": "1",
"created": "2016-04-18T11:39:00.267967449-04:00",
"updated": "2016-04-18T11:39:00.267967449-04:00",
"archive": "20160415113526.gz",
"path": "",
"url": "",
"insecure": false,
"size": 45594
}
]
}
Stage an import from a file upload
Stage an import from a file upload.
Example
Request must have a Content-Type header of multipart/form-data
. The
request body must have a form key named file
whose contents is the
file upload.
POST /api/v1/imports/
Content-Type: multipart/form-data; boundary=----CBacgHmUVPwTniJL
----CBacgHmUVPwTniJL
Content-Disposition: form-data; name="file"; filename="20160415113526.gz"
Content-Type: application/x-gzip
<file upload contents...>
----CBacgHmUVPwTniJL--
Response
200 OK
{
"timestamp": "2016-04-18T11:43:49.684797726-04:00",
"data": {
"id": "1",
"user_id": "1",
"created": "2016-04-18T11:39:00.267967449-04:00",
"updated": "2016-04-18T11:39:00.267967449-04:00",
"archive": "20160415113526.gz",
"path": "",
"url": "",
"insecure": false,
"size": 45594
}
}
Stage an import from a filesystem path
Stage an import from a filesystem path.
URL Parameters
Name | Description |
---|---|
path |
string (required) Filesystem path on CDRouter system |
Example
The path
URL parameter must be a filesystem path on the CDRouter
system to an export archive.
POST /api/v1/imports/?path=/tmp/upload.gz
Response
200 OK
{
"timestamp": "2016-04-18T11:43:49.684797726-04:00",
"data": {
"id": "1",
"user_id": "1",
"created": "2016-04-18T11:39:00.267967449-04:00",
"updated": "2016-04-18T11:39:00.267967449-04:00",
"archive": "upload.gz",
"path": "",
"url": "",
"insecure": false,
"size": 45594
}
}
Stage an import from a URL
Stage an import from a URL to another CDRouter system.
URL Parameters
Name | Description |
---|---|
url |
string (required) URL to config, package or result on another CDRouter system |
token |
string (optional) If transferring from a CDRouter 10.0 or higher system, this must be a valid API token on the other system |
username |
string (optional) If transferring from a CDRouter 10.0 or higher system, this must be a valid API username on the other system |
password |
string (optional) If transferring from a CDRouter 10.0 or higher system, this must be a valid API password on the other system |
insecure |
boolean (optional) If true , allow connections to other CDRouter systems without valid certs, Default: false |
Example
The url
URL parameter must be a URL to a config, package or result
on another CDRouter system and must take the form
http[s]://host/resource/id
. A token
URL parameter or username
and password
URL parameters is required if the other CDRouter system
is running CDRouter 10.0 or higher and does not have Automatic Login
enabled.
Import config 123
from https://other.cdrouter.system
using API
token deadbeef
.
POST /api/v1/imports/?url=https://other.cdrouter.system/configs/123&token=deadbeef
Import package 456
from https://other.cdrouter.system
using API
token deadbeef
.
POST /api/v1/imports/?url=https://other.cdrouter.system/packages/456&token=deadbeef
Import result 20160329111012
from https://other.cdrouter.system
using API
token deadbeef
.
POST /api/v1/imports/?url=https://other.cdrouter.system/results/20160329111012&token=deadbeef
Response
200 OK
{
"timestamp": "2016-04-18T11:43:49.684797726-04:00",
"data": {
"id": "1",
"user_id": "1",
"created": "2016-04-18T11:39:00.267967449-04:00",
"updated": "2016-04-18T11:39:00.267967449-04:00",
"archive": "",
"path": "",
"url": "https://other.cdrouter.system/configs/123",
"insecure": false,
"size": 45
}
}
Get a staged import
Get a staged import.
Response
200 OK
{
"timestamp": "2016-04-18T11:43:49.684797726-04:00",
"data": {
"id": "1",
"user_id": "1",
"created": "2016-04-18T11:39:00.267967449-04:00",
"updated": "2016-04-18T11:39:00.267967449-04:00",
"archive": "20160415113526.gz",
"path": "",
"url": "",
"insecure": false,
"size": 45594
}
}
Response
404 Not Found
{
"error": "no such staged import"
}
Get a staged import’s commit request
Get a commit request for a staged import.
Response
200 OK
For each resource, import
is set to true
if the resource does not
already exist as indicated by the presence of the existing_id
field.
{
"timestamp": "2016-04-18T11:43:49.684797726-04:00",
"data": {
"replace_existing": false,
"configs": {
"default.conf": {
"name": "",
"import": true
}
},
"packages": {
"one": {
"name": "",
"import": false,
"existing_id": "1027"
}
},
"results": {
"20160415113526": {
"import": false,
"existing_id": "20160415113526"
}
},
"tags": null
}
}
Response
404 Not Found
{
"error": "no such staged import"
}
Commit a staged import
Commit a staged import.
Example
The request body must be the staged import’s
commit request. Import a
resource from the staged import by setting its import
field to
true
. Configs and packages can be renamed on import by setting
their name
field to a non-empty string. Setting the top-level
replace_existing
to true
will import all resources regardless of
whether they already exist or not (as indicated by the presence of the
existing_id
field).
Additional tags can be added to imported resources by setting the
top-level tags
field to an array of tag names.
POST /api/v1/imports/1/
{
"replace_existing": false,
"configs": {
"default.conf": {
"name": "",
"import": false
}
},
"packages": {
"one": {
"name": "",
"import": false,
"existing_id": "1027"
}
},
"results": {
"20160415113526": {
"import": false,
"existing_id": "20160415113526"
}
},
"tags": [
"one",
"two",
"three"
]
}
Response
200 OK
For each resource that was marked for import, the response
field
indicates the result. For a successful import, imported
will be
true
, id
will be the imported resource’s ID and name
will be the
imported resource’s name. If a resource was not marked for import,
imported
will be false
and message
will be skipped
.
Otherwise, there was an error importing the resource. If the user did
not have sufficient privileges to import the resource, message
will
be privileges
. If the resource could not be imported because an
existing resource with the same name is locked, message
will be
locked
. Otherwise the message
will contain further information
about the import error.
{
"timestamp": "2016-04-18T12:00:24.760548198-04:00",
"data": {
"replace_existing": false,
"configs": {
"default.conf": {
"name": "default.conf",
"import": false,
"response": {
"imported": false,
"message": "skipped"
}
}
},
"packages": {
"one": {
"name": "one",
"import": true,
"existing_id": "1027",
"response": {
"imported": true,
"id": "1027",
"name": "one"
}
}
},
"results": {
"20160415113526": {
"import": true,
"existing_id": "20160415113526",
"response": {
"imported": true,
"id": "20160415113526",
"name": "20160415113526"
}
}
},
"tags": [
"one",
"two",
"three"
]
}
}
Response
404 Not Found
{
"error": "no such staged import"
}
Delete a staged import
Delete a staged import.
Response
204 No Content