Navigation

Create One Restore Job

Creates one restore job for the specified cluster.

This endpoint does not support the following:

  • Delivering restored snapshots by SCP
  • Creating point-in-time restore jobs
  • Creating checkpoint restore jobs for sharded clusters with the HTTP delivery method
  • Creating restore jobs for queryable backup snapshots

Note

Groups and projects are synonymous terms. Your {GROUP-ID} is the same as your project ID. For existing groups, your group/project ID remains the same. The resource and corresponding endpoints use the term groups.

The Atlas API uses HTTP Digest Authentication. Provide your Atlas username and API key as the username and password when constructing the HTTP request.

For complete documentation on configuring API access for an Atlas project, see Configure Atlas API Access.

All requests to this endpoint must originate from an IP address on the Atlas user’s API whitelist. For complete documentation on configuring API whitelists, see Provide Access to Whitelisted API Operations.

Base URL: https://cloud.mongodb.com/api/atlas/v1.0

Resource

POST /groups/{GROUP-ID}/clusters/{CLUSTER-NAME}/restoreJobs

Request Parameters

Request Path Parameters

Path Element Required/Optional Description
GROUP-ID Required. The unique identifier of the project that owns the snapshots.
CLUSTER-NAME Required The name of the cluster that contains the snapshots that you want to retrieve.

Request Query Parameters

This endpoint may use any of the HTTP request query parameters available to all Atlas API resources. These are all optional.

Name Type Description Default
pageNum integer Page number (1-based). 1
itemsPerPage integer Number of items to return per page, up to a maximum of 500. 100
pretty boolean Display response in a prettyprint format. false
envelope boolean Specifies whether or not to wrap the response in an envelope. false

Request Body Parameters

Name Type Description
checkpointId string

Conditional: "delivery.methodName" : "AUTOMATED_RESTORE" for Sharded Clusters Only. Unique identifier for the sharded cluster checkpoint that represents the point in time to which your data will be restored.

Note

If you set checkpointId, you cannot set oplogInc, oplogTs, or pointInTimeUTCMillis.

If you provide this setting, this endpoint restores all data up to this checkpoint to the database you specify in the delivery object.

delivery object Method and details of how the restored snapshot data will be delivered.
delivery.expirationHours number Conditional: delivery.methodName" : "HTTP". Number of hours the download URL is valid once the restore job is complete.
delivery.maxDownloads number Conditional: delivery.methodName" : "HTTP". Number of times the download URL can be used. This must be 1 or greater.
delivery.methodName string

Means by which the data is delivered. Accepted values are:

  • AUTOMATED_RESTORE
  • HTTP

Note

If you set "delivery.methodName" : "AUTOMATED_RESTORE", you must also set:

  • delivery.targetGroupId and
  • delivery.targetClusterName or delivery.targetClusterId

In addition, the response shows the delivery.methodName as HTTP. An automated restore uses the HTTP method to deliver the restore job to the target host.

delivery.targetClusterId string

Conditional: delivery.methodName" : "AUTOMATED_RESTORE". Unique identifier of the target cluster. Use the clusterId returned in the response body of the Get All Snapshots and Get a Snapshot endpoints. For use only with automated restore jobs.

Note

If backup is not enabled on the target cluster, the Get All Snapshots endpoint returns an empty results array without clusterId elements, and the Get a Snapshot endpoint also does not return a clusterId element. Use the delivery.targetClusterName parameter instead or enable backup on the target cluster.

delivery.targetClusterName string

Conditional: delivery.methodName" : "AUTOMATED_RESTORE". Name of the target cluster. Use the clusterName returned in the response body of the Get All Snapshots and Get a Snapshot endpoints. For use only with automated restore jobs.

Note

If backup is not enabled on the target cluster, the Get All Snapshots endpoint returns an empty results array without clusterName elements, and the Get a Snapshot endpoint also does not return a clusterName element. Use the delivery.targetClusterName parameter instead or enable backup on the target cluster.

delivery.targetGroupId string Conditional: delivery.methodName" : "AUTOMATED_RESTORE". Unique identifier of the project that contains the destination cluster for the restore job.
oplogTs string

Conditional: "delivery.methodName" : "AUTOMATED_RESTORE" for Replica Sets Only. Oplog timestamp given as a timestamp in the number of seconds that have elapsed since the UNIX epoch. When paired with oplogInc, they represent the point in time to which your data will be restored.

Run a query against local.oplog.rs on your replica set to find the desired timestamp.

Note

If you set oplogTs, you:

  • Must set oplogInc.
  • Cannot set checkpointId or pointInTimeUTCMillis.

If you provide this setting, this endpoint restores all data up to and including this Oplog timestamp to the database you specified in the delivery object.

oplogInc string

Conditional: "delivery.methodName" : "AUTOMATED_RESTORE" for Replica Sets Only. 32-bit incrementing ordinal that represents operations within a given second. When paired with oplogTs, they represent the point in time to which your data will be restored.

Note

If you set oplogInc, you:

  • Must set oplogTs.
  • Cannot set checkpointId or pointInTimeUTCMillis.

If you provide this setting, this endpoint restores all data up to and including this Oplog timestamp to the database you specified in the delivery object.

pointInTimeUTCMillis long

Conditional: "delivery.methodName" : "AUTOMATED_RESTORE" for Replica Sets Only. A timestamp in the number of milliseconds that have elapsed since the UNIX epoch that represents the point in time to which your data will be restored. This timestamp must be within last 24 hours of the current time.

If you provide this setting, this endpoint restores all data up to this Point in Time to the database you specified in the delivery object.

Note

If you set pointInTimeUTCMillis, you cannot set oplogInc, oplogTs, or checkpointId.

snapshotId string Unique identifier of the snapshot to restore.

Response

Name Type Description
batchId string

Unique identifier of the batch to which this restore job belongs.

Only present for a restore of a sharded cluster.

clusterId string

Unique identifier of the cluster the restore job represents.

Only present for a restore of a cluster.

created string Timestamp in ISO 8601 date and time format in UTC when the restore job was requested.
delivery object Method and details of how the restored snapshot data shall be delivered.
delivery.expires string

Timestamp in ISO 8601 date and time format in UTC after which the URL is no longer available.

Only present if "delivery.methodName" : "HTTP".

delivery.expirationHours number

Number of hours the download URL is valid once the restore job is complete.

Only present if "delivery.methodName" : "HTTP".

delivery.maxDownloads number

Number of times the download URL can be used. This must be 1 or greater.

Only present if "delivery.methodName" : "HTTP".

delivery.methodName string

Means by which the data is delivered. Accepted values include:

  • HTTP
  • QUERY
delivery.statusName string

Current status of the downloadable file. Accepted values include:

  • NOT_STARTED
  • IN_PROGRESS
  • READY
  • FAILED
  • INTERRUPTED
  • EXPIRED
  • MAX_DOWNLOADS_EXCEEDED
delivery.url string

URL from which the restored snapshot data can be downloaded.

Only present if "delivery.methodName" : "HTTP".

encryptionEnabled boolean Indicates whether the restored snapshot data is encrypted.
groupId string Unique identifier of the project that owns the restore job.
hashes object array

If the corresponding delivery.url has been downloaded, each document in this array is a mapping of a restore file to a hashed checksum. This array is present only after the file is downloaded.

Note

For an HTTP restore, this array only contains a single object that represents the hash of the .tar.gz file.

hashes.typeName string Hashing algorithm used to compute the hash value. If present, this value is SHA1.
hashes.fileName string Name of the file that has been hashed.
hashes.hash string Hash of the file.
id string Unique identifier of the restore job.
links document array One or more links to sub-resources and/or related resources. The relations between URLs are explained in the Web Linking Specification
masterKeyUUID string

KMIP master key ID used to encrypt the snapshot data.

Only if encryptionEnabled is true for the snapshot.

snapshotId string Unique identifier of the snapshot to restore.
statusName string

Current status of the job. Accepted values include:

  • FINISHED
  • IN_PROGRESS
  • BROKEN
  • KILLED
timestamp object Timestamp of the Oplog entry when the snapshot was created.
timestamp.date string Timestamp in ISO 8601 date and time format in UTC of the latest oplog entry in the restored snapshot.
timestamp.increment string Order of all operations completed at the latest oplog entry in the restored snapshot.

Example Requests

Create a restore job that transfers a compressed snapshot using HTTP.

curl --user "{USERNAME}:{APIKEY}" --digest \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --include \
  --request POST "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/clusters/{CLUSTER-NAME}/restoreJobs?pretty=true" \
  --data '
   {
     "delivery" : {
       "expirationHours" : "1",
       "maxDownloads" : "1",
       "methodName" : "HTTP"
     },
     "snapshotId" : "{SNAPSHOT-ID}"
   }'

Create an automated restore from an Oplog timestamp. Valid for replica sets only.

curl --user "{USERNAME}:{APIKEY}" --digest \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --include \
  --request POST "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/clusters/{CLUSTER-NAME}/restoreJobs?pretty=true" \
  --data '
   {
     "delivery" : {
       "methodName" : "AUTOMATED_RESTORE",
       "targetGroupId" : "{TARGET-GROUP-ID}",
       "targetClusterName" : "{TARGET-CLUSTER-NAME}"
     },
     "oplogTs" : "1536610288",
     "oplogInc" : "1"
   }'

Create an automated restore from a specific point in time. Valid for replica sets only.

curl --user "{USERNAME}:{APIKEY}" --digest \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --include \
  --request POST "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/clusters/{CLUSTER-NAME}/restoreJobs?pretty=true" \
  --data '
   {
     "delivery" : {
       "methodName" : "AUTOMATED_RESTORE",
       "targetGroupId" : "{TARGET-GROUP-ID}",
       "targetClusterName" : "{TARGET-CLUSTER-NAME}"
     },
     "pointInTimeUTCMillis" : "1536610288000"
   }'

Create an automated restore from a checkpoint. Valid for sharded clusters only.

curl --user "{USERNAME}:{APIKEY}" --digest \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --include \
  --request POST "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/clusters/{CLUSTER-NAME}/restoreJobs?pretty=true" \
  --data '
   {
     "delivery" : {
       "methodName" : "AUTOMATED_RESTORE",
       "targetGroupId" : "{TARGET-GROUP-ID}",
       "targetClusterName" : "{TARGET-CLUSTER-NAME}"
     },
     "checkpointId" : "{CHECKPOINT-ID}"
   }'

Example Responses

{
  "batchId": "{BATCH-ID}",
  "clusterId": "{CLUSTER-ID}",
  "clusterName": "{CLUSTER-NAME}",
  "created": "2018-09-20T15:00:00Z",
  "delivery": {
    "expirationHours": 1,
    "maxDownloads": 1,
    "methodName": "HTTP",
    "statusName": "READY"
  },
  "encryptionEnabled": false,
  "groupId": "{GROUP-ID}",
  "id": "{RESTORE-JOB-ID}",
  "links": [{
    "href": "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/clusters/{CLUSTER-NAME}/restoreJobs/{RESTORE-JOB-ID}",
    "rel": "self"
  }],
  "pointInTime": false,
  "snapshotId": "{SNAPSHOT-ID}",
  "statusName": "FINISHED",
  "timestamp": {
    "date": "2018-09-15T15:53:00Z",
    "increment": 1
  }
}
{
  "batchId": "{BATCH-ID}",
  "clusterId": "{CLUSTER-ID}",
  "clusterName": "{CLUSTER-NAME}",
  "created": "2018-09-20T15:01:00Z",
  "delivery": {
    "methodName": "HTTP",
    "statusName": "READY"
  },
  "encryptionEnabled": false,
  "groupId": "{GROUP-ID}",
  "id": "{RESTORE-JOB-ID}",
  "links": [{
    "href": "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/clusters/{CLUSTER-NAME}/restoreJobs/{RESTORE-JOB-ID}",
    "rel": "self"
  }],
  "pointInTime": false,
  "snapshotId": "{SNAPSHOT-ID}",
  "statusName": "FINISHED",
  "timestamp": {
    "date": "2018-09-15T15:53:00Z",
    "increment": 1
  }
}
{
  "batchId": "{BATCH-ID}",
  "clusterId": "{CLUSTER-ID}",
  "clusterName": "{CLUSTER-NAME}",
  "created": "2018-09-20T15:02:00Z",
  "delivery": {
    "methodName": "HTTP",
    "statusName": "READY"
  },
  "encryptionEnabled": false,
  "groupId": "{GROUP-ID}",
  "id": "{RESTORE-JOB-ID}",
  "links": [{
    "href": "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/clusters/{CLUSTER-NAME}/restoreJobs/{RESTORE-JOB-ID}",
    "rel": "self"
  }],
  "snapshotId": "{SNAPSHOT-ID}",
  "statusName": "FINISHED",
  "timestamp": {
    "date": "2018-09-15T15:53:00Z",
    "increment": 1
  }
}
{
  "batchId": "{BATCH-ID}",
  "clusterId": "{CLUSTER-ID}",
  "clusterName": "{CLUSTER-NAME}",
  "created": "2018-09-20T15:03:00Z",
  "delivery": {
    "methodName": "HTTP",
    "statusName": "READY"
  },
  "encryptionEnabled": false,
  "groupId": "{GROUP-ID}",
  "id": "{RESTORE-JOB-ID}",
  "links": [{
    "href": "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/clusters/{CLUSTER-NAME}/restoreJobs/{RESTORE-JOB-ID}",
    "rel": "self"
  }],
  "snapshotId": "{SNAPSHOT-ID}",
  "statusName": "FINISHED",
  "timestamp": {
    "date": "2018-09-15T15:53:00Z",
    "increment": 1
  }
}