docs.rackspace.com/api



Similar documents
docs.rackspace.com/api

docs.rackspace.com/api

docs.rackspace.com/api

docs.rackspace.com/api

Acronis Backup & Recovery 11.5 Quick Start Guide

RackConnect User Guide

How To Create A Port On A Neutron.Org Server On A Microsoft Powerbook (Networking) On A Macbook 2 (Netware) On An Ipad Or Ipad On A

CA Nimsoft Service Desk

Interworks. Interworks Cloud Platform Installation Guide

efolder BDR for Veeam Cloud Connection Guide

Installation and Setup: Setup Wizard Account Information

docs.rackspace.com/api

NovaBACKUP. Storage Server. NovaStor / May 2011

Dell NetVault Backup Plug-in for Advanced Encryption 2.2. User s Guide

G-Lock EasyMail7. Admin Guide. Client-Server Marketing Solution for Windows. Copyright G-Lock Software. All Rights Reserved.

IBM Aspera Add-in for Microsoft Outlook 1.3.2

CTERA Agent for Mac OS-X

RSA Authentication Manager 7.1 Basic Exercises

CaseWare Time. CaseWare Cloud Integration Guide. For Time 2015 and CaseWare Cloud

How To Use Kiteworks On A Microsoft Webmail Account On A Pc Or Macbook Or Ipad (For A Webmail Password) On A Webcomposer (For An Ipad) On An Ipa Or Ipa (For

Veeam Backup Enterprise Manager. Version 7.0

ReadyNAS Replicate. Software Reference Manual. 350 East Plumeria Drive San Jose, CA USA. November v1.0

EMC Data Protection Search

Acronis SharePoint Explorer. User Guide

vcloud Air Platform Programmer's Guide

Jobs Guide Identity Manager February 10, 2012

Omniquad Exchange Archiving

Dell Statistica Statistica Enterprise Installation Instructions

DameWare Server. Administrator Guide

Veeam Cloud Connect. Version 8.0. Administrator Guide

Acronis Backup & Recovery 11.5

Dell One Identity Cloud Access Manager Installation Guide

CA Performance Center

Copyright 2013 Trend Micro Incorporated. All rights reserved.

QAD Enterprise Applications. Training Guide Demand Management 6.1 Technical Training

SafeNet Authentication Manager Express. Upgrade Instructions All versions

BDR for ShadowProtect Solution Guide and Best Practices

Policy Based Encryption E. Administrator Guide

Policy Based Encryption E. Administrator Guide

Copyright 2012 Trend Micro Incorporated. All rights reserved.

VMware/Hyper-V Backup Plug-in User Guide

Symantec Endpoint Protection Shared Insight Cache User Guide

User Manual. Onsight Management Suite Version 5.1. Another Innovation by Librestream

Lenovo Online Data Backup User Guide Version

2.6.1 Creating an Acronis account Subscription to Acronis Cloud Creating bootable rescue media... 12

CTERA Agent for Linux

Polycom CMA System Upgrade Guide

Quick Start Guide. Apptix Online Backup by Mozy (AOBM) Live Support:

Testing and Restoring the Nasuni Filer in a Disaster Recovery Scenario

NovaBACKUP Storage Server User Manual NovaStor / April 2013

NETWRIX ACCOUNT LOCKOUT EXAMINER

How to Secure a Groove Manager Web Site

Ekran System Help File

Synchronization Agent Configuration Guide

CTERA Agent for Mac OS-X

SOA Software: Troubleshooting Guide for Agents

WatchDox SharePoint Beta Guide. Application Version 1.0.0

How To Run Powermedia Xms On A Runspace Cloud Server On A Powermedia Media Server On An Ipad Or Ipad (For Free) On A Raspberry Powermedia (For A Powerpress) On An Ubuntu 2.5 (

Dell InTrust Preparing for Auditing Microsoft SQL Server

Vodafone PC Backup User Guide Version 1.16

ArCycle vmbackup. for VMware/Hyper-V. User Guide

Acronis Backup & Recovery 11

FOR WINDOWS FILE SERVERS

vsphere Replication for Disaster Recovery to Cloud

Manual POLICY PATROL SECURE FILE TRANSFER

Migrating to vcloud Automation Center 6.1

Cloud Elements! Marketing Hub Provisioning and Usage Guide!

Gladinet Cloud Backup V3.0 User Guide

HP ProtectTools Embedded Security Guide

ios Team Administration Guide (Legacy)

RSA Authentication Manager 7.1 to 8.1 Migration Guide: Upgrading RSA SecurID Appliance 3.0 On Existing Hardware

Administration Quick Start

1 of 10 1/31/2014 4:08 PM

EMC ViPR Controller. ViPR Controller REST API Virtual Data Center Configuration Guide. Version

CA Spectrum and CA Service Desk

TelePresence Migrating TelePresence Management Suite (TMS) to a New Server

Acronis Backup & Recovery 11 Virtual Edition

Windows Azure Pack Installation and Initial Configuration


Desktop Surveillance Help

Quick Install Guide. Lumension Endpoint Management and Security Suite 7.1

Request Manager Installation and Configuration Guide

Acronis Backup & Recovery Backing Up Microsoft Exchange Server Data

Fairsail REST API: Guide for Developers

IBM Endpoint Manager Version 9.2. Patch Management for SUSE Linux Enterprise User's Guide

WhatsUp Gold v16.3 Installation and Configuration Guide

Best Practices for Trialing the Intronis Cloud Backup and Recovery Solution

Dell Recovery Manager for Active Directory 8.6. Quick Start Guide

How To Install Powerpoint 6 On A Windows Server With A Powerpoint 2.5 (Powerpoint) And Powerpoint On A Microsoft Powerpoint 4.5 Powerpoint (Powerpoints) And A Powerpoints 2

WhatsUp Gold v16.2 Installation and Configuration Guide

Dell Enterprise Reporter 2.5. Configuration Manager User Guide

RealPresence Platform Director

Symantec Enterprise Vault

13.1 Backup virtual machines running on VMware ESXi / ESX Server

Transcription:

docs.rackspace.com/api

Rackspace Cloud Backup Developer API v1.0 (2015-06-30) 2015 Rackspace US, Inc. This document is intended for software developers interested in developing applications using the Rackspace Cloud Backup Application Programming Interface (API). The document is for informational purposes only and is provided AS IS. RACKSPACE MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE ACCURACY OR COM- PLETENESS OF THE CONTENTS OF THIS DOCUMENT AND RESERVES THE RIGHT TO MAKE CHANGES TO SPECIFICATIONS AND PROD- UCT/SERVICES DESCRIPTION AT ANY TIME WITHOUT NOTICE. RACKSPACE SERVICES OFFERINGS ARE SUBJECT TO CHANGE WITH- OUT NOTICE. USERS MUST TAKE FULL RESPONSIBILITY FOR APPLICATION OF ANY SERVICES MENTIONED HEREIN. EXCEPT AS SET FORTH IN RACKSPACE GENERAL TERMS AND CONDITIONS AND/OR CLOUD TERMS OF SERVICE, RACKSPACE ASSUMES NO LIABILITY WHATSOEVER, AND DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO ITS SERVICES INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. Except as expressly provided in any written license agreement from Rackspace, the furnishing of this document does not give you any license to patents, trademarks, copyrights, or other intellectual property. Rackspace, Rackspace logo and Fanatical Support are registered service marks of Rackspace US, Inc. All other product names and trademarks used in this document are for identification purposes only and are property of their respective owners. ii

Table of Contents 1. Overview... 1 1.1. Intended audience... 1 1.2. Document change history... 2 1.3. Additional resources... 3 1.4. API contract changes... 4 1.5. Pricing and service level... 4 1.6. Concepts... 4 1.6.1. Agent... 4 1.6.2. Backup configuration... 4 1.6.3. Restore... 4 1.6.4. Restore configuration... 4 1.6.5. Server setup... 4 2. General API information... 6 2.1. Authentication... 6 2.2. Role Based Access Control... 9 2.2.1. Assigning roles to account users... 9 2.2.2. Roles available for Cloud Backup... 9 2.2.3. Resolving conflicts between RBAC multiproduct vs. custom (product-specific) roles... 10 2.2.4. RBAC permissions cross-reference to Cloud Backup API operations... 10 2.3. Service access endpoints... 11 2.4. Rackspace Cloud Backup service versions... 11 2.4.1. Contract version... 11 2.4.2. List API version... 12 2.5. Request and response types... 12 2.6. Limits... 12 2.7. Faults and common issues... 13 3. API operations... 15 3.1. Agent operations... 16 3.1.1. List agent details... 17 3.1.2. Enable or disable an agent... 20 3.1.3. Enable volume encryption... 22 3.1.4. Change encryption password... 24 3.1.5. Delete agent... 26 3.1.6. Migrate vault... 27 3.1.7. Update agent backup behavior... 28 3.1.8. List agent details by host server ID... 32 3.2. User operations... 35 3.2.1. List all agents for this user... 36 3.2.2. Wake up agents... 40 3.3. Backup configuration operations... 41 3.3.1. Create backup configuration... 42 3.3.2. Update backup configuration... 48 3.3.3. List backup configuration details... 51 3.3.4. List all backup configurations for a user... 55 3.3.5. List all backup configurations for an agent... 60 3.3.6. Enable or disable a backup configuration... 65 3.3.7. Delete a backup configuration... 70 iii

3.4. Backup operations... 71 3.4.1. Start or stop a backup manually... 72 3.4.2. List backup details... 74 3.4.3. List completed backups... 77 3.4.4. Get a backup report... 79 3.5. Restore configuration operations... 81 3.5.1. Create a restore configuration... 82 3.5.2. Update a restore configuration... 86 3.5.3. Include or exclude a file in a restore configuration... 88 3.5.4. List included or excluded files in a restore configuration... 90 3.5.5. Delete a restore configuration... 92 3.6. Restore operations... 93 3.6.1. List backups available for a restore... 94 3.6.2. Start or stop a restore manually... 96 3.6.3. List details about a restore... 98 3.6.4. Get restore report... 102 3.7. Activity operations... 105 3.7.1. List activity for an agent... 106 3.7.2. List activity for a user... 109 Glossary... 112 iv

List of Tables 2.1. Cloud Backup product roles and permissions... 9 2.2. Multiproduct (Global) roles and permissions... 10 2.3. Regionalized service endpoints... 11 2.4. Limits for Cloud Backup... 12 v

List of Examples 2.1. Authentication request with multi-factor authentication credentials... 8 2.2. Example request URI (contract version in bold)... 11 2.3. Example list versions request... 12 3.1. List agent details: JSON request... 17 3.2. List agent details: JSON response... 19 3.3. Enable an agent: JSON request... 20 3.4. Disable an agent: JSON request... 21 3.5. Enable volume encryption: JSON request... 23 3.6. Enable volume encryption response... 23 3.7. Change encryption password: JSON request... 25 3.8. Change encryption password response... 25 3.9. Delete agent: JSON response... 26 3.10. Migrate vault: JSON request... 27 3.11. Update agent backup behavior: JSON request... 28 3.12. Update agent backup behavior: JSON response... 30 3.13. List agent details by host server ID: JSON request... 32 3.14. List agent details by host server ID: JSON response... 34 3.15. List all agents for this user: JSON request... 36 3.16. List all agents for this user: JSON response... 38 3.17. Wake up agents: JSON request... 40 3.18. Create backup configuration: JSON request... 44 3.19. Create backup configuration: JSON response... 46 3.20. Update backup configuration: JSON request... 50 3.21. List backup configuration details: JSON request... 51 3.22. List backup configuration details: JSON response... 53 3.23. List all backup configurations for a user: JSON response... 57 3.24. List all backup configurations for an agent: JSON request... 60 3.25. List all backup configurations for an agent: JSON response... 63 3.26. Enable or disable a backup configuration request... 65 3.27. Enable a backup configuration: JSON request... 65 3.28. Disable a backup configuration: JSON request... 66 3.29. Disable a backup configuration: JSON response... 68 3.30. Delete a backup configuration: JSON request... 70 3.31. Start a backup manually: JSON request... 73 3.32. Stop a backup manually: JSON request... 73 3.33. Start a backup manually response... 73 3.34. List backup details: JSON request... 74 3.35. List backup details: JSON response... 75 3.36. List completed backups: JSON request... 77 3.37. List completed backups: JSON response... 78 3.38. Get a backup report: JSON request... 79 3.39. Get a backup report: JSON response... 79 3.40. Create a restore configuration: JSON request... 83 3.41. Create a restore configuration: JSON response... 85 3.42. Update a restore configuration: JSON request... 87 3.43. Include a file in a restore configuration: JSON request... 89 3.44. List included or excluded files in a restore configuration: JSON request... 91 3.45. Delete a restore configuration: JSON request... 92 vi

3.46. List backups available for a restore: JSON request... 94 3.47. List backups available for a restore: JSON response... 94 3.48. Start encrypted restore: JSON request... 96 3.49. Start unencrypted restore: JSON request... 97 3.50. Stop restore manually: JSON request... 97 3.51. List details about a restore: JSON request... 98 3.52. List details about a restore: JSON response... 100 3.53. Get restore report: JSON request... 102 3.54. Get restore report: JSON response... 104 3.55. List activity for an agent: JSON request... 106 3.56. List activity for an agent: JSON response... 107 3.57. List activity for a user: JSON request... 109 3.58. List activity for a user: JSON response... 110 vii

1. Overview Rackspace Cloud Backup is a file-based backup application that enables you to choose which files and folders to back up from your cloud server. You can choose to restore your whole system with all of its folders and files, or to restore individual files or folders from a given date, or to restore to an entirely different server. Interactions with Rackspace Cloud Backup occur programmatically via the Rackspace Cloud Backup API, as described in this guide. Following are some of the tasks you can perform using Rackspace Cloud Backup: Select the files and folders that you want to back up from your cloud server. Run your backups manually or on a schedule that works for you. See the activity from all your backups, for both current and previous backups. Use AES-256 encryption with a private encryption key known only to you. Restore individual files and folders from a particular date. Save space with incremental backups that save only the changed portions of files. Create unlimited backups. Choose your backup endpoint based on the location of the server that you want to use for backup or for restore. For a list of endpoints, see Section 2.3, Service access endpoints [11]. Note Rackspace Cloud Backup does not take snapshots of your server. To read more about how Rackspace Cloud Backup differs from snapshots, see "Rackspace Cloud Backup vs. Cloud Server Image Backups" in the Rackspace Knowledge Center. 1.1. Intended audience This guide is intended to assist software developers who want to develop applications by using the Rackspace Cloud Backup API. It assumes the reader has a general understanding of storage and is familiar with the following items: RESTful web services HTTP/1.1 conventions JSON data serialization formats 1

1.2. Document change history This version of this guide replaces and obsoletes all earlier versions. The most recent changes are described in the following table: Revision Date June 30, 2015 April 23, 2015 March 4, 2015 January 14, 2015 September 2, 2014 Added the Limits section. Summary of Changes Corrected links in Assigning roles to account users. Removed the London endpoint, since Rackspace now has one global endpoint for authentication using the Rackspace Cloud Identity service. See Section 2.1, Authentication [6]. Added information and links about multi-factor authentication in Section 2.1, Authentication [6]. The following additions were made to enhance Cloud Backup to enable cross-datacenter restores: July 22, 2014 April 14, 2014 February 14, 2014 Added the BackupDataCenter parameter to the following operations in Section 3.5, Restore configuration operations [81]: As a request and response parameter to the operation to create a restore configuration As a request parameter to the operation to update a restore configuration Added the BackupDataCenter parameter to the following operation in Section 3.6, Restore operations [93] : As a response parameter to the operation to list details about a restore Added the BackupId parameter to the following operations in Section 3.7, Activity operations [105]: As a response parameter to the operation to list the activity for an agent As a response parameter to the operation to list the activity for a user Added a link to guidance on choosing a regionalized endpoint in Section 2.3, Service access endpoints [11]. Reworked Chapter 3, API operations [15] to use a Web Application Description Language (WADL) file for the operation descriptions. Added the change encryption password operation. February 5, 2014 Added Section 2.2, Role Based Access Control [9]. January 28, 2014 January 10, 2014 December 31, 2013 Updated the description of the lists agent details operation to include instructions to retrieve the correct values for TimeOfLastSuccessfulBackup, as well as Status. Added the BackupContainer response parameter to the lists agent details operation. Added a note that describes how to handle an agent with a Status of Offline that is not posting any heartbeats to the description of the lists agent details operation. Added a note to the description of the list agent details operation that Status is always Offline for this operation request. Changed the normal response code from 200 to 204 for the delete restore configuration operation. Added the BackupMachineId parameter description to the create restore configuration operation. November 4, 2013 Updated the instructions for locating the API key, Tenant ID, and account number in the Cloud Control Panel in Section 2.1, Authentication [6]. Added the wake up agent operation. Changed the service access endpoint in the examples in Chapter 3, API operations [15] from the generic endpoint, https://backup.api.rackspacecloud.com, to one of the supported endpoints, https://dfw.backup.api.rackspacecloud.com. 2

Revision Date Summary of Changes October 21, 2013 Added the HKG service endpoint to Section 2.3, Service access endpoints [11]. October 16, 2013 September 11, 2013 Added the HostServerId response parameter to the list agent details operation. Added the list agent details by host server ID operation to Section 3.1, Agent operations [16]. Added the MachineAgentId request parameter to the create backup configuration operation. July 31, 2013 Added the migrate vault operation to Section 3.1, Agent operations [16]. Added the update agent backup behavior operation to Section 3.1, Agent operations [16]. Updated regionalized service endpoints and added IAD (Section 2.3, Service access endpoints [11]). June 24, 2013 Added the request and response parameter descriptions to the operations in Chapter 3, API operations [15]. Corrected examples in the operation description to manually start a restore. Updated information about the use of authentication endpoints in Section 2.1, Authentication [6]. You can now use either the US endpoint or UK endpoint to access the Cloud Identity service, regardless of US or UK identities. Removed the Date/Time section. The Cloud Backup API now supports only Microsoft Date Format and not ISO. Added Sydney (SYD) data center to datacenter specifications. Removed the Help operations section that was at the end of the book as these are classified as internal calls. June 5, 2013 May 20, 2013 April 17, 2013 March 5, 2013 Changed all occurrences of raxtestaddress@gmail.com to raxtestaddress@rackspace.com. Updated the example for creation of a backup configuration request to include "MachineAgentId" near top of example. Changed Rackspace control panel to Cloud Control Panel in Section 2.1, Authentication [6]. Removed limits. Created initial document. 1.3. Additional resources For information about getting started using Cloud Backup using curl, refer to the Cloud Backup Getting Started at docs.rackspace.com. You can download the most current versions of the API-related documents from docs.rackspace.com. For more information about using the Cloud Backup API with curl, see the blog post Rackspace Cloud Backup API with curl. Additional information about Cloud Backup is also available in the Rackspace Knowledge Center at Best Practices for Cloud Backup. For information about Rackspace Cloud products, see www.rackspace.com/cloud. This site also offers links to the official support channels for Rackspace, including knowledge base articles, forums, phone, chat, and email. You can follow Rackspace updates and announcements via twitter at: www.twitter.com/ rackspace. 3

This API uses standard HTTP 1.1 response codes as documented at: www.w3.org/protocols/rfc2616/rfc2616-sec10.html. 1.4. API contract changes Rackspace notifies customers in release notes when and if the contract changes. 1.5. Pricing and service level Cloud Backup is part of the Rackspace Cloud and your use of the Cloud Backup API will be billed according to the pricing schedule at http://www.rackspace.com/cloud/backup/pricing/. Although Cloud Backup does not provide a service level agreement (SLA), applicable SLAs for the underlying infrastructure, such as Cloud Files, apply. 1.6. Concepts To use the Rackspace Cloud Backup API effectively, you should understand several key concepts: 1.6.1. Agent An agent is an executable that sits on your cloud server that knows how to perform backups and restores. Agent installation currently supports Windows and Unix or Linux platforms. 1.6.2. Backup configuration Backup configuration defines what needs to be backed up and when it needs to be backed up. The backup configuration includes a schedule for the backup, files to back up, and notifications. 1.6.3. Restore Restore is a process of bringing your system back to a previously saved state, usually by using a backup as the checkpoint. 1.6.4. Restore configuration A restore configuration defines what the restore checkpoint is and the where the backup should be restored. 1.6.5. Server setup Because Cloud Backup is a file-level backup product, you must configure a separate backup for each cloud server and that a backup does not automatically apply to an entire environment. You must select the files and folders you want to back up from your cloud serv- 4

er. This setup requirement applies to Rackspace Cloud Servers, including the Performance Cloud Servers offering. 5

2. General API information The Rackspace Cloud Backup API is implemented using a RESTful web service interface. Like other products in the Rackspace Cloud suite, Rackspace Cloud Backup shares a common token-based authentication system that allows seamless access between products and services. Note 2.1. Authentication All requests to authenticate against and operate the service are performed using SSL over HTTP (HTTPS) on TCP port 443. Every REST request against the Rackspace Cloud Backup Service requires the inclusion of a specific authorization token, supplied by the X-Auth-Token HTTP header. Customers obtain this token by first using the Rackspace Cloud Identity Service and supplying a valid user name and API access key. To authenticate, submit a POST/v2.0/tokens request, presenting valid Rackspace customer credentials in the message body to a Rackspace authentication endpoint. GET YOUR CREDENTIALS You can use either of two sets of credentials: your user name and password your user name and API key Your user name and password are the ones that you use to login to the Cloud Control Panel. After you are logged in, you can use the Cloud Control Panel to obtain your API key. Note To find your API key: If you authenticate with username and password credentials, you can set up multi-factor authentication to add an additional level of security to your account. This feature is not available for username and API credentials. For information about setting up and using multi-factor authentication, see Multi-factor authentication in the Cloud Identity Client Developer. 1. Log in to the Cloud Control Panel (https://mycloud.rackspace.com). 2. On the upper-right side of the top navigation pane, click your username. 3. From the menu, select Account Settings. 4. In the Login Details section of the Account Settings page, locate the API Key field and click Show. 6

5. Copy the value of the API key and paste it into a text editor of your choice. 6. Click Hide to hide the value of the API key. You also need your cloud account number. In the documentation, the account number is often referred to as your tenant name or tenant ID (technically, the ID is different from the name, but at Rackspace, they are the same thing). Together, three components your user name, your API key, and your tenant ID or cloud account number form the authentication credentials that are required to connect to the Rackspace cloud. To find your tenant ID or cloud account number, locate your user name on the upper-right side of the top navigation pane in the Cloud Control Panel. The tenant ID or account number is in parentheses just to the right of your user name. USE YOUR AUTHENTICATION ENDPOINT Use the following global endpoint to access the Cloud Identity Service: https://identity.api.rackspacecloud.com/v2.0/ SEND YOUR CREDENTIALS TO YOUR AUTHENTICATION ENDPOINT If you know your credentials and your authentication endpoint, and you can issue a POST /v2.0/tokens request in an API call, you have all the basic information that you need to use the Rackspace Cloud Identity Service. You can use curl to try the authentication process in two steps: 1) get a token; 2) send the token to a service. 1. Get an authentication token by providing your user name and either your API key or your password. Following are examples of both approaches: You can request a token by providing your user name and your API key. curl -X POST https://auth.api.rackspacecloud.com/v2.0/tokens -d ' "auth": "RAX-KSKEY:apiKeyCredentials": "username":"yourusername", "apikey":"yourapikey" } } }' -H "Content-type: application/json" You can request a token by providing your user name and your password. curl -X POST https://auth.api.rackspacecloud.com/v2.0/tokens -d '"auth":"passwordcredentials": "username":"yourusername","password":"yourpassword"}}}' -H "Content-type: application/json" 2. Review the authentication response. Successful authentication returns a token that you can use as evidence that your identity has already been authenticated along with a service catalog, which lists the endpoints that you can use for Rackspace Cloud services. To use the token, pass it to other services as an X-Auth-Token header. If the Identity service returns a returns a 401 message with a request for additional credentials, your account requires multi-factor authentication. To complete the au- 7

thentication process, submit a second POST tokens request with these multi-factor authentication credentials: The session ID value returned in the WWW-Authenticate: OS-MF sessionid header parameter that is included in the response to the initial authentication request. The passcode from the mobile phone associated with your user account. Example 2.1. Authentication request with multi-factor authentication credentials $curl https://identity.api.rackspacecloud.com/v2.0/tokens \ -X POST \ -d '"auth": "RAX-AUTH:passcodeCredentials": "passcode":"1411594"}}}'\ -H "X-SessionId: $SESSION_ID" \ -H "Content-Type: application/json" --verbose python -m json.tool 3. Use the authentication token to send a GET to a service you would like to use. Here is an example of passing an authentication token to the Cloud Files service, using the Cloud Files service catalog endpoint that was returned along with the token. curl -X GET https://storage101.dfw1.clouddrive.com/v1/mossocloudfs_aaaaaaaabbbb-cccc-dddd-eeeeeeee -H 'X-Auth-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' --verbose Tip For links to language binding examples you can adapt to work with the Cloud Identity service, visit docs.rackspace.com/sdks/guide/content/index.html. Authentication tokens are typically valid for 24 hours. Applications should be designed to re-authenticate after receiving a 401 (Unauthorized) response from a service endpoint. Important If you are programmatically parsing an authentication response, be aware that service names are stable for the life of the particular service and can be used as keys. You should also be aware that a user's service catalog can include multiple uniquely-named services that perform similar functions. For example, cloud- ServersOpenStack is the OpenStack version of compute whereas cloudservers is the legacy version of compute. The same user can have access to both services. In the Cloud Identity Service v2.0, the service type attribute can be used as a key to recognize similar services. See the following tip. Tip Beginning with Rackspace Cloud Identity Service v2.0 (earlier versions were called Rackspace Cloud Authentication Service), the service catalog includes a service type attribute to identify services that perform similar functions but have different names; for example, type="compute" identifies compute services such as cloudservers and cloudserversopenstack. Some developers have found the service type attribute to be useful in parsing the service catalog. For Cloud Identity Service v2.0, you can see the service type attribute in the "Service Catalog in Authentication Response" samples in the Cloud Identity Client 8

Developer at http://docs.rackspace.com/auth/api/v2.0/auth-client-devguide/content/sample_request_response-d1e64.html. 2.2. Role Based Access Control Role Based Access Control (RBAC) restricts access to the capabilities of Rackspace Cloud services, including the Cloud Backup API, to authorized users only. RBAC enables Rackspace Cloud customers to specify which account users of their Cloud account have access to which Cloud Backup API service capabilities, based on roles defined by Rackspace (see Table 2.1, Cloud Backup product roles and permissions [9]). The permissions to perform certain operations in Cloud Backup API create, read, update, delete are assigned to specific roles, and these roles can be assigned by the Cloud account admin user to account users of the account. 2.2.1. Assigning roles to account users The account owner (identity:user-admin) can create account users on the account and then assign roles to those users. The roles grant the account users specific permissions for accessing the capabilities of the Cloud Backup service. Each account has only one account owner, and that role is assigned by default to any Rackspace Cloud account when the account is created. See the Cloud Identity Client Developer for information about how to perform the following tasks: Add account users Assign roles to account users Delete roles from account users Note The account owner (identity:user-admin) role cannot hold any additional roles because it already has full access to all capabilities. 2.2.2. Roles available for Cloud Backup Three roles (admin, creator, and observer) can be used to access the Cloud Backup API specifically. The following table describes these roles and their permissions. Table 2.1. Cloud Backup product roles and permissions Role name cloudbackup:admin cloudbackup:creator cloudbackup:observer Role permissions This role provides Create, Read, Update, and Delete permissions in Cloud Backup, where access is granted. This role provides Create, Read, and Update permissions in Cloud Backup, where access is granted. This role provides Read permission in Cloud Backup, where access is granted. Additionally, two multiproduct roles apply to all products. Users with multiproduct roles inherit access to future products when those products become RBAC-enabled. The following table describes these roles and their permissions. 9

Table 2.2. Multiproduct (Global) roles and permissions Role name admin observer Role permissions This role provides Create, Read, Update, and Delete permissions in all products, where access is granted. This role provides Read permission in all products, where access is granted. 2.2.3. Resolving conflicts between RBAC multiproduct vs. custom (product-specific) roles The account owner can set roles for both multiproduct and Cloud Backup scope, and it is important to understand how any potential conflicts among these roles are resolved. When two roles appear to conflict, the role that provides the more extensive permissions takes precedence. Therefore, admin roles take precedence over observer and creator roles, because admin roles provide more permissions. The following table shows two examples of how potential conflicts between user roles in the Control Panel are resolved: Permission configuration User is assigned the following roles: multiproduct observer and Cloud Backup admin User is assigned the following roles: multiproduct admin and Cloud Backup observer View of permission in the Control Panel Appears that the user has only the multiproduct observer role Appears that the user has only the multiproduct admin role Can the user perform product admin functions in the Control Panel? Yes, for Cloud Backup only. The user has the observer role for the rest of the products. Yes, for all of the products. The Cloud Backup observer role is ignored. 2.2.4. RBAC permissions cross-reference to Cloud Backup API operations API operations for Cloud Backup may or may not be available to all roles. To see which operations are permitted to invoke which calls, please review the Knowledge Center article. 10

2.3. Service access endpoints The Rackspace Cloud Backup Service is a regionalized service. The user of the service is therefore responsible for appropriate replication, caching, and overall maintenance of Rackspace Cloud Backup data across regional boundaries to other Rackspace Cloud Backup servers. You can find the available service endpoints for Rackspace Cloud Backup in the following table. To help you decide which regionalized endpoint to use, read the Knowledge Center article about special considerations for choosing a data center at About Regions. Table 2.3. Regionalized service endpoints Region Dallas/Ft. Worth (DFW) Chicago (ORD) London (LON) Hong Kong (HKG) Northern Virginia (IAD) Sydney (SYD) Endpoint https://dfw.backup.api.rackspacecloud.com/v1.0/1234/ https://ord.backup.api.rackspacecloud.com/v1.0/1234/ https://lon.backup.api.rackspacecloud.com/v1.0/1234/ https://hkg.backup.api.rackspacecloud.com/v1.0/1234/ https://iad.backup.api.rackspacecloud.com/v1.0/1234/ https://syd.backup.api.rackspacecloud.com/v1.0/1234/ Replace the sample account ID number (which is also called the tenant ID), 1234, with your actual account number that is returned as part of the Cloud Identity service response. You will find the actual account number after the final '/' in the publicurl field returned by the authentication response. Note The Cloud Backup API runs with or without the specification of the account ID number in the endpoint. However, the examples in this guide include the account number in the request URIs. 2.4. Rackspace Cloud Backup service versions The Rackspace Cloud Backup version defines the contract and build information for the API. 2.4.1. Contract version The contract version denotes the data model and behavior that the API supports. The contract version is included in all request URIs. Different contract versions of the API might be available at any given time and are not guaranteed to be compatible with one another. Example 2.2. Example request URI (contract version in bold) https://dfw.backup.api.rackspacecloud.com/v1.0/1234/ 11

2.4.2. List API version You can list which API versions are available for your account by using the list versions request. Issue a GET request to the root endpoint for a service. In the request, truncate the version and everything to the right of it. For example: Example 2.3. Example list versions request GET HTTP/1.1 Host: https://dfw.backup.api.rackspacecloud.com/ This operation does not require a request body. Normal Response Codes: 200, 203 Error Response Codes: 400, 413, 500, 503 2.5. Request and response types The Rackspace Cloud Backup API supports only JSON data serialization format. Note 2.6. Limits The request format is specified using the Content-Type: application/json header and is required for calls that have a request body. If no response format is specified, JSON is the default. All accounts, by default, have a preconfigured set of thresholds (or limits) to manage capacity and prevent abuse of the system. The following table lists the limits for Cloud Backup. Table 2.4. Limits for Cloud Backup Limit Maximum number of backup configurations per agent Maximum number of exclusions and inclusions per backup configuration Maximum length of file paths in the configuration Description The number of backup configurations per agent is limited only by the maximum JSON document size for the agent configuration. (The agent configuration contains all of the configuration information specific to an agent.) Currently, the maximum JSON document size is 1 MB for the total document. The maximum number of exclusions and inclusions per backup configuration is limited only by the maximum JSON document size for the agent configuration. (The agent configuration contains all of the configuration information specific to an agent.) Currently, the maximum JSON document size is 1 MB for the total document. The maximum length of file paths in the configuration is limited first by the maximum JSON document size of the agent configuration (see the preceding limit) and then by the operating system (OS) limitations. See the documentation for your OS for the exact maximum size of file paths on your OS. 12

Limit Maximum backup upload speeds CPU usage limits Simultaneous uploads Disk space limits for the cache drive Really Simple Events (RSE) throttling levels Description The maximum upload speed of a backup is currently 2 MB per second but that speed depends on multiple factors including Cloud Files server load, network bandwidth, number of CPUs, noisy neighbors, duplicate blocks, and similar items. These factors can reduce the upload speed of a backup by varying amounts. However, duplicate or existing blocks actually increase the speed because uploads are not necessary for those blocks. During an operation like a backup or restore, CPU usage limits are 95 percent by default. Simultaneous uploads are based on available CPUs. If a server has one or two CPUs, the agent uses one CPU for its work. If a server has three or four CPUs, the agent uses two CPUs. If a server has five or six CPUs, the agent uses three CPUs. If the server has more than six CPUs, the agent uses no more than four CPUs. The disk space of the cache drive is where the agent stores log and database files, as well as temporary files. Currently, if this drive has less than 100 MB free space, Cloud Backup throttles logging and posts a message to the logs. Currently, the total size of the rollover logs is set to 10 files at 500 MB by default, but you can edit the log4cxx.xml file to change this value on a per-machine basis.. RSE communicates with the agent. RSE throttling levels control the traffic to RSE and are defined based on the state of the agent: Idle once every 30 seconds, Active once every 2 seconds, and Realtime continuous. 2.7. Faults and common issues When an error occurs, the Rackspace Cloud Backup Service returns a fault object containing an HTTP error response code that denotes the type of error. In the body of the response, the system returns additional information about the fault. The following table lists possible fault types with their associated error codes and descriptions. Fault type Associated error code Description Bad Request 400 There was one or more errors in the user request. Unauthorized 401 The supplied token is not authorized to access the resources, either it's expired or invalid. Forbidden 403 Access to the requested resource was denied. Not Found 404 The back-end services did not find anything matching the Request-URI. Instance Fault 500 This is a generic server error and the message contains the reason for the error. This error could wrap several error messages and is a catch all. Not Implemented 501 The requested method or resource is not implemented. Service Unavailable 503 The Rackspace Cloud Backup Service is not available. The symptoms and solutions for some frequently encountered issues follow. Backups get corrupted Does your server have a backup agent and did you clone it to create a new backup system? This means that two backup agents exist with the same credentials writing to the same vault. Solution: Ensure the agent on the cloned backup server is re-registered before any backups are run. 13

Backups get network error Solution: Make sure that your backup server has a connection to both service net and public net. If it is on an isolated network, the backup agent is able to function properly. Backups sometimes fail This is most commonly caused by either a failure to communicate with Cloud Files, running out of disk space, or a failure to communicate with Cloud Backup. Sometimes the agent might fail to backup a particular file because of a permissions error. Either the file is in use when the agent attempts to save it or the file in question cannot be read by the agent. Consider permissions when hunting for the root cause of a backup failure. Solution: Make sure that you're running the latest agent release. After that, attempt to determine the cause of the error, and try the backup or restore again if it is an intermittent error. Backup or Restore is slow If your backup or restore is encrypted, it can be especially slow. Encryption comes at a cost. If your system uses Cloud Block Storage as the storage medium, this is known to introduce some slowdowns. Consider whether the benefits of using Cloud Block Storage outweigh the need for faster backups/restores. Solution: Make sure that you're running the latest agent release. After that, attempt to determine the cause of the error, and try the backup or restore again if it is an intermittent error. We're always working on making backup more robust. 14

3. API operations This section includes descriptions of all of the Cloud Backup API operations. Method URI Description GET /v1.0/tenant_id}/agent/machineagentid} Agent operations Lists details about the machine and its agent. POST /v1.0/tenant_id}/agent/encrypt Enables volume encryption. POST Changes the encryption password. POST /v1.0/tenant_id}/agent/delete Immediately permanently deletes an agent and its backup data. PUT POST GET POST /v1.0/tenant_id}/agent/enable Enables or disables an agent. Disabling an agent does not delete it or its data. You can re-enable disabled agents later. /v1.0/tenant_id}/agent/changeencryption /v1.0/tenant_id}/agent/migratevault User operations Updates the backup data center, or enables or disables ServiceNet for the Cloud Backup agent, or both. Lists details about the machine and its agent using the host server ID. GET /v1.0/tenant_id}/user/agents Retrieves information for all agents for the current user. POST POST PUT GET GET GET POST DELETE POST GET GET GET Migrates a backup vault from one machine agent to another. /v1.0/tenant_id}/agent/machineagentid} /v1.0/tenant_id}/agent/server/hostserverid} /v1.0/tenant_id}/user/wakeupagents /v1.0/tenant_id}/backup-configuration /v1.0/tenant_id}/backup-configuration/backupconfigurationid} /v1.0/tenant_id}/backup-configuration/backupconfigurationid} Lists detailed information for the specified backup configuration. /v1.0/tenant_id}/backup-configuration /v1.0/tenant_id}/backup-configuration/system/machineagentid} /v1.0/tenant_id}/backup-configuration/enable/backupconfigurationid} /v1.0/tenant_id}/backup-configuration/backupconfigurationid} /v1.0/tenant_id}/backup/action-requested /v1.0/tenant_id}/backup/backupid} /v1.0/tenant_id}/backup/completed/backupconfigurationid} /v1.0/tenant_id}/backup/report/backupid} Backup configuration operations Backup operations Restore configuration operations Wakes up the agent before you perform tasks. Creates a backup configuration for the authenticated user. Returns details of a backup configuration. Updates an existing backup configuration. Lists all backup configurations for the current user. Lists the backup configurations for the specified agent. Enables or disables a backup configuration. Deletes the specified backup configuration. Manually starts or stops a backup. Returns the identifier of the instance of the backup. Lists details about the specified backup. Lists the details for backups that can still be restored. Gets details about a completed backup. 15

Method URI Description PUT /v1.0/tenant_id}/restore Creates a new restore configuration and returns detailed information about the restore. POST /v1.0/tenant_id}/restore Updates an existing restore configuration. PUT /v1.0/tenant_id}/restore/files Creates a restore file associated with a restore. GET DELETE GET POST GET GET GET /v1.0/tenant_id}/restore/files/ restoreid} /v1.0/tenant_id}/restore/files/ restoreid} Restore operations Activity operations Lists files that are included or excluded in a restore. Deletes a restore configuration file. Lists the backups that are eligible for restore (a backup that has completed at least once and has not been deleted and is not expired). Manually starts or stops a restore. Lists details about the specified restore. Gets a report for the specified, completed restore. Lists all in-progress and completed activity for an agent. Activity types are Backup, Cleanup, and Restore. GET /v1.0/tenant_id}/activity Lists all activity completed or in-progress for the user. 3.1. Agent operations This section describes the agent operations that are supported by the Cloud Backup API. Method URI Description GET /v1.0/tenant_id}/backup/availableforrestore /v1.0/tenant_id}/restore/action-requested /v1.0/tenant_id}/restore/restoreid} /v1.0/tenant_id}/restore/report/restoreid} /v1.0/tenant_id}/system/activity/agentid} /v1.0/tenant_id}/agent/machineagentid} Lists details about the machine and its agent. POST /v1.0/tenant_id}/agent/encrypt Enables volume encryption. POST Changes the encryption password. POST /v1.0/tenant_id}/agent/delete Immediately permanently deletes an agent and its backup data. PUT POST GET POST /v1.0/tenant_id}/agent/enable Enables or disables an agent. Disabling an agent does not delete it or its data. You can re-enable disabled agents later. /v1.0/tenant_id}/agent/changeencryption /v1.0/tenant_id}/agent/migratevault Migrates a backup vault from one machine agent to another. /v1.0/tenant_id}/agent/machineagentid} /v1.0/tenant_id}/agent/server/hostserverid} Updates the backup data center, or enables or disables ServiceNet for the Cloud Backup agent, or both. Lists details about the machine and its agent using the host server ID. 16

3.1.1. List agent details Method URI Description GET /v1.0/tenant_id}/agent/machineagentid} Note Lists details about the machine and its agent. If the agent Status is showing as Offline, it is possible that the Cloud Backup agent might be idle and not posting any heartbeats. You can wake up your Cloud Backup agent by using the operation described in "Wake up agents". You should wait 10-20 seconds after using this operation to determine the online status of the agent reliably. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.1.1.1. Request This table shows the URI parameters for the list agent details request: Name Type Description tenant_id} String The unique identifier of the tenant or account. machineagentid} Integer The unique identifier of the Cloud Backup agent. Example 3.1. List agent details: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/agent/213564 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.1.1.2. Response This list shows the body parameters for the response: parameters: 17

AgentVersion: Version of the Rackspace Cloud Backup agent. Architecture: Base architecture of the Cloud Server. Valid values are 64-bit or 32-bit. Flavor: RaxCloudServer for Rackspace Cloud Servers. BackupVaultSize: Size of backup data in MB. BackupContainer: Full public URI for Cloud Files where backups are stored for this agent. CleanupAllowed: Indicates whether a cleanup can be manually triggered on the backup vault. Valid values are true or false. Datacenter: Data center where the Cloud Server is located. Valid values are IAD, ORD, DFW, HKG, LON, or SYD). IPAddress: Public IPv4 address of the Cloud Server. IsDisabled: Indicates if the Rackspace Cloud Backup agent on the server is disabled. Valid values are true or false. IsEncrypted: Indicates if backups are encrypted. Valid values are true or false. MachineAgentId: ID that uniquely identifies a Cloud Backup agent. MachineName: Name of the Cloud Server. OperatingSystem: Operating system of Cloud Server. 18

OperatingSystemVersion: Operating system version of Cloud Server. PublicKey: Public key of the public/private encryption key pair. Status: Status of the Cloud Backup agent. Valid values are Online or Offline. TimeOfLastSuccessfulBackup: Time of last successful backup. UseServiceNet: Indicates if the Cloud Backup agent is using ServiceNet to backup data to Cloud Files. Valid values are true or false. HostServerId: Server ID of the host server where the Cloud Backup agent is running. Example 3.2. List agent details: JSON response "AgentVersion": "1.05.005848", "Architecture": "64-bit", "Flavor": "RaxCloudServer", "BackupVaultSize": "35.3 MB", "CleanupAllowed": true, "Datacenter": "DFW", "IPAddress": "192.168.1.1", "IsDisabled": false, "IsEncrypted": true, "MachineAgentId": 213564, "MachineName": "Web Server", "OperatingSystem": "Windows Server 2012", "OperatingSystemVersion": "", "PublicKey": "ModulusHex": "a5261939156948bb7a58dffe5ff89e65f0498f9175f5a 98288810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d4 61d0d30cf0192e307727c065168c788771c561a9400fb61975e9e6aa4e23 fe11af69e9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4a cd36074eafd036a5eb83359d2a698d0", "ExponentHex": "09528" }, "Status": "Online", "TimeOfLastSuccessfulBackup": "\/Date(1357817400000)\/", "UseServiceNet": true, } "HostServerId" : "87c3b6e1-fb1a-41f9-91e5-313ae35a5a06" 19

3.1.2. Enable or disable an agent Method URI Description POST /v1.0/tenant_id}/agent/enable Enables or disables an agent. Disabling an agent does not delete it or its data. You can re-enable disabled agents later. Note Encryption is important for keeping your data confidential. However, encryption is also expensive. It takes significantly longer to backup and restore encrypted data. Consider if the data you are storing must be encrypted. If not, it is best to proceed without encryption. Encryption applies across the board, and once you encrypt a backup server, there is no turning back. This table shows the possible response codes for this operation: Response Code Name 204 No Content The request succeeded. Description 400 Bad request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.1.2.1. Request This table shows the URI parameters for the enable or disable an agent request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This list shows the body parameters for the request: parameters: MachineAgentId: Required. ID that uniquely identifies a Cloud Backup agent. Enable: Required. Indicates if agent is enabled (true) or disabled (false). Example 3.3. Enable an agent: JSON request 20

} "MachineAgentId": 92384579, "Enable": true Example 3.4. Disable an agent: JSON request } "MachineAgentId": 92384579, "Enable": false 3.1.2.2. Response This operation does not return a response body. 21

3.1.3. Enable volume encryption Method URI Description POST /v1.0/tenant_id}/agent/encrypt Enables volume encryption. This operation enables volume encryption with AES-256 encryption if it is not already enabled. If you need assistance generating your encrypted key, see "Generating Your Encrypted Key In Cloud Backup" in the Rackspace Knowledge Center. Note After encryption is turned on, you cannot turn it off. This is a security measure. If anyone ever gained access to your account, they would not be able to access your backups without your passphrase. If you lose or forget your passphrase, you will not be able to recover your encrypted backups. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.1.3.1. Request This table shows the URI parameters for the enable volume encryption request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This list shows the body parameters for the request: parameters: MachineAgentId: Required. ID that uniquely identifies a Cloud Backup agent. EncryptedPasswordHex: Required. Your encrypted password. 22

Example 3.5. Enable volume encryption: JSON request "MachineAgentId" : 869, "EncryptedPasswordHex" : "0bff42a526c78076a3d986fa75eecd 83211f166fd7692797cdde2317faee544e3300614fd54b8c0d81f975 3e58cb1ffbd62d3faf0d2bf52e79ce5cd9c6d84b5295e3dea629e71b 0a5e26efda50ff8e05a5475bb7cbd553d238c05655f56ece2df070ce 374ff1e0724827c2300e373241e94c4bc13441561604e3e70b5034eb 58d717864f304c9c73b6d1d46c4276d7ec2f0e2bd9a42a8ab0ba99eb adda84f4cbb5b3611bd319627436246912139c2dde62bd00528b1464 20dceae949d1926ae05fc7df9b474e1ee176f89069fb424b12f8f357 e6e2909ba05152e9f72a68de0046b3e1520838ff5e723af02a96f51a c1e6ef4254226249b872676af76a319cbe" } 3.1.3.2. Response Example 3.6. Enable volume encryption response 0cee72c7-015c-493b-b5fe-a896ae444c34 23

3.1.4. Change encryption password Method URI Description POST /v1.0/tenant_id}/agent/changeencryption Changes the encryption password. This operation changes the encryption password. If you need assistance generating your encrypted key, see "Generating Your Encrypted Key In Cloud Backup" in the Rackspace Knowledge Center. Note After you turn on encryption, you cannot turn it off. This is a security measure. If anyone ever gained access to your account, they would not be able to access your backups without your passphrase. If you lose or forget your passphrase, you will not be able to recover your encrypted backups. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.1.4.1. Request This table shows the URI parameters for the change encryption password request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This list shows the body parameters for the request: parameters: MachineAgentId: Required. ID that uniquely identifies a Cloud Backup agent. OldEncryptedPasswordHex: Required. Your old encrypted password. 24

NewEncryptedPasswordHex: Required. Your new encrypted password. Example 3.7. Change encryption password: JSON request "MachineAgentId" : 869, "OldEncryptedPasswordHex" : "0bff42a526c78076a3d986fa75eecd 83211f166fd7692797cdde2317faee544e3300614fd54b8c0d81f975 3e58cb1ffbd62d3faf0d2bf52e79ce5cd9c6d84b5295e3dea629e71b 0a5e26efda50ff8e05a5475bb7cbd553d238c05655f56ece2df070ce 374ff1e0724827c2300e373241e94c4bc13441561604e3e70b5034eb 58d717864f304c9c73b6d1d46c4276d7ec2f0e2bd9a42a8ab0ba99eb adda84f4cbb5b3611bd319627436246912139c2dde62bd00528b1464 20dceae949d1926ae05fc7df9b474e1ee176f89069fb424b12f8f357 e6e2909ba05152e9f72a68de0046b3e1520838ff5e723af02a96f51a c1e6ef4254226249b872676af76a319cbe", "NewEncryptedPasswordHex" : "0bff42a526c78076a3d986fa75eecd 83211f166fd7692797cdde2317faee544e3300614fd54b8c0d81f975 3e58cb1ffbd62d3faf0d2bf52e79ce5cd9c6d84b5295e3dea629e71b 0a5e26efda50ff8e05a5475bb7cbd553d238c05655f56ece2df070ce 374ff1e0724827c2300e373241e94c4bc13441561604e3e70b5034eb 58d717864f304c9c73b6d1d46c4276d7ec2f0e2bd9a42a8ab0ba99eb adda84f4cbb5b3611bd319627436246912139c2dde62bd00528b1464 20dceae949d1926ae05fc7df9b474e1ee176f89069fb424b12f8f357 e6e2909ba05152e9f72a68de0046b3e1520838ff5e723af02a96f51a c1e6ef4254226249b872676af76a319fgh" } 3.1.4.2. Response Example 3.8. Change encryption password response 0cee72c7-015c-493b-b5fe-a896ae444c34 25

3.1.5. Delete agent Method URI Description POST /v1.0/tenant_id}/agent/delete Immediately permanently deletes an agent and its backup data. You can delete an agent at any time. If the agent is in the middle of an operation, it is allowed to complete. After it completes, it no longer authenticates. This table shows the possible response codes for this operation: Response Code Name 204 No Content The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.1.5.1. Request This table shows the URI parameters for the delete agent request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This operation does not accept a request body. 3.1.5.2. Response This list shows the body parameters for the response: parameters: MachineAgentId: ID that uniquely identifies a Cloud Backup agent. Example 3.9. Delete agent: JSON response } "MachineAgentId": 92384579 26

3.1.6. Migrate vault Method URI Description PUT /v1.0/tenant_id}/agent/migratevault Migrates a backup vault from one machine agent to another. To use the migrate vault operation, the two agents should be under the same user and their backups should not be encrypted. The destination machine agent should not have any backups already configured and running. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 403 Forbidden Access to the requested resource was denied. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.1.6.1. Request This table shows the URI parameters for the migrate vault request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This list shows the body parameters for the request: parameters: SourceMachineAgentId: Required. Agent ID of the source. Backups are migrated from this agent. DestinationMachineAgentID: Required. Agent ID of the destination. Backups are migrated to this agent. Example 3.10. Migrate vault: JSON request } "SourceMachineAgentId": 1, "DestinationMachineAgentId": 2 3.1.6.2. Response This operation does not return a response body. 27

3.1.7. Update agent backup behavior Method URI Description POST /v1.0/tenant_id}/agent/machineagentid} Updates the backup data center, or enables or disables ServiceNet for the Cloud Backup agent, or both. If ServiceNet is enabled, the Cloud Backup agent talks to Cloud Files over ServiceNet and does not incur any bandwidth charges. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.1.7.1. Request This table shows the URI parameters for the update agent backup behavior request: Name Type Description tenant_id} String The unique identifier of the tenant or account. machineagentid} Integer The unique identifier of the Cloud Backup agent. This list shows the body parameters for the request: parameters: BackupDataCenter: Optional. Specifies the backup data center where this Agent's backup will reside. You must have VMs in the data center specified by BackupDataCenter or this operation will fail. UseServiceNet: Required. Enables or disables the ServiceNet for this agent. Valid values are true or false. Example 3.11. Update agent backup behavior: JSON request POST https://dfw.backup.api.rackspacecloud.com/v1.0/1234/agent/213564 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe 28

} "BackupDataCenter" : "DFW", "UseServiceNet" : true 3.1.7.2. Response This list shows the body parameters for the response: parameters: AgentVersion: Version of the Rackspace Cloud Backup agent. Architecture: Base architecture of the Cloud Server. Valid values are 64-bit or 32-bit. Flavor: RaxCloudServer for Rackspace Cloud Servers. BackupVaultSize: Size of backup data in MB. CleanupAllowed: Indicates whether a cleanup can be manually triggered on the backup vault. Valid values are true or false. Datacenter: Data center where the Cloud Server is located. Valid values are IAD, ORD, DFW, HKG, LON, or SYD). IPAddress: Public IPv4 address of the Cloud Server. IsDisabled: Indicates if the Rackspace Cloud Backup agent on the server is disabled. Valid values are true or false. IsEncrypted: Indicates if backups are encrypted. Valid values are true or false. MachineAgentId: ID that uniquely identifies a Cloud Backup agent. MachineName: 29

Name of the Cloud Server. OperatingSystem: Operating system of Cloud Server. OperatingSystemVersion: Operating system version of Cloud Server. PublicKey: Public key of the public/private encryption key pair. Status: Status of the Cloud Backup agent. Valid values are Online or Offline. TimeOfLastSuccessfulBackup: Time of last successful backup. UseServiceNet: Indicates if the Cloud Backup agent is using ServiceNet to backup data to Cloud Files. Valid values are true or false. UseFailoverUri: Indicates if a failover URI should be used. Valid values are true or false. Example 3.12. Update agent backup behavior: JSON response "AgentVersion": "1.05.005848", "Architecture": "64-bit", "Flavor":"RaxCloudServer", "BackupVaultSize": "35.3 MB", "CleanupAllowed": true, "Datacenter": "DFW", "BackupDataCenter": "DFW", "IPAddress": "192.168.1.1", "IsDisabled": false, "IsEncrypted": true, "MachineAgentId": 213564, "MachineName": "Web Server", "OperatingSystem": "Windows Server 2012", "OperatingSystemVersion":"", "PublicKey": "ModulusHex": "a5261939156948bb7a58dffe5ff89e65f0498f9175f5a 98288810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d4 61d0d30cf0192e307727c065168c788771c561a9400fb61975e9e6aa4e23 fe11af69e9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4a cd36074eafd036a5eb83359d2a698d0", "ExponentHex": "09528" }, "Status": "Online", 30

} "TimeOfLastSuccessfulBackup": "\/Date(1358752980000)\/", "UseServiceNet": true, "UseFailoverUri": true 31

3.1.8. List agent details by host server ID Method URI Description GET /v1.0/tenant_id}/agent/server/hostserverid} This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Lists details about the machine and its agent using the host server ID. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.1.8.1. Request This table shows the URI parameters for the list agent details by host server id request: Name Type Description tenant_id} String The unique identifier of the tenant or account. hostserverid} Integer The unique identifier of the host server where the Cloud Backup agent is running. Example 3.13. List agent details by host server ID: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/agent/server/87c3b6e1- fb1a-41f9-91e5-313ae35a5a06 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.1.8.2. Response This list shows the body parameters for the response: parameters: AgentVersion: Version of the Rackspace Cloud Backup agent. Architecture: 32

Base architecture of the Cloud Server. Valid values are 64-bit or 32-bit. Flavor: RaxCloudServer for Rackspace Cloud Servers. BackupVaultSize: Size of backup data in MB. CleanupAllowed: Indicates whether a cleanup can be manually triggered on the backup vault. Valid values are true or false. Datacenter: Data center where the Cloud Server is located. Valid values are IAD, ORD, DFW, HKG, LON, or SYD). IPAddress: Public IPv4 address of the Cloud Server. IsDisabled: Indicates if the Rackspace Cloud Backup agent on the server is disabled. Valid values are true or false. IsEncrypted: Indicates if backups are encrypted. Valid values are true or false. MachineAgentId: ID that uniquely identifies a Cloud Backup agent. MachineName: Name of the Cloud Server. OperatingSystem: Operating system of Cloud Server. OperatingSystemVersion: Operating system version of Cloud Server. PublicKey: Public key of the public/private encryption key pair. Status: 33

Status of the Cloud Backup agent. Valid values are Online or Offline. TimeOfLastSuccessfulBackup: Time of last successful backup. UseServiceNet: Indicates if the Cloud Backup agent is using ServiceNet to backup data to Cloud Files. Valid values are true or false. HostServerId: Server ID of the host server where the Cloud Backup agent is running. Example 3.14. List agent details by host server ID: JSON response "AgentVersion": "1.05.005848", "Architecture": "64-bit", "Flavor": "RaxCloudServer", "BackupVaultSize": "35.3 MB", "BackupContainer": "https://storage101.dc.clouddrive.com/v1/youraccount/ CloudBackup_v2_0_yourUUID", "CleanupAllowed": true, "Datacenter": "DFW", "IPAddress": "192.168.1.1", "IsDisabled": false, "IsEncrypted": true, "MachineAgentId": 213564, "MachineName": "Web Server", "OperatingSystem": "Windows Server 2012", "OperatingSystemVersion": "", "PublicKey": "ModulusHex": "a5261939156948bb7a58dffe5ff89e65f0498f9175f5a 98288810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d4 61d0d30cf0192e307727c065168c788771c561a9400fb61975e9e6aa4e23 fe11af69e9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4a cd36074eafd036a5eb83359d2a698d0", "ExponentHex": "09528" }, "Status": "Online", "TimeOfLastSuccessfulBackup": "/Date(1357817400000)/", "UseServiceNet": "true", "HostServerId" : "87c3b6e1-fb1a-41f9-91e5-313ae35a5a06" } 34

3.2. User operations This section describes the user operations that are supported by the Cloud Backup API. Method URI Description GET /v1.0/tenant_id}/user/agents Retrieves information for all agents for the current user. POST /v1.0/tenant_id}/user/wakeupagents Wakes up the agent before you perform tasks. 35

3.2.1. List all agents for this user Method URI Description GET /v1.0/tenant_id}/user/agents Retrieves information for all agents for the current user. Note Cloud Backup agent Status is always Offline in this call. To get the correct values for Status and TimeOfLastSuccessfulBackup, use the operation described in "List agent details". This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.2.1.1. Request This table shows the URI parameters for the list all agents for this user request: Name Type Description tenant_id} String The unique identifier of the tenant or account. Example 3.15. List all agents for this user: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/user/agents User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.2.1.2. Response This list shows the body parameters for the response: parameters: AgentVersion: Version of the Rackspace Cloud Backup agent. Architecture: 36

Base architecture of the Cloud Server. Valid values are 64-bit or 32-bit. Flavor: RaxCloudServer for Rackspace Cloud Servers. BackupVaultSize: Size of backup data in MB. BackupContainer: Full public URI for Cloud Files where backups are stored for this agent. CleanupAllowed: Indicates whether a cleanup can be manually triggered on the backup vault. Valid values are true or false. Datacenter: Data center where the Cloud Server is located. Valid values are IAD, ORD, DFW, HKG, LON, or SYD). IPAddress: Public IPv4 address of the Cloud Server. IsDisabled: Indicates if the Rackspace Cloud Backup agent on the server is disabled. Valid values are true or false. IsEncrypted: Indicates if backups are encrypted. Valid values are true or false. MachineAgentId: ID that uniquely identifies a Cloud Backup agent. MachineName: Name of the Cloud Server. OperatingSystem: Operating system of Cloud Server. OperatingSystemVersion: Operating system version of Cloud Server. PublicKey: 37

Public key of the public/private encryption key pair. Status: Status of the Cloud Backup agent. Valid values are Online or Offline. TimeOfLastSuccessfulBackup: Time of last successful backup. UseServiceNet: Indicates if the Cloud Backup agent is using ServiceNet to backup data to Cloud Files. Valid values are true or false. Example 3.16. List all agents for this user: JSON response [ "AgentVersion": "1.05.005848", "Architecture": "64-bit", "BackupVaultSize": "35.3 MB", "BackupContainer": "https://storage101.dc.clouddrive.com/v1/youraccount/ CloudBackup_v2_0_yourUUID", "CleanupAllowed": true, "Datacenter": "DFW", "Flavor": "RaxCloudServer", "IPAddress": "192.168.1.1", "IsDisabled": false, "IsEncrypted": true, "MachineAgentId": 213563, "MachineName": "Web Server2", "OperatingSystem": "Windows Server 2012", "OperatingSystemVersion": "", "PublicKey": "ExponentHex": 09528, "ModulusHex": "a5261939156948bb7a58dffe5ff89e65f0498f9175f5a 98288810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d4 61d0d30cf0192e307727c065168c788771c561a9400fb61975e9e6aa4e23 fe11af69e9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4a cd36074eafd036a5eb83359d2a698d0" }, "Status": "Online", "TimeOfLastSuccessfulBackup": null, "UseServiceNet": true }, "AgentVersion": "1.05.005848", "Architecture": "64-bit", "BackupVaultSize": "35.3 MB", "BackupContainer": "https://storage101.dc.clouddrive.com/v1/youraccount/ CloudBackup_v2_0_yourUUID", "CleanupAllowed": true, "Flavor": "RaxCloudServer", "Datacenter": "DFW", "IPAddress": "192.168.1.3", "IsDisabled": false, 38

] "IsEncrypted": true, "MachineAgentId": 213564, "MachineName": "Web Server", "OperatingSystem": "Windows Server 2012", "OperatingSystemVersion": "", "PublicKey": "ExponentHex": 82374, "ModulusHex": "a5261939156948bb7a58dffe5ff89e65f0498f9175f5a982888 10b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0 192e307727c065168c788771c561a9400fb61975e9e6aa4e23fe11af69e 9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4 acd360723324234234234234234234abc2" }, "Status": "Online", "TimeOfLastSuccessfulBackup": null, "UseServiceNet": true } 39

3.2.2. Wake up agents Method URI Description POST /v1.0/tenant_id}/user/wakeupagents Wakes up the agent before you perform tasks. This operation sends a message to an agent to wakeup. You should wait 10 to 20 seconds after using this operation before starting a backup or restore. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.2.2.1. Request This table shows the URI parameters for the wake up agents request: Name Type Description tenant_id} String The unique identifier of the tenant or account. Example 3.17. Wake up agents: JSON request POST https://dfw.backup.api.rackspacecloud.com/v1.0/1234/user/wakeupagents User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.2.2.2. Response This operation does not return a response body. 40

3.3. Backup configuration operations When trying to determine how often to back up a file in your backup configuration, there are three variables to consider: 1. How important is tracking changes in the file to your business processes? (criticality) 2. How large is the file? (size) 3. How often does the file change? (data churn) Criticality is the most important factor to consider when making backup decisions. The more critical the file is to your business operations, the more often you'll want to back this file up. Size is an important consideration if the speed of backups/restores is important to you. Large files take longer to backup and to restore. It might be wise to backup large files less frequently. Data churn is the last variable to consider, and perhaps the trickiest to handle. Files that change often invalidate blocks that have been stored previously. Depending on criticality, it might still be wise to snapshot files with high data churn and backup those snapshots. This section describes the backup configuration operations that are supported by the Cloud Backup API. Method URI Description POST PUT GET GET GET POST DELETE /v1.0/tenant_id}/backup-configuration /v1.0/tenant_id}/backup-configuration/backupconfigurationid} /v1.0/tenant_id}/backup-configuration/backupconfigurationid} Lists detailed information for the specified backup configuration. /v1.0/tenant_id}/backup-configuration /v1.0/tenant_id}/backup-configuration/system/machineagentid} /v1.0/tenant_id}/backup-configuration/enable/backupconfigurationid} /v1.0/tenant_id}/backup-configuration/backupconfigurationid} Creates a backup configuration for the authenticated user. Returns details of a backup configuration. Updates an existing backup configuration. Lists all backup configurations for the current user. Lists the backup configurations for the specified agent. Enables or disables a backup configuration. Deletes the specified backup configuration. 41

3.3.1. Create backup configuration Method URI Description POST /v1.0/tenant_id}/backup-configuration Creates a backup configuration for the authenticated user. Returns details of a backup configuration. To view a list of all backup configurations, use "List all backup configurations for an agent". This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 409 Conflict The request could not be completed due to a conflict with the current state of the resource. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.3.1.1. Request This table shows the URI parameters for the create backup configuration request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This list shows the body parameters for the request: parameters: BackupConfigurationName: Required. The name of the backup configuration. The configuration typically has the backup schedule, files to backup, and notification options. MachineAgentId: Required. ID that uniquely identifies a Cloud Backup agent. IsActive: Required. Indicates if a backup configuration is active. Valid values are true or false. VersionRetention: Required. Indicates how many days backup revisions are maintained. Valid values are 0, 30, and 60. 0 means indefinite. 42

Frequency: Required. Frequency of backup schedule. Valid values are "Manually", "Hourly", "Daily", and "Weekly". StartTimeHour: Required. Indicates the hour when the backup runs. Valid values are 1 through 12, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeMinute : Required. Indicates the minute when the backup runs. Valid values are 0 through 59, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeAmPm: Required. Indicates AM or PM. Valid values are "AM" or "PM", as well as null when the Frequency value is "Manually" or "Hourly". DayOfWeekId: Required. Indicates the day of the week. Valid values are 0 through 6, with 0 representing Sunday and 6 representing Saturday. null is also a valid value when the Frequency value is "Manually","Hourly", or "Daily". HourInterval: Required. Indicates the hour. Valid values are 1 through 23, as well as null when the Frequency value is "Manually","Daily", or "Weekly". TimeZoneId: Required. Specifies the time zone where the backup runs, for example "Eastern Standard Time". NotifyRecipients: Required. Indicates the email address to notify in case of backup success or failure. NotifySuccess: Required. Indicates if emails are sent after a successful backup. Valid values are true or false. NotifyFailure: Required. Indicates if emails are sent after a failed backup. Valid values are true or false. Inclusions: Optional. Indicates the list of files and folders to back up. Exclusions: Optional. Indicates the list of files and folders 43 not to back up.

Example 3.18. Create backup configuration: JSON request } "MachineAgentId": 202743, "BackupConfigurationName": "Weekly Website Backup", "IsActive": true, "VersionRetention": 30, "MissedBackupActionId": 1, "Frequency": "Weekly", "StartTimeHour": 7, "StartTimeMinute": 30, "StartTimeAmPm": "PM", "DayOfWeekId": 5, "HourInterval": null, "TimeZoneId": "Eastern Standard Time", "NotifyRecipients": "test@my-email-address.com", "NotifySuccess": true, "NotifyFailure": true, "Inclusions": [ "FilePath": "C:\\backup_up_file.txt", "FileItemType": "File" }, "FilePath": "C:\\backed_up_folder", "FileItemType": "Folder" } ], "Exclusions": [ "FilePath": "C:\\backed_up_folder\\excluded_file.txt", "FileItemType": "File" } ] 3.3.1.2. Response This list shows the body parameters for the response: parameters: MachineAgentId: ID that uniquely identifies a Cloud Backup agent. BackupConfigurationName: The name of the backup configuration. The configuration typically has the backup schedule, files to backup, and notification options. IsActive: Indicates if a backup configuration is active. Valid values are true or false. VersionRetention: 44

Indicates how many days backup revisions are maintained. Valid values are 0, 30, and 60. 0 means indefinite. BackupConfigurationScheduled: Uniquely identifies the schedule that is associated with this configuration. MissedBackupActionId: Specifies when to send notification. Valid values are as follows: 1 that indicates that notifications are sent as soon as possible, or 2 that indicates that notifications are sent at the next scheduled time. Frequency: Frequency of backup schedule. Valid values are "Manually", "Hourly", "Daily", and "Weekly". StartTimeHour: Indicates the hour when the backup runs. Valid values are 1 through 12, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeMinute : Indicates the minute when the backup runs. Valid values are 0 through 59, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeAmPm: Indicates AM or PM. Valid values are "AM" or "PM", as well as null when the Frequency value is "Manually" or "Hourly". DayOfWeekId: Indicates the day of the week. Valid values are 0 through 6, with 0 representing Sunday and 6 representing Saturday. null is also a valid value when the Frequency value is "Manually","Hourly", or "Daily". HourInterval: Indicates the hour. Valid values are 1 through 23, as well as null when the Frequency value is "Manually","Daily", or "Weekly". TimeZoneId: Specifies the time zone where the backup runs, for example "Eastern Standard Time". NotifyRecipients: Indicates the email address to notify in case of backup success or failure. NotifySuccess: 45

Indicates if emails are sent after a successful backup. Valid values are true or false. NotifyFailure: Indicates if emails are sent after a failed backup. Valid values are true or false. Inclusions: Optional. Indicates the list of files and folders to back up. Exclusions: Optional. Indicates the list of files and folders not to back up. Example 3.19. Create backup configuration: JSON response "BackupConfigurationId": 174084, "BackupConfigurationName": "Weekly Website Backup", "BackupConfigurationScheduleId": 173131, "BackupPostscript": "", "BackupPrescript": "", "Datacenter": "DFW", "DayOfWeekId": 5, "EncryptionKey": "ExponentHex": 10001, "ModulusHex": "C6054E90E32D2B25E16F3A560E1B4DC580B1E4AB74E0C662680DD8A1BD83956051F6A526B16C55225D1BE6E0B1 }, "Exclusions": [ "FileId": 657293, "FileItemType": "File", "FilePath": "C:\\backed_up_folder\\excluded_file.txt", "FilePathEncoded": null, "Filter": "Exclude", "ParentId": 174084 } ], "Flavor": "RaxCloudServer", "Frequency": "Weekly", "HourInterval": null, "Inclusions": [ "FileId": 657291, "FileItemType": "File", "FilePath": "C:\\backup_up_file.txt", "FilePathEncoded": null, "Filter": "Include", "ParentId": 174084 }, "FileId": 657292, "FileItemType": "Folder", "FilePath": "C:\\backed_up_folder", "FilePathEncoded": null, "Filter": "Include", "ParentId": 174084 46

} } ], "IsActive": true, "IsDeleted": false, "IsEncrypted": false, "LastRunBackupReportId": null, "LastRunTime": null, "MachineAgentId": 202743, "MachineName": "web2", "MissedBackupActionId": 1, "NextScheduledRunTime": "/Date(1406935800000)/", "NotifyFailure": true, "NotifyRecipients": "test@my-email-address.com", "NotifySuccess": true, "StartTimeAmPm": "PM", "StartTimeHour": 11, "StartTimeMinute": 30, "TimeZoneId": "Eastern Standard Time", "VersionRetention": 30 47

3.3.2. Update backup configuration Method URI Description PUT /v1.0/tenant_id}/backup-configuration/backupconfigurationid} Note Updates an existing backup configuration. To view a list of all backup configurations and their backup configuration schedule IDs, see "List backup configuration details". This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.3.2.1. Request This table shows the URI parameters for the update backup configuration request: Name Type Description tenant_id} String The unique identifier of the tenant or account. backupconfigurationid} Integer The unique identifier of the backup configuration. This list shows the body parameters for the request: parameters: MachineAgentId: Required. ID that uniquely identifies a Cloud Backup agent. BackupConfigurationName: Required. The name of the backup configuration. The configuration typically has the backup schedule, files to backup, and notification options. IsActive: Required. Indicates if a backup configuration is active. Valid values are true or false. VersionRetention: Required. 48

Indicates how many days backup revisions are maintained. Valid values are 0, 30, and 60. 0 means indefinite. BackupConfigurationScheduled: Required. Uniquely identifies the schedule that is associated with this configuration. Frequency: Required. Frequency of backup schedule. Valid values are "Manually", "Hourly", "Daily", and "Weekly". StartTimeHour: Required. Indicates the hour when the backup runs. Valid values are 1 through 12, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeMinute : Required. Indicates the minute when the backup runs. Valid values are 0 through 59, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeAmPm: Required. Indicates AM or PM. Valid values are "AM" or "PM", as well as null when the Frequency value is "Manually" or "Hourly". DayOfWeekId: Required. Indicates the day of the week. Valid values are 0 through 6, with 0 representing Sunday and 6 representing Saturday. null is also a valid value when the Frequency value is "Manually","Hourly", or "Daily". HourInterval: Required. Indicates the hour. Valid values are 1 through 23, as well as null when the Frequency value is "Manually","Daily", or "Weekly". TimeZoneId: Required. Specifies the time zone where the backup runs, for example "Eastern Standard Time". NotifyRecipients: Required. Indicates the email address to notify in case of backup success or failure. NotifySuccess: Required. Indicates if emails are sent after a successful backup. Valid values are true or false. NotifyFailure: Required. Indicates if emails are sent after a failed backup. Valid values are true or false. 49

Inclusions: Optional. Indicates the list of files and folders to back up. Exclusions: Optional. Indicates the list of files and folders not to back up. Example 3.20. Update backup configuration: JSON request } "MachineAgentId": 156953, "BackupConfigurationName": "Weekly Website Backup", "IsActive": true, "VersionRetention": 30, "BackupConfigurationScheduleId": 145393, "MissedBackupActionId": 1, "Frequency": "Weekly", "StartTimeHour": 6, "StartTimeMinute": 30, "StartTimeAmPm": "AM PM", "DayOfWeekId": 4, "HourInterval": null, "TimeZoneId": "Eastern Standard Time", "NotifyRecipients": "raxtestaddress@rackspace.com", "NotifySuccess": true, "NotifyFailure": true, "Inclusions": [ "FilePath": "C:\\backup_up_file.txt", "FileItemType": "File" }, "FilePath": "C:\\backed_up_folder", "FileItemType": "Folder" } ], "Exclusions": [ "FilePath": "C:\\backed_up_folder\\excluded_file.txt", "FileItemType": "File" }, "FilePath": "C:\\backed_up_folder\\excluded_folder", "FileItemType": "Folder" } ] 3.3.2.2. Response This operation does not return a response body. 50

3.3.3. List backup configuration details Method URI Description GET /v1.0/tenant_id}/backup-configuration/backupconfigurationid} This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Lists detailed information for the specified backup configuration. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.3.3.1. Request This table shows the URI parameters for the list backup configuration details request: Name Type Description tenant_id} String The unique identifier of the tenant or account. backupconfigurationid} Integer The unique identifier of the backup configuration. Example 3.21. List backup configuration details: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/backup-configuration/ 148325 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.3.3.2. Response This list shows the body parameters for the response: parameters: BackupConfigurationId: Autogenerated ID that uniquely identifies a backup configuration. This ID is required on subsequent GET/UPDATE/DELETE calls. MachineAgentId: 51

ID that uniquely identifies a Cloud Backup agent. MachineName: Name of the Cloud Server where the Cloud Backup agent resides. Flavor: RaxCloudServer - for Rackspace Cloud Servers. BackupConfigurationName: The name of the backup configuration. The configuration typically has the backup schedule, files to backup, and notification options. IsActive: Indicates if a backup configuration is active. Valid values are true or false. IsDeleted: Indicates if the backup configuration is deleted. Valid values are true or false. VersionRetention: Indicates how many days backup revisions are maintained. Valid values are 0, 30, and 60. 0 means indefinite. BackupConfigurationScheduled: Uniquely identifies the schedule that is associated with this configuration. MissedBackupActionId: Specifies when to send notification. Valid values are as follows: 1 that indicates that notifications are sent as soon as possible, or 2 that indicates that notifications are sent at the next scheduled time. Frequency: Frequency of backup schedule. Valid values are "Manually", "Hourly", "Daily", and "Weekly". StartTimeHour: Indicates the hour when the backup runs. Valid values are 1 through 12, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeMinute : Indicates the minute when the backup runs. Valid values are 0 through 59, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeAmPm: 52

Indicates AM or PM. Valid values are "AM" or "PM", as well as null when the Frequency value is "Manually" or "Hourly". DayOfWeekId: Indicates the day of the week. Valid values are 0 through 6, with 0 representing Sunday and 6 representing Saturday. null is also a valid value when the Frequency value is "Manually","Hourly", or "Daily". HourInterval: Indicates the hour. Valid values are 1 through 23, as well as null when the Frequency value is "Manually","Daily", or "Weekly". TimeZoneId: Specifies the time zone where the backup runs, for example "Eastern Standard Time". NotifyRecipients: Indicates the email address to notify in case of backup success or failure. NotifySuccess: Indicates if emails are sent after a successful backup. Valid values are true or false. NotifyFailure: Indicates if emails are sent after a failed backup. Valid values are true or false. Inclusions: Indicates the list of files and folders to back up. Exclusions: Indicates the list of files and folders not to back up. Example 3.22. List backup configuration details: JSON response "BackupConfigurationId": 148325, "MachineAgentId": 156953, "MachineName": "Web Server", "Flavor": "RaxCloudServer", "IsEncrypted": false, "BackupConfigurationName": "Weekly Website Backup", "IsActive": true, "IsDeleted": false, "VersionRetention": 60, "BackupConfigurationScheduleId": 145406, "MissedBackupActionId": 1, "Frequency": "Weekly", "StartTimeHour": 11, "StartTimeMinute": 30, "StartTimeAmPm": "AM", 53

} "DayOfWeekId": 4, "HourInterval": null, "TimeZoneId": "Eastern Standard Time", "NextScheduledRunTime": "\/Date(1357817400000)\/", "LastRunTime": null, "LastRunBackupReportId": null, "NotifyRecipients": "raxtestaddress@rackspace.com", "NotifySuccess": false, "NotifyFailure": false, "Inclusions": [ "FilePath": "C:\\backed_up_folder", "ParentId": 148325, "FileItemType": "Folder", "FileId": 35000 }, "FilePath": "C:\\backup_up_file.txt", "ParentId": 148325, "FileItemType": "File", "FileId": 34999 } ], "Exclusions":[ "FilePath": "C:\\backed_up_folder\\excluded_folder", "ParentId": 148325, "FileItemType": "Folder", "FileId": 35002 }, "FilePath": "C:\\backed_up_folder\\excluded_file.txt", "ParentId": 148325, "FileItemType": "File", "FileId": 35001 } ] 54

3.3.4. List all backup configurations for a user Method URI Description GET /v1.0/tenant_id}/backup-configuration This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Lists all backup configurations for the current user. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.3.4.1. Request This table shows the URI parameters for the list all backup configurations for a user request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This operation does not accept a request body. 3.3.4.2. Response This list shows the body parameters for the response: parameters: BackupConfigurationId: Autogenerated ID that uniquely identifies a backup configuration. This ID is required on subsequent GET/UPDATE/DELETE calls. MachineAgentId: ID that uniquely identifies a Cloud Backup agent. MachineName: Name of the Cloud Server where the Cloud Backup agent resides. Flavor: RaxCloudServer - for Rackspace Cloud Servers. 55

IsEncrypted: Indicates if backups are encrypted. Valid values are true or false. BackupConfigurationName: The name of the backup configuration. The configuration typically has the backup schedule, files to backup, and notification options. IsActive: Indicates if a backup configuration is active. Valid values are true or false. IsDeleted: Indicates if the backup configuration is deleted. Valid values are true or false. VersionRetention: Indicates how many days backup revisions are maintained. Valid values are 0, 30, and 60. 0 means indefinite. BackupConfigurationScheduled: Uniquely identifies the schedule that is associated with this configuration. MissedBackupActionId: Specifies when to send notification. Valid values are as follows: 1 that indicates that notifications are sent as soon as possible, or 2 that indicates that notifications are sent at the next scheduled time. Frequency: Frequency of backup schedule. Valid values are "Manually", "Hourly", "Daily", and "Weekly". StartTimeHour: Indicates the hour when the backup runs. Valid values are 1 through 12, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeMinute : Indicates the minute when the backup runs. Valid values are 0 through 59, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeAmPm: Indicates AM or PM. Valid values are "AM" or "PM", as well as null when the Frequency value is "Manually" or "Hourly". DayOfWeekId: 56

Indicates the day of the week. Valid values are 0 through 6, with 0 representing Sunday and 6 representing Saturday. null is also a valid value when the Frequency value is "Manually","Hourly", or "Daily". HourInterval: Indicates the hour. Valid values are 1 through 23, as well as null when the Frequency value is "Manually","Daily", or "Weekly". TimeZoneId: Specifies the time zone where the backup runs, for example "Eastern Standard Time". NextScheduledRunTime: Specifies the next scheduled run time for a backup. LastRunTime: Indicates the last time a backup ran. LastRunBackupReportId: If the backup ran successfully last time, indicates the ID of the backup report. NotifyRecipients: Indicates the email address to notify in case of backup success or failure. NotifySuccess: Indicates if emails are sent after a successful backup. Valid values are true or false. NotifyFailure: Indicates if emails are sent after a failed backup. Valid values are true or false. Inclusions: Indicates the list of files and folders to back up. Exclusions: Indicates the list of files and folders not to back up. Example 3.23. List all backup configurations for a user: JSON response [ "BackupConfigurationId": 100850, "MachineAgentId": 96674, "MachineName": "Web Server", "Flavor": "RaxCloudServer", "IsEncrypted": false, "BackupConfigurationName": "Manual Website Backup", 57

"IsActive": true, "IsDeleted": false, "VersionRetention": 60, "BackupConfigurationScheduleId": 98017, "MissedBackupActionId": 2, "Frequency": "Manually", "StartTimeHour": null, "StartTimeMinute": null, "StartTimeAmPm": "", "DayOfWeekId": null, "HourInterval": null, "TimeZoneId": "Eastern Standard Time", "NextScheduledRunTime": null, "LastRunTime": "\/Date(1343226053000)\/", "LastRunBackupReportId": 80071, "NotifyRecipients": "user@rackspace.com", "NotifySuccess": false, "NotifyFailure": true, "Inclusions": [ "FilePath": "/web/", "ParentId": 100850, "FileItemType": "Folder", "FileId": 2947 } ], "Exclusions": [ "FilePath": "/web/cache/", "ParentId": 100850, "FileItemType": "Folder", "FileId": 2948 } ] }, "BackupConfigurationId": 100928, "MachineAgentId": 96685, "MachineName": "Database Server", "Flavor": "RaxCloudServer", "IsEncrypted": false, "BackupConfigurationName": "Manual DB Backup", "IsActive": true, "IsDeleted": false, "VersionRetention": 60, "BackupConfigurationScheduleId": 98019, "MissedBackupActionId": 2, "Frequency": "Manually", "StartTimeHour": null, "StartTimeMinute": null, "StartTimeAmPm": "", "DayOfWeekId": null, "HourInterval": null, "TimeZoneId": "Eastern Standard Time", "NextScheduledRunTime": null, "LastRunTime": "\/Date(1343226074000)\/", "LastRunBackupReportId": 80116, "NotifyRecipients": "user@rackspace.com", "NotifySuccess": false, "NotifyFailure": true, 58

] "Inclusions": [ "FilePath": "/db/dumps/", "ParentId": 100928, "FileItemType": "Folder", "FileId": 3568 } ], "Exclusions": [ "FilePath": "/db/dumps/tmp/", "ParentId": 100928, "FileItemType": "Folder", "FileId": 3570 } ] } 59

3.3.5. List all backup configurations for an agent Method URI Description GET /v1.0/tenant_id}/backup-configuration/system/machineagentid} This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Lists the backup configurations for the specified agent. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.3.5.1. Request This table shows the URI parameters for the list all backup configurations for an agent request: Name Type Description tenant_id} String The unique identifier of the tenant or account. machingagentid} Integer The unique identifier of the Cloud Backup agent. Example 3.24. List all backup configurations for an agent: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/backup-configuration/ system/224193 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.3.5.2. Response This list shows the body parameters for the response: parameters: BackupConfigurationId: Autogenerated ID that uniquely identifies a backup configuration. This ID is required on subsequent GET/UPDATE/DELETE calls. MachineAgentId: 60

ID that uniquely identifies a Cloud Backup agent. MachineName: Name of the Cloud Server where the Cloud Backup agent resides. Flavor: RaxCloudServer - for Rackspace Cloud Servers. IsEncrypted: Indicates if backups are encrypted. Valid values are true or false. BackupConfigurationName: The name of the backup configuration. The configuration typically has the backup schedule, files to backup, and notification options. IsActive: Indicates if a backup configuration is active. Valid values are true or false. IsDeleted: Indicates if the backup configuration is deleted. Valid values are true or false. VersionRetention: Indicates how many days backup revisions are maintained. Valid values are 0, 30, and 60. 0 means indefinite. BackupConfigurationScheduled: Uniquely identifies the schedule that is associated with this configuration. MissedBackupActionId: Specifies when to send notification. Valid values are as follows: 1 that indicates that notifications are sent as soon as possible, or 2 that indicates that notifications are sent at the next scheduled time. Frequency: Frequency of backup schedule. Valid values are "Manually", "Hourly", "Daily", and "Weekly". StartTimeHour: Indicates the hour when the backup runs. Valid values are 1 through 12, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeMinute : 61

Indicates the minute when the backup runs. Valid values are 0 through 59, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeAmPm: Indicates AM or PM. Valid values are "AM" or "PM", as well as null when the Frequency value is "Manually" or "Hourly". DayOfWeekId: Indicates the day of the week. Valid values are 0 through 6, with 0 representing Sunday and 6 representing Saturday. null is also a valid value when the Frequency value is "Manually","Hourly", or "Daily". HourInterval: Indicates the hour. Valid values are 1 through 23, as well as null when the Frequency value is "Manually","Daily", or "Weekly". TimeZoneId: Specifies the time zone where the backup runs, for example "Eastern Standard Time". NextScheduledRunTime: Specifies the next scheduled run time for a backup. LastRunTime: Indicates the last time a backup ran. LastRunBackupReportId: If the backup ran successfully last time, indicates the ID of the backup report. NotifyRecipients: Indicates the email address to notify in case of backup success or failure. NotifySuccess: Indicates if emails are sent after a successful backup. Valid values are true or false. NotifyFailure: Indicates if emails are sent after a failed backup. Valid values are true or false. Inclusions: Indicates the list of files and folders to back up. Exclusions: Indicates the list of files and folders 62 not to back up.

Example 3.25. List all backup configurations for an agent: JSON response [ }, ], "BackupConfigurationId": 158485, "MachineAgentId": 224193, "MachineName": "Web Server", "Flavor": "RaxCloudServer", "IsEncrypted": false, "BackupConfigurationName": "Manual Log Backup", "IsActive": true, "IsDeleted": false, "VersionRetention": 60, "BackupConfigurationScheduleId": 155566, "MissedBackupActionId": 1, "Frequency": "Manually", "StartTimeHour": null, "StartTimeMinute": null, "StartTimeAmPm": "", "DayOfWeekId": null, "HourInterval": null, "TimeZoneId": "Eastern Standard Time", "NextScheduledRunTime": "\/Date(-62135578800000)\/", "LastRunTime": null, "LastRunBackupReportId": null, "NotifyRecipients": "user@rackspace.com", "NotifySuccess": true, "NotifyFailure": true, "Inclusions": [ "FilePath": "C:\\Websites\\Logs", "ParentId": 158485, "FileItemType": "Folder", "FileId": 47085 } "Exclusions": [ ] "BackupConfigurationId": 158486, "MachineAgentId": 224193, "MachineName": "Web Server", "Flavor": "RaxCloudServer", "IsEncrypted": false, "BackupConfigurationName": "Weekly Website Backup", "IsActive": true, "IsDeleted": false, "VersionRetention": 60, "BackupConfigurationScheduleId": 155567, "MissedBackupActionId": 1, "Frequency": "Weekly", "StartTimeHour": 7, "StartTimeMinute": 23, "StartTimeAmPm": "AM", "DayOfWeekId": 1, "HourInterval": null, "TimeZoneId": "Eastern Standard Time", "NextScheduledRunTime": "\/Date(1358752980000)\/", "LastRunTime": null, "LastRunBackupReportId": null, 63

] } "NotifyRecipients": "user@rackspace.com", "NotifySuccess": true, "NotifyFailure": true, "Inclusions": [ "FilePath": "C:\\Websites", "ParentId": 158486, "FileItemType": "Folder", "FileId": 47086 }, "FilePath": "C:\\Websites\\Logs", "ParentId": 158486, "FileItemType": "Folder", "FileId": 47087 } ], "Exclusions": [ ] 64

3.3.6. Enable or disable a backup configuration Method URI Description POST /v1.0/tenant_id}/backup-configuration/enable/backupconfigurationid} Enables or disables a backup configuration. Disabling a backup configuration does not delete it or its data. You can re-enabled disabled backup configurations later. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.3.6.1. Request This table shows the URI parameters for the enable or disable a backup configuration request: Name Type Description tenant_id} String The unique identifier of the tenant or account. backupconfigurationid} Integer The unique identifier of the backup configuration. This table shows the body parameters for the enable or disable a backup configuration request: Enable Name Type Description (Required) Indicates if backup configuration is enabled (true) or disabled (false). Example 3.26. Enable or disable a backup configuration request POST https://dfw.backup.api.rackspacecloud.com/v1.0/1234/backup-configuration/ enable/148325 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe Example 3.27. Enable a backup configuration: JSON request } "Enable": true 65

Example 3.28. Disable a backup configuration: JSON request } "Enable": false 3.3.6.2. Response This list shows the body parameters for the response: parameters: BackupConfigurationId: Autogenerated ID that uniquely identifies a backup configuration. This ID is required on subsequent GET/UPDATE/DELETE calls. MachineAgentId: ID that uniquely identifies a Cloud Backup agent. MachineName: Name of the Cloud Server where the Cloud Backup agent resides. Flavor: RaxCloudServer - for Rackspace Cloud Servers. IsEncrypted: Indicates if backups are encrypted. Valid values are true or false. BackupConfigurationName: The name of the backup configuration. The configuration typically has the backup schedule, files to backup, and notification options. IsActive: Indicates if a backup configuration is active. Valid values are true or false. IsDeleted: Indicates if the backup configuration is deleted. Valid values are true or false. VersionRetention: Indicates how many days backup revisions are maintained. Valid values are 0, 30, and 60. 0 means indefinite. BackupConfigurationScheduled: 66 Uniquely identifies the schedule that is associated with this configuration.

MissedBackupActionId: Specifies when to send notification. Valid values are as follows: 1 that indicates that notifications are sent as soon as possible, or 2 that indicates that notifications are sent at the next scheduled time. Frequency: Frequency of backup schedule. Valid values are "Manually", "Hourly", "Daily", and "Weekly". StartTimeHour: Indicates the hour when the backup runs. Valid values are 1 through 12, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeMinute : Indicates the minute when the backup runs. Valid values are 0 through 59, as well as null when the Frequency value is "Manually" or "Hourly". StartTimeAmPm: Indicates AM or PM. Valid values are "AM" or "PM", as well as null when the Frequency value is "Manually" or "Hourly". DayOfWeekId: Indicates the day of the week. Valid values are 0 through 6, with 0 representing Sunday and 6 representing Saturday. null is also a valid value when the Frequency value is "Manually","Hourly", or "Daily". HourInterval: Indicates the hour. Valid values are 1 through 23, as well as null when the Frequency value is "Manually","Daily", or "Weekly". TimeZoneId: Specifies the time zone where the backup runs, for example "Eastern Standard Time". NotifyRecipients: Indicates the email address to notify in case of backup success or failure. NotifySuccess: Indicates if emails are sent after a successful backup. Valid values are true or false. NotifyFailure: Indicates if emails are sent after a failed backup. Valid values are true or false. Inclusions: 67

Indicates the list of files and folders to back up. Exclusions: Indicates the list of files and folders not to back up. Example 3.29. Disable a backup configuration: JSON response "BackupConfigurationId": 148325, "MachineAgentId": 156953, "MachineName": "Web Server", "Flavor": "RaxCloudServer", "IsEncrypted": false, "BackupConfigurationName": "Weekly Website Backup", "IsActive": true, "IsDeleted": false, "VersionRetention": 60, "BackupConfigurationScheduleId": 145406, "MissedBackupActionId": 1, "Frequency": "Weekly", "StartTimeHour": 11, "StartTimeMinute": 30, "StartTimeAmPm": "AM", "DayOfWeekId": 4, "HourInterval": null, "TimeZoneId": "Eastern Standard Time", "NextScheduledRunTime": "\/Date(1357817400000)\/", "LastRunTime": null, "LastRunBackupReportId": null, "NotifyRecipients": "raxtestaddress@rackspace.com", "NotifySuccess": false, "NotifyFailure": false, "Inclusions": [ "FilePath": "C:\\backed_up_folder", "ParentId": 148325, "FileItemType": "Folder", "FileId": 35000 }, "FilePath": "C:\\backup_up_file.txt", "ParentId": 148325, "FileItemType": "File", "FileId": 34999 } ], "Exclusions":[ "FilePath": "C:\\backed_up_folder\\excluded_folder", "ParentId": 148325, "FileItemType": "Folder", "FileId": 35002 }, "FilePath": "C:\\backed_up_folder\\excluded_file.txt", "ParentId": 148325, "FileItemType": "File", "FileId": 35001 68

} ] } 69

3.3.7. Delete a backup configuration Method URI Description DELETE /v1.0/tenant_id}/backup-configuration/backupconfigurationid} Deletes the specified backup configuration. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.3.7.1. Request This table shows the URI parameters for the delete a backup configuration request: Name Type Description tenant_id} String The unique identifier of the tenant or account. backupconfigurationid} Integer The unique identifier of the backup configuration. Example 3.30. Delete a backup configuration: JSON request DELETE https://dfw.backup.api.rackspacecloud.com/v1.0/1234/backupconfiguration/148325 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.3.7.2. Response This operation does not return a response body. 70

3.4. Backup operations This section describes the backup operations that are supported by the Cloud Backup API. Method URI Description POST GET GET GET /v1.0/tenant_id}/backup/action-requested /v1.0/tenant_id}/backup/backupid} /v1.0/tenant_id}/backup/completed/backupconfigurationid} /v1.0/tenant_id}/backup/report/backupid} Manually starts or stops a backup. Returns the identifier of the instance of the backup. Lists details about the specified backup. Lists the details for backups that can still be restored. Gets details about a completed backup. 71

3.4.1. Start or stop a backup manually Method URI Description POST /v1.0/tenant_id}/backup/action-requested Manually starts or stops a backup. Returns the identifier of the instance of the backup. When manually starting a backup, provide the backup configuration identifier (BackupConfigurationId) for ID. You can retrieve a list of all backup configurations for an agent with the "Get all backup configurations for an agent" operation. When manually stopping a backup, provide the backup identifier for the ID. The backup identifier is given when the backup is started. Note You might need to call the operation to wake up agents before starting or stopping a backup manually. This table shows the possible response codes for this operation: Response Code Name Description 200 OK When manually starting a backup, the request succeeded. 204 No Content When manually stopping a backup, the request succeeded. 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.4.1.1. Request This table shows the URI parameters for the start or stop a backup manually request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This list shows the body parameters for the request: parameters: Action: Required. Specifies the action. Valid values are StartManual and "StopManual". Id: Required. 72

Specifies the value of BackupConfigurationId. Example 3.31. Start a backup manually: JSON request } "Action" : "StartManual", "Id": 148325 Example 3.32. Stop a backup manually: JSON request } "Action" : "StopManual", "Id": 368785 3.4.1.2. Response This table shows the body parameters for the start or stop a backup manually response: Name Type Description Id (Optional) Specifies BackupId, a unique backup ID that identifies the backup to start manually. Example 3.33. Start a backup manually response 368785 This operation does not return a response body. 73

3.4.2. List backup details Method URI Description GET /v1.0/tenant_id}/backup/backupid} Note Lists details about the specified backup. The authenticated user must have access to the specified backup in order to retrieve its details. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.4.2.1. Request This table shows the URI parameters for the list backup details request: Name Type Description tenant_id} String The unique identifier of the tenant or account. backupid} Integer The unique identifier of a backup. Example 3.34. List backup details: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/backup/134332 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.4.2.2. Response This list shows the body parameters for the response: parameters: 74

BackupId: Identifies a unique backup. BackupConfigurationId: Autogenerated ID that uniquely identifies the backup configuration that is associated with this backup. CurrentState: Indicates the current state of the backup. Valid values are Queued, InProgress, Skipped, Missed, Stopped, Completed, Failed, Preparing, StartRequested, StartScheduled, StopRequested, and CompletedWithErrors. BackupConfigurationName: Specifies the name of the backup configuration. MachineAgentId: ID that uniquely identifies a Cloud Backup agent. MachineName: Name of the Cloud Server where the Cloud Backup agent resides. StateChangeTime: Indicates when the backup last changed state. IsEncrypted: Indicates if backups are encrypted. Valid values are true or false. EncryptionKey: Specifies the encryption key. Example 3.35. List backup details: JSON response "BackupId": 134332, "BackupConfigurationId": 158519, "CurrentState": "Queued", "BackupConfigurationName": "Weekly Website Backup", "MachineAgentId": 224321, "MachineName": "Web Server", "StateChangeTime": "\/Date(1358530097000)\/", "IsEncrypted": false, "EncryptionKey": "ModulusHex": "a3261939975948bb7a58dffe5ff54e65f0498f9 175f5a09288810b8975871e99af3b5dd94057b0fc07535f5f97444 504fa35169d461d0d30cf0192e307727c065168c788771c561a940 0fb49175e9e6aa4e23fe11af69e9412dd23b0cb6684c4c2429bce1 39e848ab26d0829073351f4acd36074eafd036a5eb83359d2a698d5", 75

} } "ExponentHex": 20010 76

3.4.3. List completed backups Method URI Description GET /v1.0/tenant_id}/backup/completed/backupconfigurationid} Lists the details for backups that can still be restored. Backups are returned only for the specified backup configuration ID (BackupConfigurationId). The backup configuration ID is specific to the agent. You can retrieve a list of all backup configurations for an agent with the "List all backup configurations for an agent" operation. Note The authenticated user must have access to the specified backup configuration. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.4.3.1. Request This table shows the URI parameters for the list completed backups request: Name Type Description tenant_id} String The unique identifier of the tenant or account. backupconfigurationid} Integer The unique identifier of the backup configuration. Example 3.36. List completed backups: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/backup/completed/ 158638 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 77

3.4.3.2. Response This list shows the body parameters for the response: parameters: BackupId: Identifies a unique backup. BackupConfigurationId: Autogenerated ID that uniquely identifies the backup configuration that is associated with this backup. BackupConfigurationName: Specifies the name of the backup configuration. MachineAgentId: ID that uniquely identifies a Cloud Backup agent. MachineName: Name of the Cloud Server where the Cloud Backup agent resides. CompletedTime: Indicates the time when the backup completed. BytesSearched: Indicates how many bytes were searched for this backup. NumErrors: Indicates the numbers of errors that were encountered during the run for this backup. Example 3.37. List completed backups: JSON response [ ] } "BackupId": 134386, "BackupConfigurationId": 158638, "BackupConfigurationName": "Weekly Website Backup", "MachineName": "Web Server", "MachineAgentId": 224505, "CompletedTime": "\/Date(1358535352000)\/", "BytesSearched": 10245674584, "NumErrors": 0 78

3.4.4. Get a backup report Method URI Description GET /v1.0/tenant_id}/backup/report/backupid} Gets details about a completed backup. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.4.4.1. Request This table shows the URI parameters for the get a backup report request: Name Type Description tenant_id} String The unique identifier of the tenant or account. backupid} Integer The unique identifier of a backup. Example 3.38. Get a backup report: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/backup/report/92500 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.4.4.2. Response Example 3.39. Get a backup report: JSON response "BackupId": 92500, "BackupConfigurationId": 101145, "BackupConfigurationName": "Database Server Backup", "BackupConfigurationIsDeleted": false, "ComputerName": "Database Server", "MachineAgentId": 95874, "State": "CompletedWithErrors", "CanRestore": true, 79

"StartTime": "\/Date(1351118760000)\/", "CompletedTime": "\/Date(1351119033000)\/", "Duration": "00:04:33", "FilesSearched": "11936", "BytesSearched": "3.7 GB", "FilesBackedUp": "6", "BytesBackedUp": "178.1 MB", "NumErrors": 2, "Reason": "Success", "Diagnostics": "Completed With Errors", "ErrorList": [ "BackupReportID": 48785, "ListIndex": 3210, "ErrorType": 101, "ErrorDesc": "The agent experienced a problem. (Rax)", "ExceptionDesc": "Cannot open file \"C:\\Program Files\\ MicrosoftSQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQL\\DATA\\tempdb.mdf\". The process cannot access the file because it is beingused by another process.. ", "ExceptionDetails": "1: [WindowsFs.cpp: 157- rax::windowsfs::open]error Code(313): Cannot open file \"C:\\Program Files\\ Microsoft SQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQL\\DATA\\tempdb.mdf\". The process cannot access the file because it is being used by another process.. ", "ExceptionCode": 313, "Path": "C:\\Program Files\\Microsoft SQL Server\\MSSQL10_50. MSSQLSERVER\\MSSQL\\DATA\\tempdb.mdf" }, "BackupReportID": 48785, "ListIndex": 3211, "ErrorType": 101, "ErrorDesc": "The agent experienced a problem. (Rax)", "ExceptionDesc": "Cannot open file \"C:\\Program Files\\ MicrosoftSQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQL\\DATA\\templog.ldf\". The process cannot access the file because it is being used by another process.. ", "ExceptionDetails": "1: [WindowsFs.cpp: 157- rax::windowsfs::open]error Code(313): Cannot open file \"C:\\Program Files\\ Microsoft SQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQL\\DATA\\templog.ldf\". The process cannot access the file because it is being used by another process.. ", "ExceptionCode": 313, "Path": "C:\\Program Files\\Microsoft SQL Server\\MSSQL10_50. MSSQLSERVER\\MSSQL\\DATA\\templog.ldf" } ] } 80

3.5. Restore configuration operations This section describes the restore configuration operations that are supported by the Cloud Backup API. Method URI Description PUT /v1.0/tenant_id}/restore Creates a new restore configuration and returns detailed information about the restore. POST /v1.0/tenant_id}/restore Updates an existing restore configuration. PUT /v1.0/tenant_id}/restore/files Creates a restore file associated with a restore. GET DELETE /v1.0/tenant_id}/restore/files/ restoreid} /v1.0/tenant_id}/restore/files/ restoreid} Lists files that are included or excluded in a restore. Deletes a restore configuration file. 81

3.5.1. Create a restore configuration Method URI Description PUT /v1.0/tenant_id}/restore Creates a new restore configuration and returns detailed information about the restore. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.5.1.1. Request This table shows the URI parameters for the create a restore configuration request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This list shows the body parameters for the request: parameters: BackupId: Required. Identifies a unique backup. BackupMachineId: Required. Identifies the machine where your backup was originally made. (If you restore files to the same system, BackupMachineId and DestinationMachineId are the same. If you decide to restore to another system, different from where the files were originally backed up, DestinationMachineId is different from BackupMachineId. This is an agent ID - MachineAgentID from the List agent details operation.) DestinationMachineId: Required. Identifies the machine to which you want the backups to restore. (If you restore files to the same system, BackupMachineId and DestinationMachineId are the same. If you decide to restore to another system, different from where the files were originally backed up, DestinationMachineId is different from BackupMachineId. This is an agent ID - MachineAgentID from the List agent details operation. ) DestinationPath: Required. 82

Specifies the path where you want the backup to restore. OverwriteFiles: Required. Indicates if files are overwritten. Valid values are true and false. BackupDataCenter: Optional. Specifies the datacenter where the original machine agent that was responsible for creating the backup, that is being used for the restore, is or was located (the source machine does not have to be online). Example 3.40. Create a restore configuration: JSON request } "BackupId": 133599, "BackupMachineId": 156953, "DestinationMachineId": 156751, "DestinationPath": "C:\\FolderPathForRestore\\", "BackupDataCenter": "DFW", "OverwriteFiles": false 3.5.1.2. Response This list shows the body parameters for the response: parameters: RestoreId: Creates a restore configuration and in response you get RestoreID. BackupId: Identifies a unique backup. BackupMachineId: Identifies the machine where your backup was originally made. (If you restore files to the same system, BackupMachineId and DestinationMachineId are the same. If you decide to restore to another system, different from where the files were originally backed up, DestinationMachineId is different from BackupMachineId.) DestinationMachineId: Identifies the machine to which you want the backups to restore. (If you restore files to the same system, BackupMachineId and DestinationMachineId are the same. If you decide to restore to another system, different from where the files were originally backed up, DestinationMachineId is different from BackupMachineId.) OverwriteFiles: Indicates if files are overwritten. Valid values are true and false. 83

BackupDataCenter: Specifies the datacenter where the original machine agent that was responsible for creating the backup, that is being used for the restore, is or was located (the source machine does not have to be online). BackupConfigurationId: Autogenerated ID that uniquely identifies the backup configuration that is associated with this backup. BackupConfigurationName: Specifies the name of the backup configuration. BackupRestorePoint: Identifies the date of the backup. MachineAgentId: ID that uniquely identifies a Cloud Backup agent. BackupMachineName: Indicates the machine name of the backup. BackupFlavor: RaxCloudServer for Rackspace Cloud Servers. DestinationMachineName: Indicates the machine to which you want to restore the backup. DestinationPath: Specifies the path where you want the backup to restore. IsEncrypted: Indicates if backups are encrypted. Valid values are true or false. EncryptedPassword: Specifies null or the encrypted key. PublicKey: Indicates the public key of the public/private encryption key pair. RestoreStateId: 84

Specifies the restore state ID. Valid values are 0 for Creating, 1 for Queued, 2 for In- Progress, 3 for Completed, 4 for stopped, 5 for Failed, 6 for startrequested, 7 for Stoprequested, 8 for Completed WithErrors, and 9 for Preparing. Inclusions: Indicates the list of files and folders to restore. Exclusions: Indicates the list of files and folders not to restore. Example 3.41. Create a restore configuration: JSON response "RestoreId": 1394, "BackupId": 133599, "DestinationMachineId": 156751, "OverwriteFiles": false, "BackupConfigurationId": 6265, "BackupConfigurationName": "Restore_Backup", "BackupRestorePoint": "\/Date(1357151359000)\/", "BackupMachineId": 5, "BackupMachineName": "BALAJIMBP", "BackupFlavor": "RaxCloudServer", "DestinationMachineName": "BILLS-TEST-WIN", "DestinationPath": "C:\\FolderPathForRestore\\", "BackupDataCenter": "DFW", "IsEncrypted": false, "EncryptedPassword": null, "PublicKey": "ModulusHex": "CA759606B13DC5350A3FAE3F851C76F260DC CD1EFF2DB7510AE74E00B4B2B6025422757493B2EC09B2C71DF ACFF4901E4ADAA3C9F2E6BDE9392E80FEED6F1F81BFD1D3AD9F 9080646F46632C30A94275C85859C1EFCD21BF911F311841914 BC719B1397FD3B95BE7657495903936E3345E6F083922F37761 0CBB6EB67C62B719770B25C9AB17521C2AB51B75871ED5F04F9 65C5402443ABCD05EE5E4A5201641309B8BA1100A04C62210B2 900CDEAA40F6EBF267B73634E471DB1420FF67CE41940D8ED8F 4B6C199CF5D023B410C386C58037546D34102D245AF068E891B B80F1799DDC4C9C85C6FF73DA1E45AEC98792BCC1C2DE3AAD3F 92F50F1661A4FFDC1", "ExponentHex": 10001 }, "RestoreStateId": 0 } 85

3.5.2. Update a restore configuration Method URI Description POST /v1.0/tenant_id}/restore Updates an existing restore configuration. You can only update restore configurations while they are in the "Creating" state. For details about the operation that you use to view the current state of a restore, see "List details about a restore". This table shows the possible response codes for this operation: Response Code Name 204 No Content The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.5.2.1. Request This table shows the URI parameters for the update a restore configuration request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This list shows the body parameters for the request: parameters: RestoreId: Required. Creates a restore configuration and in response you get RestoreID. BackupId: Required. Identifies a unique backup. BackupMachineId: Required. Identifies the machine where your backup was originally made. (If you restore files to the same system, BackupMachineId and DestinationMachineId are the same. If you decide to restore to another system, different from where the files were originally backed up, DestinationMachineId is different from BackupMachineId.) DestinationMachineId: Required. 86

Identifies the machine to which you want the backups to restore. (If you restore files to the same system, BackupMachineId and DestinationMachineId are the same. If you decide to restore to another system, different from where the files were originally backed up, DestinationMachineId is different from BackupMachineId.) OverwriteFiles: Required. Indicates if files are overwritten. Valid values are true and false. BackupDataCenter: Optional. Specifies the datacenter where the original machine agent that was responsible for creating the backup, that is being used for the restore, is or was located (the source machine does not have to be online). BackupConfigurationId: Required. Autogenerated ID that uniquely identifies the backup configuration that is associated with this backup. DestinationPath: Required. Specifies the path where you want the backup to restore. RestoreStateId: Required. Specifies the restore state ID. Valid values are 0 for Creating, 1 for Queued, 2 for In- Progress, 3 for Completed, 4 for stopped, 5 for Failed, 6 for startrequested, 7 for Stoprequested, 8 for Completed WithErrors, and 9 for Preparing. Example 3.42. Update a restore configuration: JSON request } "RestoreId": 14387, "BackupConfigurationId": 148325, "RestoreStateId": 1, "BackupMachineId": 156953, "DestinationMachineId": 156953, "DestinationPath": "C:\\RestoredPath", "BackupDataCenter": "DFW", "BackupId": 133599, "OverwriteFiles": true 3.5.2.2. Response This operation does not return a response body. 87

3.5.3. Include or exclude a file in a restore configuration Method URI Description PUT /v1.0/tenant_id}/restore/files Creates a restore file associated with a restore. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.5.3.1. Request This table shows the URI parameters for the include or exclude a file in a restore configuration request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This list shows the body parameters for the request: parameters: FilePath: Required. Specifies the file or directory to restore. FilePathEncoded: Optional. Specifies 64-bit encoding of FilePath. Filter: Required. Specifies if a filter is included or excluded. Valid values for Filter are 1 for Include and 2 for Exclude. ParentId: Required. Specifies the restore ID to which this file is associated. FileItemType: Required. 88

Specifies the type of file. Valid values are 0 for file, 1 for folder, and 2 for database. FileId: Optional. Specifies a file ID value. Example 3.43. Include a file in a restore configuration: JSON request } "FilePath": "C:\\ImportantFile.txt", "Filter": "1", "ParentId": 14387, "FileItemType": "0" 3.5.3.2. Response This operation does not return a response body. 89

3.5.4. List included or excluded files in a restore configuration Method URI Description GET /v1.0/tenant_id}/restore/files/ restoreid} Lists files that are included or excluded in a restore. This operation allows you list the files in a restore configuration. You can choose to view the included or the excluded files. You can also limit your list to files, folders, or databases. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.5.4.1. Request This table shows the URI parameters for the list included or excluded files in a restore configuration request: Name Type Description tenant_id} String The unique identifier of the tenant or account. restoreid} Integer The unique identifier for a restore. This list shows the body parameters for the request: parameters: FilePath: Required. Specifies the file or directory to restore. Filter: Required. Specifies if a filter is included or excluded. Valid values for Filter are 1 for Include and 2 for Exclude. RestoreId: Required. Creates a restore configuration and in response you get RestoreID. 90

FileItemType: Required. Specifies the type of file. Valid values are 0 for file, 1 for folder, and 2 for database. Example 3.44. List included or excluded files in a restore configuration: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/restore/files/148325 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe [ ] } "FilePath":"/boot", "Filter":2, "RestoreId":1394, "FileItemType":1 3.5.4.2. Response This operation does not return a response body. 91

3.5.5. Delete a restore configuration Method URI Description DELETE /v1.0/tenant_id}/restore/files/ restoreid} Deletes a restore configuration file. This table shows the possible response codes for this operation: Response Code Name 204 No Content The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.5.5.1. Request This table shows the URI parameters for the delete a restore configuration request: Name Type Description tenant_id} String The unique identifier of the tenant or account. restoreid} Integer The unique identifier for a restore. Example 3.45. Delete a restore configuration: JSON request DELETE https://dfw.backup.api.rackspacecloud.com/v1.0/1234/restore/files/1394 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.5.5.2. Response This operation does not return a response body. 92

3.6. Restore operations You should periodically test your restores to make sure that they are working as you expect. The worst possible scenario is to need your data restored now, and then to discover that your data is not available because your backups have not been configured as you expected. Another point to consider is the restore destination. Restoring to the original location and overwriting saves the most storage space, but comes with the risk that you might accidentally overwrite important, existing files. Proceed with caution when restoring. This section describes the restore operations that are supported by the Cloud Backup API. Method URI Description GET POST GET GET /v1.0/tenant_id}/backup/availableforrestore /v1.0/tenant_id}/restore/action-requested /v1.0/tenant_id}/restore/restoreid} /v1.0/tenant_id}/restore/report/restoreid} Lists the backups that are eligible for restore (a backup that has completed at least once and has not been deleted and is not expired). Manually starts or stops a restore. Lists details about the specified restore. Gets a report for the specified, completed restore. 93

3.6.1. List backups available for a restore Method URI Description GET /v1.0/tenant_id}/backup/availableforrestore This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Lists the backups that are eligible for restore (a backup that has completed at least once and has not been deleted and is not expired). Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.6.1.1. Request This table shows the URI parameters for the list backups available for a restore request: Name Type Description tenant_id} String The unique identifier of the tenant or account. Example 3.46. List backups available for a restore: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/backup/ availableforrestore User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.6.1.2. Response Example 3.47. List backups available for a restore: JSON response [ "BackupConfigurationId":172418, "BackupConfigurationName":"BackupConfig1", "MachineName":"MBP0", "MachineAgentId":252036, "IsEncrypted":false, "PublicKeyHex":10001, 94

"PublicKeyMod":"a5261939975948bb7a58dffe5ff54e65f0498f9175f5a0928 8810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0 192e307727c065168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd2 3b0cb6684c4c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb8335 9d2a698d3", "Flavor":"RaxCloudServer", "LastSuccessfulBackupTime":"\/Date(1360701971000)\/" }, "BackupConfigurationId":172417, "BackupConfigurationName":"BackupCOnfig2", "MachineName":"MBP2", "MachineAgentId":252034, "IsEncrypted":false, "PublicKeyHex":10001, "PublicKeyMod":"a5261939975948bb7a58dffe5ff54e65f0498f9175f5a09288 810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf019 2e307727c065168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd23b0 cb6684c4c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb83359d2a 698d3", "Flavor":"RaxCloudServer", "LastSuccessfulBackupTime":"\/Date(1360701957000)\/" } ] 95

3.6.2. Start or stop a restore manually Method URI Description POST /v1.0/tenant_id}/restore/action-requested Manually starts or stops a restore. This table shows the possible response codes for this operation: Response Code Name 204 No Content The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.6.2.1. Request This table shows the URI parameters for the start or stop a restore manually request: Name Type Description tenant_id} String The unique identifier of the tenant or account. This list shows the body parameters for the request: parameters: Action: Required. Specifies the action to perform. Valid values are "StartManual" and "StopManual". EncryptedPassword: Required. Used only when you specify Action:"StartManual" to specify null or the encrypted key. Id: Required. Specifies the restore ID. Example 3.48. Start encrypted restore: JSON request } "Action": "StartManual", "EncryptedPassword" : 'myencryptedpassword', "Id": 13689 96

Example 3.49. Start unencrypted restore: JSON request } "Action": "StartManual", "Id": 13692 Example 3.50. Stop restore manually: JSON request } "Action": "StopManual", "Id": 13689 3.6.2.2. Response This operation does not return a response body. 97

3.6.3. List details about a restore Method URI Description GET /v1.0/tenant_id}/restore/restoreid} Note Lists details about the specified restore. For details about the operation that you can use to list included or excluded files in a restore configuration, see "List included or excluded files in a restore configuration". This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.6.3.1. Request This table shows the URI parameters for the list details about a restore request: Name Type Description tenant_id} String The unique identifier of the tenant or account. restoreid} Integer The unique identifier for a restore. Example 3.51. List details about a restore: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/restore/1394 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.6.3.2. Response This list shows the body parameters for the response: parameters: RestoreId: 98

Creates a restore configuration and in response you get RestoreID. BackupId: Identifies a unique backup. BackupMachineId: Identifies the machine where your backup was originally made. (If you restore files to the same system, BackupMachineId and DestinationMachineId are the same. If you decide to restore to another system, different from where the files were originally backed up, DestinationMachineId is different from BackupMachineId.) DestinationMachineId: Identifies the machine to which you want the backups to restore. (If you restore files to the same system, BackupMachineId and DestinationMachineId are the same. If you decide to restore to another system, different from where the files were originally backed up, DestinationMachineId is different from BackupMachineId.) OverwriteFiles: Indicates if files are overwritten. Valid values are true and false. BackupDataCenter: Specifies the datacenter where the original machine agent that was responsible for creating the backup, that is being used for the restore, is or was located (the source machine does not have to be online). BackupConfigurationId: Autogenerated ID that uniquely identifies the backup configuration that is associated with this backup. BackupConfigurationName: Specifies the name of the backup configuration. BackupRestorePoint: Identifies the date of the backup. MachineAgentId: ID that uniquely identifies a Cloud Backup agent. BackupMachineName: Indicates the machine name of the backup. BackupFlavor: RaxCloudServer for Rackspace Cloud 99 Servers.

DestinationMachineName: Indicates the machine to which you want to restore the backup. DestinationPath: Specifies the path where you want the backup to restore. IsEncrypted: Indicates if backups are encrypted. Valid values are true or false. EncryptedPassword: Specifies null or the encrypted key. PublicKey: Specifies the public key of the public/private encryption key pair. RestoreStateId: Specifies the restore state ID. Valid values are 0 for Creating, 1 for Queued, 2 for In- Progress, 3 for Completed, 4 for stopped, 5 for Failed, 6 for startrequested, 7 for Stoprequested, 8 for Completed WithErrors, and 9 for Preparing. Inclusions: Indicates the list of files and folders to restore. Indicates the list of files and folders to not restore. Example 3.52. List details about a restore: JSON response "RestoreId":1394, "BackupId":133886, "DestinationMachineId":864, "OverwriteFiles":true, "BackupConfigurationId":6270, "BackupConfigurationName":"Restore_Backup", "BackupRestorePoint":"\/Date(1357151359000)\/", "BackupMachineId":866, "BackupMachineName":"sujala-test-centos", "BackupFlavor":"RaxCloudServer", "DestinationMachineName":"BILLS-TEST-WIN", "DestinationPath":"C:\\Test\\", "BackupDataCenter": "DFW", "IsEncrypted":false, "EncryptedPassword":null, "PublicKey":"ModulusHex":"CA759606B13DC5350A3FAE3F851C7 6F260DCCD1EFF2DB7510AE74E00B4B2B6025422757493B2EC09B2C7 1DFACFF4901E4ADAA3C9F2E6BDE9392E80FEED6F1F81BFD1D3AD9F9 080646F46632C30A94275C85859C1EFCD21BF911F311841914BC719 B1397FD3B95BE7657495903936E3345E6083922F377610CBB6EB67C 62B719770B25C9AB17521C2AB51B75871ED5F04F965C5402443ABCD 100

05EE5E4A5201641309B8BA1100A04C62210B2900CDEAA40F6EBF267 B73634E471DB1420FF67CE41940D8ED8F4B6C199CF5D023B410C386 C58037546D34102D245AF068E891BB80F1799DDC4C9C85C6FF73DA1 E45AEC98792BCC1C2DE3AAD3F92F50F1661A4FFDC1", "ExponentHex":10001}, "RestoreStateId":3 } 101

3.6.4. Get restore report Method URI Description GET /v1.0/tenant_id}/restore/report/restoreid} This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Gets a report for the specified, completed restore. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.6.4.1. Request This table shows the URI parameters for the get restore report request: Name Type Description tenant_id} String The unique identifier of the tenant or account. restoreid} Integer The unique identifier for a restore. Example 3.53. Get restore report: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/restore/report/1394 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.6.4.2. Response This list shows the body parameters for the response: parameters: BackupConfigurationId: Autogenerated ID that uniquely identifies the backup configuration just created. BackupConfigurationName: Specifies the name of the backup configuration. 102

BackupReportId: Indicates the ID of the backup report. RestorePoint: Indicates the time of the restore. StartTime: Indicates the starting time of the restore. CompletedTime: Indicates the completed time of the restore. Duration: Indicates the total time to restore. OriginatingComputerName: Specifies the backup machine name. State: Indicates the state of the restore. Valid values include Creating, Queued, InProgress, Completed, Stopped, Failed, startrequested, Stoprequested, CompletedWithErrors, and Preparing. NumFilesRestored: Indicates the number of files restored. NumBytesRestored: Indicates the number of bytes (size of total files) restored. RestoreDestination: Specifies the system to which the files are restored. RestoreDestinationMachineId: Specifies the machine ID to which the files are restored. NumErrors: Indicates the number of errors encountered. Reason: Explanation of errors. 103

Diagnostics: Further explanation of errors. ErrorList: List of errors. Example 3.54. Get restore report: JSON response } "BackupConfigurationId":6270, "BackupConfigurationName":"Restore_Backup", "BackupReportId":133886, "RestorePoint":"\/Date(1357151359000)\/", "StartTime":"\/Date(1357226521000)\/", "CompletedTime":"\/Date(1357226535000)\/", "Duration":"00:00:14", "OriginatingComputerName":"sujala-test-centos", "State":"CompletedWithErrors", "NumFilesRestored":"35", "NumBytesRestored":"18 MB", "RestoreDestination":"BILLS-TEST-WIN", "RestoreDestinationMachineId":864, "NumErrors":"1", "Reason":"UnableToProcessSomeFiles", "Diagnostics":"Some files may not have been restored", "ErrorList":[ ] 104

3.7. Activity operations This section describes the activity operations that are supported by the Cloud Backup API. Method URI Description GET /v1.0/tenant_id}/system/activity/agentid} Lists all in-progress and completed activity for an agent. Activity types are Backup, Cleanup, and Restore. GET /v1.0/tenant_id}/activity Lists all activity completed or in-progress for the user. 105

3.7.1. List activity for an agent Method URI Description GET /v1.0/tenant_id}/system/activity/agentid} This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Lists all in-progress and completed activity for an agent. Activity types are Backup, Cleanup, and Restore. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.7.1.1. Request This table shows the URI parameters for the list activity for an agent request: Name Type Description tenant_id} String The unique identifier of the tenant or account. agentid} Integer The unique identifier for an agent. Example 3.55. List activity for an agent: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/system/activity/232180 User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.7.1.2. Response This list shows the body parameters for the response: parameters: Id: Specifies the restore ID, backup ID, or cleanup ID. Type: Specifies type of activity. Valid values are Restore, Backup, or Cleanup. 106

ParentId: Indicates the backup configuration ID for a backup. DisplayName: Indicates the backup name or restore name. IsBackupConfigurationDeleted: Indicates if the backup configuration is deleted. Valid values are true or false. SourceMachineAgentId: Indicates the machine agent ID of the source system. SourceMachineName: Indicates the machine agent name of the source system. DestinationMachineAgentId: Specifies the machine agent ID of the destination system. DestinationMachineName: Indicates name of the destination system. CurrentState: Indicates the current state. Valid values are Creating, Queued, InProgress, Completed, Stopped, Failed, startrequested, Stoprequested, Completed WithErrors, and Preparing. TimeOfActivity: Indicates the time of the activity. BackupId: Specifies the backup ID associated with a restore. Example 3.56. List activity for an agent: JSON response [ "ID": 137987, "Type": "Backup", "ParentId": 162423, "DisplayName": "Weekly Website Backup", "IsBackupConfigurationDeleted": false, "SourceMachineAgentId": 232180, "SourceMachineName": "Web Server", "DestinationMachineAgentId": 0, "DestinationMachineName": "", "CurrentState": "Completed", 107

] } "TimeOfActivity": "\/Date(1359033934000)\/", "BackupId": 134332 108

3.7.2. List activity for a user Method URI Description GET /v1.0/tenant_id}/activity Lists all activity completed or in-progress for the user. This table shows the possible response codes for this operation: Response Code Name 200 OK The request succeeded. Description 400 Bad Request There were one or more errors in the request. 401 Unauthorized The supplied token was not authorized to access the resources. Either it is expired or invalid. 403 Forbidden Access to the requested resource was denied. 404 Not Found The backend services did not find anything matching the request URI. 500 Instance Fault This is a generic server error. The message contains the reason for the 503 Service Unavailable This is a generic server error. The message contains the reason for the 3.7.2.1. Request This table shows the URI parameters for the list activity for a user request: Name Type Description tenant_id} String The unique identifier of the tenant or account. Example 3.57. List activity for a user: JSON request GET https://dfw.backup.api.rackspacecloud.com/v1.0/1234/activity User-Agent: controlpanel.drivesrvr.com Host: dfw.backup.api.rackspacecloud.com Content-Type: application/json; Content-Length: 0 X-Auth-Token: 95b1788906f74d279d03001c6a14f3fe This operation does not accept a request body. 3.7.2.2. Response This list shows the body parameters for the response: parameters: Id: Specifies the restore ID, backup ID, or cleanup ID. Type: Specifies type of activity. Valid values are Restore, Backup, or Cleanup. ParentId: 109

Indicates the backup configuration ID for a backup. DisplayName: Indicates the backup name or restore name. IsBackupConfigurationDeleted: Indicates if the backup configuration is deleted. Valid values are true or false. SourceMachineAgentId: Indicates the machine agent ID of the source system. SourceMachineName: Indicates the machine agent name of the source system. DestinationMachineAgentId: Specifies the machine agent ID of the destination system. DestinationMachineName: Indicates name of the destination system. CurrentState: Indicates the current state. Valid values are Creating, Queued, InProgress, Completed, Stopped, Failed, startrequested, Stoprequested, Completed WithErrors, and Preparing. TimeOfActivity: Indicates the time of the activity. BackupId: Specifies the backup ID associated with a restore. Example 3.58. List activity for a user: JSON response [ "ID": 134692, "Type": "Backup", "ParentId": 6265, "DisplayName": "Backup1", "IsBackupConfigurationDeleted": false, "SourceMachineAgentId": 5, "SourceMachineName": "BALAJIMBP", "DestinationMachineAgentId": 0, "DestinationMachineName": "", "CurrentState": "Completed", "TimeOfActivity": "\/Date(1357230189000)\/", "BackupId": 134332 110

] }, } "ID": 134693, "Type": "Backup", "ParentId": 6265, "DisplayName": "Backup1", "IsBackupConfigurationDeleted": false, "SourceMachineAgentId": 5, "SourceMachineName": "BALAJIMBP", "DestinationMachineAgentId": 0, "DestinationMachineName": "", "CurrentState": "Completed", "TimeOfActivity": "\/Date(1357230189000)\/", "BackupId": 134386 111

Glossary Agent The application that is installed on the server that knows how to perform backups and restores. Backup A group of folders, files, or both stored on Cloud Backup for a particular server and configuration. Backup configuration The definition of what is going to be backed up and when. Restore The process of bringing your system back to a previously saved state. Restore configuration The definition of what is going to be restored and where. 112