Professional Documents
Culture Documents
Nirvanix Web Services API Developer's Guide v1.0: Release 1.1.4.5
Nirvanix Web Services API Developer's Guide v1.0: Release 1.1.4.5
■ SOAP the Internet, and optimized for dealing with media files (audio, video, etc). The goal of an IMFS is to provide massive scalability to deal
■ REST with the challenges of media storage growth, with guaranteed access and availability regardless of time and location. Finally, an IMFS
gives applications the ability to access data securely, without the large fixed costs associated with acquiring and maintaining physical
■ HTTP GET storage assets.
The Nirvanix Media Filesystem
An IMFS is:
❍
Overview
● A file system for the Internet
● Implemented as a cluster of nodes
● Understanding Nirvanix ● Accessed via Web Services
Namespaces ● Consumed on-demand, as a service
❍ Why are Namespaces important? ● Optimized for managing media (large files, streaming video/audio, processing images, etc)
● Completely secure and protected
❍ Authentication Namespace
back to top
❍ Account Management Namespace
❍ IMFS Namespace
❍ Metadata Namespace
When to use an IMFS?
❍ Sharing Namespace Internet Media File Systems are great solutions for developers working on applications dealing with user-generated content services,
fixed content storage, community-based media sharing applications, video/music/photo management, and archival solutions. Instead
❍ Image Namespace of building a storage file system from scratch or buying an expensive storage solution, developers can avoid the upfront cost and
❍ Transfer Namespace ongoing maintenance windows by simply connecting to an online storage service. The richer the feature set of this service, the lower
the effort on application development and the faster the time to get to market.
❍ Audio Namespace
❍ Video Namespace Software and service providers often want to focus their development and sustaining efforts on the core of their offering, and not have
to learn or hire skills in Internet scale media storage, global network delivery, or multi-million user account management and security.
These core competencies can be leveraged when storage services are provided by an IMFS. Another benefit of using an IMFS is in
● Setting up Nirvanix MFS cases where there is resource contention associated with IT budgeting and staffing. An IMFS model provides a pay-as-you-go pricing
❍ Master Accounts model that scales with usage.
■ Creating Master Accounts At the same time, an IMFS is not the best option for serving storage across the internet to I/O intensive applications inside of the data
center. These applications require sub-millisecond response times that the Internet is not yet able to support. This characterization is
❍ Child Accounts limited to a small group of solutions, like transactional processing systems, access to block storage, 3D rendering or any other intense I/
■ Creating Child Accounts O application. The Nirvanix Media File Service (Nirvanix MFS) was built and optimized for managing user-generated content, ease
of integration, ease of scalability, and ease of control.
■ Deleting Child Accounts
■ Managing Child Account back to top
Information
❍ Authentication
■ Login
Most of these core specifications have come from W3C, including XML, SOAP, and WSDL; UDDI comes from OASIS.
■ LoginProxy
■ Logout back to top
■ ChangePassword
■ SetChildAccountPassword Calling Nirvanix Web Services
● Internet Media File System The SOAP and REST protocols are used for transmission of the data and methods in this document. The SOAP protocol allows for
(IMFS) Namespace simple integration with most languages and development systems. You can learn more about SOAP at http://en.wikipedia.org/wiki/SOAP.
For more information about REST you can visit http://en.wikipedia.org/wiki/Representational_State_Transfer. REST and SOAP methods
❍ Customer API are available via SSL through HTTPS.
■ Common Errors
■ CopyFiles SOAP
■ CopyFolders
To call our web service your client must be able to consume our WSDL file. Most programming and scripting languages have tools
■ CreateFolders that facilitate consuming a web service. Generally, when your developer toolkit inspects the WSDL file it will auto-generate
■ DeleteFiles programming code that interfaces with the Web Services. Nirvanix has individual WSDLs for each namespace.
■ DeleteAllTags For most cases, relative paths should be used because it is simpler, easier, and shorter to reference. However, in cases where the
caller needs to access another user's file system (such as an administrator managing a user's account), absolute paths must be used.
■ DeleteTags
API Method Response Format: When an API method is called, a response is returned to the caller in XML format. The content
■ GetTags
type of the response will be "text/xml". The default XML response for methods that do not return data to the caller is:
■ SetTags
■ SearchMetadata <Response>
■ SearchTags <ResponseCode>0</ResponseCode>
</Response>
● Sharing Namespace
A "code" value of zero (code="0") indicates that the method completed successfully. If the code is not zero, then an error occurred and
Customer API
the XML response will look like this:
❍
■ ListHostedItems
■ CreateHostedItem <Response>
<ResponseCode>80006</ResponseCode>
■ RemoveHostedItem
<ErrorMessage>Session not found for ip = 10.0.0.1, token = 2dc8542b-210d-
45df-85df-b48b277c13c5</ErrorMessage>
● Image Namespace </Response>
❍ Resize
❍ RotateFlip HTTP GET
See section 9.3of RFC 2616 for information about GET and partial GET.
● Download Component
❍ Customer API back to top
■ HTTP Get
● Accounting Namespace
❍ Customer API Understanding Nirvanix Namespaces
■ CreateChildAccount
■ DeleteChildAccount Why are Namespaces important?
■ GetAccountUsage
A namespace is the logical context in which a group of one or more entities might exist. For describing our Web Services, we
■ GetAccountLimits use namespaces to group related calls or methods. A method defined in a namespace is associated with that namespace. The same
■ SetAccountLimits method could be independently defined in multiple namespaces, that is, the meaning associated with a method defined in one namespace
is independent of the same method declared in any other namespace. However, in this version of the API method calls are unique
■ GetAccountInfo and namespaces mainly provide a means of grouping logically related methods into corresponding namespaces, thereby making the
■ SetAccountInfo system more modular.
■ GetAccountNotes The namespaces below are groupings of methods for our Web Services and are not to be confused with a file system namespace, in
■ SetAccountNotes which files can be grouped into folders, and folders can live inside other folders with other files (directory tree). Each of the
namespaces below has a separate WSDL document describing those Web Services included in each namespace.
■ ListChildAccounts
back to top
● Audio Namespace
❍ Customer API Authentication Namespace
Transcode
http://services.nirvanix.com/ws/Authentication.asmx?WSDL
■
❍ Customer API
■ Transcode Account Management Namespace
■ ExtractFrames http://services.nirvanix.com/ws/Accounting.asmx?WSDL
❍ Glossary
❍ Managing Virtual URLs IMFS Namespace
❍ Propagation Times http://services.nirvanix.com/ws/IMFS.asmx?WSDL
❍ Mapped Zones
back to top
❍ Generating Transfer Paths for
Mapped Virtual URLs
❍ Using Web Services with Virtual Metadata Namespace
URLs
http://services.nirvanix.com/ws/Metadata.asmx?WSDL
❍ Miscellaneous
back to top
● Exception Framework
Customer API
❍
Sharing Namespace
http://services.nirvanix.com/ws/Sharing.asmx?WSDL
● Appendices
❍ Date Formats back to top
❍ Country Codes for Web Services
❍ HTTP Update Examples Image Namespace
http://services.nirvanix.com/ws/Image.asmx?WSDL
back to top
Transfer Namespace
http://node1.nirvanix.com/ws/Transfer.asmx?WSDL
back to top
Audio Namespace
http://services.nirvanix.com/ws/Audio.asmx?WSDL
back to top
Video Namespace
http://services.nirvanix.com/ws/Video.asmx?WSDL
back to top
back to top
Master Accounts
Master accounts can support multiple child accounts. For example, if you were using the Nirvanix MFS to launch a backup service, then
you would create a single Master account for the service, and then tie each new subscriber to your online backup service into a unique
child account. The master account gives the developer an aggregated view into overall usage, while child accounts give developers
the ability to segment storage and set strict limits on storage and bandwidth usage limits within these accounts. Master accounts can
also have multiple applications for multiple services. When you create a master account, the first Application is created for you.
back to top
Child Accounts
The configuration XML can be used to store detailed account information specific to an account and was designed to be a light
data repository for things like notes and other metadata on a child account.
back to top
Authentication
The authentication system takes in the application key and username/password to authenticate. It returns a session token that will be
used for subsequent calls into the system. If you call the login method with a master account you must also provide an application key so
it can be determined which application you wish to do file operations on. It is strongly suggested you use a secure socket for connecting
your application with the Nirvanix MFS. This will reduce the chances an intermediary party will be able to determine your application key
and password. The SessionToken returned will expire if not used within 20 minutes. Despite this all connections are suggested to be
done over a secure channel.
back to top
Folder1
|_Folder2
Then after the call is executed the new structure will be:
Folder1
|_Folder2
|_Folder3
|_Folder4
back to top
back to top
Uploading Files
For optimal performance, the process to upload files is a 2-step process, where the Upload node is first identified by the
method GetStorageNode, followed by the upload to that particular node. The upload token and upload servers IP address are retrieved
by GetStorageNode. The Upload Token will expire after 72 hours and is not refreshed. This means the token will expire even if it is
being used, unlike the session token. Before each upload you must ask for the upload node and use the information for that upload.
With the HTTP Upload you can pass multiple files at once but for the AppendFile (SOAP) you can pass multiple files but only over
multiple calls. A good example of using AppendFile to upload multiple files at once would be under a multithreaded application where
each thread is uploading its own file. As long as each path being passed is different this will work correctly since we identify which file you
are uploading by the path you pass.
SOAP
AppendFile lets you append pieces of a file until the entire file has been sent. Each piece of the file that is sent is stored in a temporary
file under the current session you are using. You can continue uploading the same file until the session is invalidated or three days
has passed. Any temporary files are removed at that point and you will have to begin uploading the file from the start.
A small example of how to read a file in .Net on the local file system and upload to Nirvanix is shown below.
HTTP Upload
The http protocol allows a multipart/form-data POST (RFC 1867) to upload files using "/Upload.ashx". You can pass two required
parameters "uploadToken" and "destFolderPath" in the form data. These must precede any multipart form data which contains file
content. This allows us to verify security before attempting to accept the upload, if this is not done you will receive an error.
The maximum content size is limited to the maximum content-length in the http request which is: 2097150 kilobytes. If you exceed
the maximum value you get a 10001 error.
<html>
<body>
<form ENCTYPE="multipart/form-data" action="http://nodex.nirvanix.com/
Upload.ashx" method="post">
Upload Token: <input type="text" name="uploadToken" /><br />
Upload Folder: <input type="text" name="destFolderPath" /><br />
File 1: <input type="file" name="uploadFile1"/><br />
File 2: <input type="file" name="uploadFile2"/><br />
<input type="submit" value="Upload"/>
</form>
</body>
</html>
-----------------------------170062046428149\r\n
Content-Disposition: form-data; name="uploadToken"\r\n
\r\n
fe-pC9v9~pRYkzGkBHQ~STJX0Ac2~48J3zyLxVO~APDbYlYSk5JO8xFTZw\r\n
-----------------------------170062046428149\r\n
Content-Disposition: form-data; name="destFolderPath"\r\n
\r\n
/backup\r\n
-----------------------------170062046428149\r\n
Content-Disposition: form-data; name="forwardingUrl"\r\n
\r\n
http://myserver.com/uploadComplete.aspx?file=/backup/myfile.dat\r\n
-----------------------------170062046428149\r\n
Content-Disposition: form-data; name="fileContent"; filename="myfile.dat"\r\n
Content-Type: binary/octet-stream\r\n
Content-Range: 0-4/5\r\n
\r\n
0xf0 0xf1 0xf2 0xf3 0xf4\r\n
-----------------------------170062046428149--\r\n
Each form data part is separated by a boundary. In the example above, this boundary appears as "-----------------------------
170062046428149". This is a unique value that must not appear in the data. The \r\n throughout the form data represents carriage
return/linefeed characters that is used as the separator for lines in a POST of the multipart/form-data. Each form data part begins with
the header information for that part followed by the content of that part which may be the value of an input parameter of the form or
the content of a file. A blank line delimits the header from the content. More information on HTTP Headers can be found in RFC 2616
Section 14.
The HTTP headers of parts containing file content includes the following:
● Content-Disposition - Defines the file name
● Content-Type - Defines the type of file being uploaded. Binary/octet-stream is generic binary data and can be used for all file types.
● Content-Range (Optional) - Lets you define portions of the file to upload. The format is firstBytePosition-lastBytePosition/
totalFileLength where the byte positions are zero-based.
Content-Range
The Content-Range header is sent with a partial part of a file to specify where in the full file the partial part should be applied
(RFC2616 Section 14.16). It is used to allow two different upload actions.
When included with a HTTP upload (/Upload.ashx), it will allow you to upload contiguous portions of a file in multiple requests by
providing the range that you will be sending in each request. This allows you to upload extremely large files (file size greater than 2 GB
which is the limit of a single HTTP request) by progressively appending content of a file spanning multiple requests rather than sending
the entire file in one request. In this case, the Content-Range must adhere to the following guidelines or an error will be returned:
● The first byte position of the very first range must be 0.
● For each subsequent range, the first byte position must be 1 more than the last byte position of the preceding range. You must append
the content of the file in order, not randomly.
● The last byte position of the last range must be 1 less than the total file length (since byte position is zero-based.) This signals that the
entire file has been uploaded.
● If Content-Range is not provided, it is assumed the entire file will be uploaded in a single request.
Existing files can be updated by uploading only the changed portions of a file to overwrite using the partial file update call (/Update.
ashx). This call will allow you to pass any portion of a file that already exists in your account. To verify the result of the update, we require
the MD5 hash of the complete resulting file. The MD5 should be based on the entire updated file, not the MD5 of the content
actually transferred. In this case, the Content-Range must adhere to the following guidelines or an error will be returned:
● Multiple ranges may be sent in the same request. However, all ranges in the request must be applied to the same file.
● If multiple ranges are sent, they must not overlap one another.
● If the updated file length is greater than the original length, the added content must be included in one of the ranges.
● Because of the MD5 hash validation, all changed ranges must be sent in a single request.
● If Content-Range is not provided, it is assumed the entire updated file will be uploaded in a single request.
For more details of how Content-Range is used to perform partial file update, please refer to these HTTP Update Examples.
back to top
Downloading Files
Request URL
To download a file from the Nirvanix MFS, you can make a REST request to the transfer node using the GET method. The URL has
the following format:
http://<Node>/<sessionToken>/<appName>/<userName>/<path>
Example:
Application Name: MyApp
Username: MyUser1
Login Session Token: 6db4715f-1e5c-4ef5-9cd6-d97bc947bf5d
Private File Path: /folder1/privateFile.txt
Hosted File Path: /folder1/folder2/hostedFile.txt
Transfer Node: node1.nirvanix.com
Private File URL: http:// node1.nirvanix.com/6db4715f-1e5c-4ef5-9cd6-d97bc947bf5d/MyApp/MyUser1/folder1/privateFile.txt
Hosted File URL: http:// node1.nirvanix.com/MyApp/MyUser1/folder1/folder2/hostedFile.txt
Optionally, you can also specify the download content disposition with the query parameter "disposition". Valid values for this parameter
are "inline" and "attachment".
Example:
http://node1.nirvanix.com/MyApp/MyUser1/folder1/folder2/hostedFile.txt?disposition=inline
http://node1.nirvanix.com/MyApp/MyUser1/folder1/folder2/hostedFile.txt?disposition=attachment
To obtain a session token, please see the Login method in the Authentication name space.
To obtain the transfer node, please see the GetDownloadNodes method in the IMFS name space. As an alternative, and to make this a
one-step process, you can also make the same download request to services.nirvamix.com and be redirected to the correct transfer node.
Example:
http://services.nirvanix.com/MyApp/MyUser1/folder1/folder2/hostedFile.txt?disposition=attachment
is redirected to
http://node1.nirvanix.com/MyApp/MyUser1/folder1/folder2/hostedFile.txt?disposition=attachment
Request Headers
Nirvanix MFS file download accepts the following standard HTTP request headers:
● If-Modified-Since
● If-None-Match
● Range
Response Headers
Nirvanix MFS file download response includes the following standard HTTP response headers:
● Content-Length
● Content-Type
● Content-Range (if requesting range)
● Content-Disposition (if specified in the request)
● Last-Modified
● ETag
back to top
Nirvanix Extensibility
Metadata
Each file can have additional information stored about that file that we store as metadata. This metadata includes height and width for
image files, and other secondary information about files that can be retrieved from the file contents. A sample mp3 is listed below to show
the format of the metadata XML.
Additional Key/Value pairs can be added or changed using SetMetadata and DeleteMetadata and DeleteAllMetadata.
back to top
Tags
Tags allow you to set a list of strings on a particular file or folder. They can be used in a fashion similar to tags in blog posts and are
useful for search. The tags can be retrieved using GetTags and they can be set or deleted with SetTags, DeleteTag or DeleteAllTags.
back to top
Sharing
Sharing will set one or more folders to be available for viewing by non-authenticated users. This allows functionality such as
websites images, video streaming and anonymous downloads by anyone who knows the path to the shared items. Any downloads
by anonymous users of files that are shared will be applied to your usage and charged as such.
After you have a folder and files uploaded and in your account you can share them using CreateHostedItem. This web service will return
the full download link to the file you are sharing or a partial download link if it is a folder. Below is an example of the input and output for
the call to allow a shared item. This link will redirect you to the globally load-balanced file. Browsers should automatically support this. If
you are writing a download application you will need to support an HTTP 306 Response, as defined in RFC 2616 section 10.3.2 301.
Call:
String downloadLink = CreateHostedItem(sessionToken, "FolderShared/");
Download URL: (Available publicly after success of the call)
http://services.nirvanix.com/AppName/ChildAccount/FolderShared/TestImage.jpg
If you wish to list the items you have previously shared you can call the method ListHostedItems, and then you can call the
method RemoveHostedItems to remove any items you no longer wish to share.
back to top
Authentication Namespace
Customer API
The Authentication namespace is used to allow connections into the system. Every connection must first retrieve a session token from
the login method. This will allow you to authenticate using a single accounts username and password under a single application.
Login
The Login method is used to login to the system and generate a Session Token restricted to the caller's IP address.
Input Parameters
Parameter Description Required/Optional
appKey The application key that contains the user to be logged in. Required
userName The account name to log in with. Required
password The password for the account. Required
Output Values
Name Description Sample Value
A result code with the status of the login. If the result is 0 the method
ResponseCode 0
was successful.
SessionToken A token that represents the logged in user. 54592180-7060-4D4B-BC74-2566F4B2F943
/ws/Authentication/Login.ashx?appKey=8da051b0-a60f-4c22-
a8e0-d9380edafa6f&userName=testuser&password=Abc123
LoginProxy
The LoginProxy method is used to login to the system on behalf of another consumer and generate a Session Token restricted to
that consumer's IP address.
Input Parameters
Parameter Description Required/Optional
appKey The application key that contains the user to be logged in. Required
userName The account name to log in with. Required
password The password for the account. Required
consumerIP The consumer's IP address. Required
Output Values
Name Description Sample Value
A result code with the status of the login. If the result is 0 the method
ResponseCode 0
was successful.
SessionToken A token that represents the logged in user. 54592180-7060-4D4B-BC74-2566F4B2F943
/ws/Authentication/LoginProxy.ashx?appKey=8da051b0-a60f-4c22-
a8e0-d9380edafa6f&userName=testuser&password=Abc123&consumerIP=123.123.123.123
Logout
The Logout method removes a session token from use. This is primarily used for security so when you are finished with a session token
it cannot be used by anyone else. This will also allow you to switch the session token when combined with the login if the account is
in continuous use such as a background processing application.
Input Parameters
Parameter Description Required/Optional
sessionToken The session token that represents the user to be logged out. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the rename. If the result is 0 the method was successful. 0
/ws/Authentication/Logout.ashx?sessionToken=54592180-7060-4D4B-BC74-2566F4B2F943
<Response>
<ResponseCode>0</ResponseCode>
</Response>
ChangePassword
The ChangePassword is used to change an accounts own password.
Input Parameters
Parameter Description Required/Optional
appKey The application key that contains the user to change. Required
userName The account name to change. Required
oldPassword The old password for the account. Required
newPassword The new password to change to. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the password change. If the result is 0 the method was successful. 0
/ws/Authentication/ChangePassword.ashx?appKey=8da051b0-a60f-4c22-a8e0-d9380edafa6f
&userName=testuser&oldPassword=Abc123&newPassword=Def456
<Response>
<ResponseCode>0</ResponseCode>
</Response>
Input Parameters
Parameter Description Required/Optional
appKey The application key that contains the user to change. Required
userName The master account name. Required
password The password for the master account. Required
childAccountUsername The child account name to set the password. Required
childAccountPass The child account password to set to. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the set password. If the result is 0 the method was successful. 0
/ws/Authentication/SetChildAccountPassword.ashx?appKey=8da051b0-a60f-4c22-
a8e0-d9380edafa6f
&userName=MasterUser&password=Abc123&childAccountUsername=testuser&childAccountPassword=Def456
<Response>
<ResponseCode>0</ResponseCode>
</Response>
back to top
Customer API
All file system operations require the caller to be authenticated. Therefore, all IMFS calls require a session token which can be obtained
by the Login call. In general, paths can be specified as either absolute or relative to the accounts root folder. For example, if the caller
logged in with application key "8da051b0-a60f-4c22-a8e0-d9380edafa6f" and account name "admin" then the following paths are equivalent:
Absolute: /8da051b0-a60f-4c22-a8e0-d9380edafa6f/admin/web/index.html
Relative: web/index.html
In the case where relative path is absent or null, the accounts root folder is the assumed path.
For most cases, relative paths should be used because it is simpler, easier, and shorter to reference. However, in cases where the
caller needs to access another users file system (such as an administrator managing a user's account), absolute paths must be used.
All IMFS calls may potentially result in a set of common errors. The following table lists these common errors. Each IMFS method may
also define additional errors specific to that call.
Common Errors
Code Description Details
100 Missing required parameters Occurs when one or more required parameters is missing.
70009 Path too long Occurs when the total length of a relative path exceeds the maximum length of 512 characters.
70010 File/Folder name too long Occurs when a file or folder name exceeds the maximum length of 256 characters.
70102 Invalid path character Occurs when any path contains illegal characters.
Occurs when the session cannot be found. This may happen after the session has been ended
80006 Session not found
with an explicit log out or the session has expired due to inactivity.
80101 Invalid session token Occurs when the session token is malformed.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
The path to the file to be copied. More than one file can be specified using a multiple instance
srcFilePath Required
of this parameter.
The path to the folder where the items will be copied to. The name of the item is not included
destFolderPath Required
in the destination folder.
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the copy. If the result is 0 the method was successful. 0
/ws/IMFS/CopyFiles.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&srcFilePath=Folder/subfolder/samplefile.txt&destFolderPath=Folder/
subfolder/DestFolder
<Response>
<ResponseCode>0</ResponseCode>
</Response>
CopyFolders
The CopyFolders method is used to copy a folder from one location to another. The CopyFolders method can be used to copy one or
more folders. Any file that resides within folders that are copied and has metadata associated with it will also have that same
metadata associated with the copied files.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
The folders to be copied. More than one folder may be specified using multiple instances of
srcFolderPath Required
this parameter.
destFolderPath The path to the folder where the items will be copied to. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the copy. If the result is 0 the method was successful. 0
/ws/IMFS/CopyFolders.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d&
srcFolderPath=Folder/subfolder/FolderToCopy&destFolderPath=Folder/
subfolder/DestFolder
<Response>
<ResponseCode>0</ResponseCode>
</Response>
CreateFolders
The CreateFolder method is used to create a new folder at the specified location.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
The path to the folder to be created. More than one folder may be specified using multiple
folderPath Required
instances of this parameter.
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the folder create. If the result is 0 the method was successful. 0
/ws/IMFS/CreateFolders.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&folderPath=Folders/subfolder/NewFolder/1| Folders/subfolder/NewFolder2
<Response>
<ResponseCode>0</ResponseCode>
</Response>
DeleteFiles
The DeleteFiles method is used to remove one or more files.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
The path to the file to be deleted. One or more files may be specified using multiple instances
filePath Required
of this parameter.
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the file delete. If the result is 0 the method was successful. 0
/ws/IMFS/DeleteFiles.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&filePath=Folders/subfolder/myfile.txt
<Response>
<ResponseCode>0</ResponseCode>
</Response>
DeleteFolders
The DeleteFolders method is used to remove one or more folders. Folders will be deleted even if they contain files.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
The path to the folder to be deleted. One or more folders may be specified using multiple
folderPath Required
instances of this parameter.
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the folder delete. If the result is 0 the method was successful. 0
/ws/IMFS/DeleteFolders.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&folderPath=Folders/subfolder
<Response>
<ResponseCode>0</ResponseCode>
</Response>
ListFolder
The ListFolder method is used to describe the contents of a folder. It lists the files and folders as well as some basic information about
the items, such as the file size, metadata, tags and created date. This call supports paging.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
The path to the folder to be listed. If not specified, the logged in accounts root folder will be
folderPath Optional
listed.
pageNumber The page number to list. Required
pageSize The size of the page to return. Required
The sorting criteria. Must be one of the following: Name, CreatedDate, SizeBytes, FileType.
sortCode By default, listing will be sorted by Name. Also regardless of the sorting criteria, all folders will Optional
be grouped together and all files will be grouped together.
Flag to indicate whether the sorting should be in descending order. Set to true if descending
sortDescending Optional
order is desired.
showMetadata Flag to indicate whether metadata is returned. Optional
showTags Flag to indicate whether tags are returned. Optional.
Output Values
Name Description
A result code with the status of the move. The code will be 0 if the method is successful or one of the error codes below if
ResponseCode
an error occurs.
ListFolder The requested page of folder content if the response code is 0.
ErrorMessage The error message if the response code is not 0.
Errors
Code Description Details
70001 Folder not found Occurs if the folder does not exist.
/ws/IMFS/ListFolder.ashx?sessionToken=8da051b0-a60f-4c22-a8e0-d9380edafa6f
&folderPath=DirTest/F8&pageNumber=1&pageSize=5&sortCode=Name&sortDescending=false
MoveFiles
The MoveFiles method is used to move a file from one location to another. The MoveFiles method can be used to move one or more files
to a given folder.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
The path to the file to be move. More than one file can be specified using multiple instances of
srcFilePath Required
this parameter.
The path to the folder where the items will be moved to. The name of the item is not included
destFolderPath Required
in the destination folder.
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the move. If the result is 0 the method was successful. 0
/ws/IMFS/MoveFiles.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&srcFilPath=Folder/subfolder/samplefile.txt&destFolderPath=Folder/
subfolder/DestFolder
MoveFolders
The MoveFolders method is used to move a folder from one location to another. The MoveFolders method can be used to move one or
more folders.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
The folders to be moved. More than one folder may be specified using multiple instances of
srcFolderPath Required
this parameter.
destFolderPath The path to the folder where the items will be moved to. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the move. If the result is 0 the method was successful. 0
/ws/IMFS/MoveFolders.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&srcFolderPath=Folder/subfolder/FolderToCopy&destFolderPath=Folder/
subfolder/DestFolder
<Response>
<ResponseCode>0</ResponseCode>
</Response>
RenameFile
The RenameFile method is used to rename a file from one name to another.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
filePath The path to the file to be renamed. Required
newFileName The name of the new file. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the rename. If the result is 0 the method was successful. 0
/ws/IMFS/RenameFile.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&filePath=Folder/subfolder/samplefile.txt&newFileName=mynewfile.txt
RenameFolder
The RenameFolder method is used to rename a folder from one name to another.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
folderPath The path to the folder to be renamed. Required
newFolderName The name of the new folder. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the rename. If the result is 0 the method was successful. 0
/ws/IMFS/RenameFolder.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&folderPath=Folder/subfolder/myfolder&newFolderName=mynewfolder
<Response>
<ResponseCode>0</ResponseCode>
</Response>
GetDownloadNodes
The GetDownloadNodes method is used to obtain the current optimum download nodes for one or more files. Although the
download location for each file is subject to change, this should rarely happen. Some of the events that would cause a change are:
● The file has been cached at another node closer to the user.
● The file has been removed from the node due to lack of access.
● The node temporarily cannot serve the file due to hardware failure.
● The node is down for maintenance.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
The path to the file to download. More than one may be specified using multiple instances of
filePath Required
this parameter.
Output Values
Name Description
A result code with the status of the request. The code will be 0 if the method is successful or one of the error codes below
ResponseCode
if an error occurs.
DownloadNode The corresponding download nodes if the response code is 0.
ErrorMessage The error message if the response code is not 0.
REST XSD
Errors
Code Description Details
100 Missing required parameters Occurs when one or more required parameters is missing.
70002 File not found Occurs if any of the files does not exist.
70009 Path too long Occurs when the total length of a relative path exceeds the maximum length of 512 characters.
70010 File/Folder name too long Occurs when a file or folder name exceeds the maximum length of 256 characters.
70102 Invalid path character Occurs when any path contains illegal characters.
Occurs when the session cannot be found. This may happen after the session has been ended
80006 Session not found
with an explicit log out or the session has expired due to inactivity.
80101 Invalid session token Occurs when the session token is malformed.
/ws/IMFS/GetDownloadNodes.ashx?sessionToken=8da051b0-a60f-4c22-a8e0-d9380edafa6f
&filePath=My%20Folder/My%20File%201.txt&filePath=My%20Folder/My%20File%202.txt
GetOptimalUrls
The GetOptimalUrls method is used to obtain the current optimum download links for one or more files. These links can be used by
anyone to download the associated files within a limited time window. The links can also optionally be restricted to a single IP address.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
The path to the file to download. More than one may be specified using multiple instances of
filePath Required
this parameter.
expiration The links time to expiration in seconds. Required
consumerIP The IP address of the web client which the link is best suited for. Optional
ipRestricted Boolean determining whether the link is restricted to the consumerIP. Optional
Output Values
Name Description
A result code with the status of the request. The code will be 0 if the method is successful or one of the error codes below
ResponseCode
if an error occurs.
Download The corresponding download link information if the response code is 0.
ErrorMessage The error message if the response code is not 0.
REST XSD
Errors
Code Description Details
100 Missing required parameters Occurs when one or more required parameters is missing.
70005 Invalid path Occurs if any of the files do not exist or a if a folder was passed in.
70009 Path too long Occurs when the total length of a relative path exceeds the maximum length of 512 characters.
70010 File/Folder name too long Occurs when a file or folder name exceeds the maximum length of 256 characters.
70102 Invalid path character Occurs when any path contains illegal characters.
Occurs when the session cannot be found. This may happen after the session has been ended
80006 Session not found
with an explicit log out or the session has expired due to inactivity.
80101 Invalid session token Occurs when the session token is malformed.
/ws/IMFS/GetOptimalUrls.ashx?sessionToken=8da051b0-a60f-4c22-a8e0-d9380edafa6f
&filePath=My%20Folder/My%20File%201.txt&filePath=My%20Folder/My%20File%
201.txt&expiration=300
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
sizeBytes The size of the file to be uploaded in bytes. Required
The IP address for the machine that will make the upload. The default is the IP address of
consumerIP Optional
the machine making this call.
ipRestricted True if the upload token should be restricted to the consumerIP. The default is true. Optional
destFolderPath The folder path that any uploads using the provided upload token must be uploaded into. Required
True if a file with the same name in the destination folder should be overwritten by a file
fileOverwrite uploaded using the upload token. If this value is false, name collisions will result in an Optional
upload error. The default is false.
The number of seconds the upload token has until the first byte of an upload is transferred.
firstByteExpiration Optional
The default value is for 10 minutes.
The number of seconds the upload token has until an upload is completed. The default
lastByteExpiration Optional
value is for 3 days.
Output Values
Name Description
A result code with the status of the request. The code will be 0 if the method is successful or one of the error codes below
ResponseCode
if an error occurs.
UploadHost The server to upload to.
UploadToken An access token to pass into one of the upload methods when performing an upload.
ErrorMessage The error message if the response code is not 0.
REST XSD
Errors
Code Description Details
100 Missing required parameters Occurs when one or more required parameters is missing.
70009 Path too long Occurs when the total length of a relative path exceeds the maximum length of 512 characters.
70010 File/Folder name too long Occurs when a file or folder name exceeds the maximum length of 256 characters.
70102 Invalid path character Occurs when any path contains illegal characters.
Occurs when the session cannot be found. This may happen after the session has been ended
80006 Session not found
with an explicit log out or the session has expired due to inactivity.
80101 Invalid session token Occurs when the session token is malformed.
/ws/IMFS/GetStorageNodeExtended.ashx?sessionToken=290cc579-bc33-4283-
8701-68f5028b5adf&
sizeBytes=450000&consumerIP=127.0.0.1&ipRestricted=true&destFolderPath=/&
fileOverwrite=true&firstByteExpiration=6000&lastByteExpiration=259200
GetStorageNode
The GetStorageNode method is used to determine which storage node a file should be uploaded to. It returns the host to upload to and
an Upload Token that will be used to authenticate.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
sizeBytes The size of the file to be uploaded in bytes. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the rename. If the result is 0 the method was successful. 0
UploadHost The server to upload to. node1.nirvanix.com
AccessToken An access token to pass into one of the upload methods. ASDF123DASD
/ws/IMFS/GetStorageNode.ashx?sessionToken=8da051b0-a60f-4c22-
a8e0-d9380edafa6f&sizeBytes=1024
SearchFileSystem
The SearchFileSystem method is used to search for items in your file system that match the specified search criteria.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
username The username of the account to be searched. Required
The search string to look for files and folders. The '*' character may be used at the end of
searchTerm Required
the string to support wild card searches.
The file type to search for. Valid types are 'Unassigned', 'Document', 'Executable', 'Audio',
fileType Optional
'Video', 'Image'. Passing 'null' means to allow any file type in the search results.
minFileSize The minimum file size to search for. Should be set to 0 when searching for folders. Required
maxFileSize The maximum file size to search for. Should be set to 0 when searching for folders. Required
minCreatedDate The minimum created date for files. Required
maxCreatedDate The maximum created date for files. Required
maxResults The maximum number of results to return Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the search. If the result is 0 the method was successful. 0
SearchCount The number of results returned in the search. 15
CreatedDate The date the item was added to the file system. 9/1/2007
FileType The type of file. Audio
IsFile A flag to indicate whether the item is a file or folder. True
ItemName The name of the file or folder. Myimage.jpg
ItemPath The fully qualified path to the file or folder. MyFolder/MyImage.jpg
SizeBytes The size of the file. 0 if the item is a folder. 123456
/ws/IMFS/SearchFileSystem.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&username=myuser&fileType=Video&minFileSize=0&maxFileSize=100000000
&minCreatedDate=7/1/2007&maxCreatedDate=9/1/2007&maxResults=1000
Sideload
The Sideload command allows a user to load remote content into their Nirvanix file system.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
targetURL The URL to retrieve the remote content from. Required
destFilePath The Nirvanix file system path to store the remote content. Required
callbackURL The URL to be invoked by NWS when the sideload operation has been completed. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the sideload. If the result is 0 the method was successful. 0
/ws/IMFS/Sideload.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&targetURL=http://mywebsite.com/default.html&destFilePath=mywebpages/default.html
<Response>
<ResponseCode>0</ResponseCode>
</Response>
back to top
Metadata Namespace
Nirvanix Web Services implements the industry standard REST and SOAP protocols allowing end users to upload, copy, move, and
delete files and folders. Furthermore, end users can retrieve a listing of their files and also associate user-defined tags and metadata.
Metadata refers to a specific type of information about a specific type of file. Nirvanix Web Services supports any type of metadata.
back to top
Customer API
The Nirvanix Web Services API provides both a REST and SOAP interface for manipulating metadata. The following standard
metadata types are supported; however you can create any type of metadata you desire:
● Width
● Height
● Duration
● BitRate
● FrameRate
● Title
● Artist
● Album
● Genre
● Track
● IsVariableBitRate
DeleteAllMetadata
The DeleteAllMetadata method is used to remove all metadata from a file. Please note that the MD5 metadata type will NOT be
removed with this call.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
path The path to the file to have all metadata removed. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the metadata delete. If the result is 0 the method was successful. 0
/ws/Metadata/DeleteAllMetadata.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&path=Folders/subfolder/myfile.txt
<Response>
<ResponseCode>0</ResponseCode>
</Response>
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
path The path to the file to have all metadata removed. Required
The types of metadata to be deleted. More than one type may be specified using multiple
metadata Required
instances of this parameter.
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the metadata delete. If the result is 0 the method was successful. 0
/ws/Metadata/DeleteMetadata.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&path=Folders/subfolder/myfile.txt&metadata=Width
<Response>
<ResponseCode>0</ResponseCode>
</Response>
GetMetadata
The GetMetadata method is used to retrieve all metadata from a file.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
path The path to the file to have all metadata retrieved. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the metadata get. If the result is 0 the method was successful. 0
/ws/Metadata/GetMetadata.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&sourcePath=Folders/subfolder/myfile.txt
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
path The path to the file to have the metadata set. Required
The metadata to be set. The format is : More than one metadata may be specified using
multiple instances of this parameter. The maximum length for the metadata type is 100
metadata Required
characters. The maximum length for the metadata value is 400 characters. The following
characters are not allowed to specified in metadata: * |
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the metadata set. If the result is 0 the method was successful. 0
/ws/Metadata/SetMetadata.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&path=Folders/subfolder/myfile.txt&metadata=Title:MySong
<Response>
<ResponseCode>0</ResponseCode>
</Response>
DeleteAllTags
The DeleteAllTags method is used to remove all tags from a file.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
path The path to the file to have all tags removed. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the tag delete. If the result is 0 the method was successful. 0
/ws/Metadata/DeleteAllTags.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&path=Folders/subfolder/myfile.txt
<Response>
<ResponseCode>0</ResponseCode>
</Response>
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
path The path to the file to have all metadata removed. Required
The tags to be deleted. More than one type may be specified using multiple instances of this
tag Required
parameter.
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the tag delete. If the result is 0 the method was successful. 0
/ws/Metadata/DeleteTags.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&path=Folders/subfolder/myfile.txt&tag=foo&tag=bar
<Response>
<ResponseCode>0</ResponseCode>
</Response>
GetTags
The GetTags method is used to retrieve all tags from a file.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
path The path to the file to have all tags retrieved. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the tag get. If the result is 0 the method was successful. 0
/ws/Metadata/GetTags.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&path=Folders/subfolder/myfile.txt
SetTags
The SetTags method is used to set specified tags for a file.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
path The path to the file to have all metadata removed. Required
The tags to be set. One or more tags may be specified using multiple instances of this
parameter. This does allow for duplicate tags so if you specify multiple instances of the same
tag Required
tag, you will get all occurrences of that tag. The following characters are not allowed to
specified in a tag: * |
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the tag set. If the result is 0 the method was successful. 0
/ws/Metadata/SetTags.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&path=Folders/subfolder/myfile.txt&tag=foo&tag=bar
<Response>
<ResponseCode>0</ResponseCode>
</Response>
SearchMetadata
The SearchMetadata method is used to search for items in your file system that match the specified metadata search criteria.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
username The username of the account to be searched. Required
searchKey The metadata search key. Example: Duration. Required
The search string to look for files and folders. The '*' character may be used at the end of the
searchTerm Required
string to support wild card searches. Wildcards are not supported if the searchKey is MD5.
maxResults The maximum number of results to return Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the search. If the result is 0 the method was successful. 0
SearchCount The number of results returned in the search. 15
CreatedDate The date the file was added to the file system. 9/1/2007
FileType The type of file. Audio
IsFile A flag to indicate whether the item is a file or folder. True
ItemName The name of the file or folder. Myimage.jpg
ItemPath The fully qualified path to the file or folder. MyFolder/MyImage.jpg
SizeBytes The size of the file. 0 if the item is a folder. 123456
/ws/Metadata/SearchMetadata.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d&
username=myuser&searchKey=Duration&searchTerm=3*&maxResults=1000
SearchTags
The SearchTags method is used to search for items in your file system that match the specified tag search criteria.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
username The username of the account to be searched. Required
The search string to look for in the tags. The '*' character may be used at the end of the string
searchTerm Required
to support wild card searches.
maxResults The maximum number of results to return Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the search. If the result is 0 the method was successful. 0
SearchCount The number of results returned in the search. 15
CreatedDate The date the file was added to the file system. 9/1/2007
FileType The type of file. Audio
IsFile A flag to indicate whether the item is a file or folder. True
ItemName The name of the file or folder. Myimage.jpg
ItemPath The fully qualified path to the file or folder. MyFolder/MyImage.jpg
SizeBytes The size of the file. 0 if the item is a folder. 123456
/ws/Metadata/SearchTags.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d&
username=myuser&searchTerm=mytag*&maxResults=1000
back to top
Sharing Namespace
For Nirvanix Web Services 1.0 the sharing component only consists of hosting functionality. Host links are paths where everyone has
read access. This could be used to host a website, share images, or other media, or to email links to files in a Nirvanix MFS account.
A hosted link may be embedded into a webpage and presented as a standard ordinary web-hosted file. The return value would be the
URL for the file or folder. The owner of the hosted item will always be the one charged for the download.
back to top
Customer API
ListHostedItems
The ListHostedItems method is used to list all of the files and folders that the user has hosted.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
pageNumber The page number to list. Required
pageSize The size of the page to return. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the copy. If the result is 0 the method was successful. 0
HostedItem An object that describes the host items.
/ws/Sharing/ListHostedItems.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&pageNumber=1&pageSize=10
CreateHostedItem
The CreateHostedItem method is used to allow any user to have read access to a file or folder. If a folder is hosted, then everyone has
read access to all its contents.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
sharePath The path to the file or folder to be hosted. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the copy. If the result is 0 the method was successful. 0
/ws/Sharing/CreateHostedItem.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&sharePath=Folder/subfolder/samplefile.txt
RemoveHostedItem
The RemoveHostedItem method is used to remove the read access from everyone but the owner from a file or folder.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
sharePath The path to the file or folder to be has its permissions restricted. Required
Output Values
Name Description Sample Value
ResponseCode A result code with the status of the copy. If the result is 0 the method was successful. 0
/ws/Sharing/RemoveHostedItem.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&sharePath=Folder/subfolder/samplefile.txt
<Response>
<ResponseCode>0</ResponseCode>
</Response>
back to top
Image Namespace
For Nirvanix Web Services 1.0 the Image component currently consists of taking an image in your file system and resizing it. This is
useful, for example, in resizing images dynamically for displaying on different device-types, or rendering display thumbnails of large
images uploaded by users.
Resize
The Resize method is used to resize an existing image. A new image will be created as a result and put into your file system.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
srcFilePath The path to the image file. Required
The path to the destination image file. Image format conversions occur automatically based on
destFilePath Required
the suffix of this file. i.e. .bmp
The width of the new image. May be set to -1 if you want the width to be calculated based on
width Required
the aspect ratio of the original image. Both width and height cannot be set to -1.
The height of the new image. May be set to -1 if you want the height to be calculated based on
height Required
the aspect ratio of the original image. Both width and height cannot be set to -1.
callbackURL The URL to be invoked by NWS when the image resizing has been completed. Optional
Output Values
Name Description Sample Value
A result code with the status of the image resize command. If the result is 0 the method was
ResponseCode 0
successful.
/ws/Image/Resize.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d&srcFilePath=
Folder/subfolder/samplefile.jpg&destFilePath=MyResizedImages/samplefileResized.gif
&width=320&height=640&callbackURL=http://mywebsite.com/mypage.aspx
<Response>
<ResponseCode>0</ResponseCode>
</Response>
RotateFlip
The RotateFlip method is used to rotate or flip an existing image. A new image will be created as a result and put into your file system.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
srcFilePath The path to the image file. Required
The path to the destination image file. Image format conversions occur automatically based on
destFilePath Required
the suffix of this file. i.e. .bmp
The number of degrees to rotate the image. Valid values are: RotateNone, Rotate90,
rotate Required
Rotate180, Rotate270
The type of flip manipulation of the image. Valid values are: FlipNone, FlipHorizontal,
flip Required
FlipVertical, FlipHorizontalVertical
callbackURL The URL to be invoked by NWS when the image rotation/flip has been completed. Optional
Output Values
Name Description Sample Value
A result code with the status of the image rotate/flip command. If the result is 0 the method was
ResponseCode 0
successful.
/ws/Image/RotateFlip.ashx?sessionToken=22b16933-2cd5-40ab-
981e-dc9b6cfba06d&srcFilePath=
Folder/subfolder/samplefile.jpg&destFilePath=MyNewImages/samplefileRotated.gif
&rotate=Rotate90&flip=FlipHorizontal&callbackURL=http://mywebsite.com/mypage.aspx
back to top
Download Component
The download component allows users of the Nirvanix Internet Media File System (IMFS) to retrieve and download their files. For
each download request, the download component performs authentication and authorization before actually serving out the bytes. At the
end of each request, it also records the actual number of bytes served for accounting purposes.
back to top
Customer API
Because of the global caching node architecture, downloading a file from IMFS is a two-step process. First the user must obtain
the download location for each file path from the IMFS interface. This will return the optimum download node which has the requested
file based on the user's geographical location or SLA . Once this download node is known, the user can simply perform an HTTP get
request to download the file from that node.
HTTP Get
Once the download node for a file is known, the file can be downloaded by a normal HTTP Get request. The download URL has the
following format:
http://<DownloadNode>/<AppName>/<AccountName>/<RelativeFilePath>?sessionToken=<SessionToken>
Example:
http://123.123.123.123/MyApp/MyAccount/My%20Folder/My%20File%201.txt?sessionToken=8da051b0-a60f-4c22-a8e0-d9380edafa6f
In the case when the user has granted access of a file to the public, the sessionToken parameter is omitted from the URL.
Example:
http://123.123.123.123/MyApp/MyAccount/MyWebsite/index.html
If the user is authenticated and authorized to download the file, the GET will succeed and the files content will be streamed to the
requesting client. After the request ends, the actual number of bytes served will be recorded for accounting purposes. This happens even
if the client aborts the download in which case, the number of bytes served up to that point will be recorded.
back to top
Transfer Namespace
This namespace of the Nirvanix Web Services provides a set of API methods that allow a user to upload files to our Internet Media
File System (IMFS). An HTTP upload interface is also provided.
back to top
Customer API
AppendFile
The AppendFile method is used to upload a file in parts. If the path does not exist it will be created.
For example, if filename is "Vacations\2007\Hawaii\beachDay1.jpg" then when the file is done uploading the file would be added to
Vacations\2007\Hawaii\beachDay1.jpg". The system creates all the folders that do not exist in this scenario.
Note: If you receive a transmission error or partial transmission you must call GetStorageNode to retrieve a new token and you must
resend your file from byte 0.
Input Parameters
Parameter Description Required/Optional
uploadToken A valid upload access token for the user. Required
path The path of the file being uploaded. This MUST match between successive calls to AppendFile. Required
A byte[] array of the actual data to be sent. The maximum size of this array is 2,147,483,647
fileData Required
bytes.
If this is the last part of the file to be uploaded this should be true, this will flag the file as finished
endOfFile and move it into the folder specified. Files being uploaded will not appear until this last part is Required
specified and sent.
Output Values
None
UploadFile
The UploadFile method is used to upload a file in its entirety. If the path does not exist it will be created. The maximum file size for
uploading a file using this interface is 2 GB. If your file is larger than 2 GB, you must use the AppendFile method.
For example, if filename is "Vacations\2007\Hawaii\beachDay1.jpg" then when the file is done uploading the file would be added to
"Vacations\2007\Hawaii\beachDay1.jpg". The system creates all the folders that do not exist in this scenario.
Input Parameters
Parameter Description Required/Optional
uploadToken A valid upload access token for the user. Required
path The path of the file being uploaded. This MUST match between successive calls to AppendFile. Required
A byte[] array of the actual data to be sent. The maximum size of this array is 2,147,483,647
fileData Required
bytes.
Output Values
None
HTTP Upload
The HTTP protocol allows a multipart/form-data POST to upload files using "/Upload.ashx". Please refer to this section for more details
on multipart/form-data POST. Once the HTTP post is complete the response is a summary of the upload. Optionally the user can
be forwarded to another URL. If the user is forwarded, some additional parameters are appended to the forwarding URL.
This allows users to upload directly from a webpage to the Nirvanix IMFS.
The actual IMFS destination of upload files is destFolder/<non-common request path-part>/<request file name>
For example if the user uploads the files in a single request using destFolderPath = "MyOnlinePhotos" the following are the resulting
actual destination IMFS paths:
When submitting a request with multiple files if one of those files has an error such as a path longer than 512 characters all files will
be processed until the failed file. The response will be for the file that failed and no information will be returned for the success cases.
The maximum content size is limited to the maximum content-length in the http request which is: 2097150 kilobytes. If you exceed
the maximum value you get a 10001 error.
Input Parameters
Parameter Description Required/Optional
Required. This must come before the multipart form
uploadToken A valid upload access token for the user.
data
Required. This must come before the multipart form
destFolderPath The destination path of the files being uploaded. The actual
data.
A valid URL to forward the user to after the upload completes or
forwardingUrl Optional. See below.
has an error.
Output Values
HTTP Upload either responds with the following XML, or it forward the user (see Forwarding URL section below.)
<Response>
<ResponseCode>0</ResponseCode>
<FilesUploaded>1</FilesUploaded>
<BytesUploaded>105450</BytesUploaded>
</Response>
Forwarding URL
If a forwardingUrl is passed it must be able to contain a query string. It can optionally include the forwarding protocol. When not included
the protocol defaults to HTTP. Users are responsible for URL encoding this parameter. See http://www.blooberry.com/indexdot/html/
topics/urlencoding.htm for reserved characters that are important for users to encode. For a sample of how to URL encode see http://
www.w3schools.com/tags/ref_urlencode.asp.
Example:
1. Browser renders a page generated by a Nirvanix customer. The page contains a form with a file input. The action for the form is:
http://node1.nirvanix.com/upload.ashx?uploadToken=ASdsdasd11233&destFolderPath=Photos/Vacations/2007Hawaii/DSC231256.
jpg&forwardingUrl=www%2Egoogle%2Ecom%2Fsearch%3Fhl%3Den%26safe%3Doff%26pwst%3D1%26sa%3DX%26oi%3Dspell
%26resnum%3D0%26ct%3Dresult%26cd%3D1%26q%3Ddogs%2Bcats%26spell%3D1%0D%0A
2. Upon submitting the form, the data is sent to Nirvanix via HTTP Post. When the upload completes, the user is redirected to the
forwarding URL:
http://www.google.com/search?hl=en&safe=off&pwst=1&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=dogs+cats
&spell=1&NVX.returnCode=0&NVX.errorMessage=
3. Browser renders the google.com page and has a chance to process any returnCode.
HTTP Update
The http protocol also allows a multipart/form-data POST to update an existing file using "/Upload.ashx" in conjunction with the
"Content-Range" header. Please refer to this section for more details on multipart/form-data POST. Once the HTTP post is complete
the response is a summary of the update request. However, since the processing time may be much greater than the transfer time
(for example, updating 1MB of a 4GB file), the user is notified of the completion of the update asynchronously via the required callback
URL. Also because of the asynchronous nature of this call, a MD5 hash of the updated file is required to ensure the integrity of the update.
If the MD5 does not match after assembling the modified version, the update fails and the original version of the file remains intact.
Input Parameters
Parameter Description Required/Optional
Required. This must come before the multipart form
uploadToken A valid upload access token for the user.
data containing file content.
Required. This must come before the multipart form
destFolderPath The destination path of the file being updated.
data containing file content.
Required. This must come before the multipart form
fileMD5 The MD5 hash of the complete updated file.
data containing file content.
A valid Url to notify the user after the update completes or has
callbackURL Required.
an error.
Output Values
HTTP Update either responds with the following XML, or it forward the user (see Forwarding URL section below.)
<Response>
<ResponseCode>0</ResponseCode>
<FilesUploaded>1</FilesUploaded>
<BytesUploaded>105450</BytesUploaded>
</Response>
Callback Url
Users are responsible for URL encoding this parameter. See http://www.blooberry.com/indexdot/html/topics/urlencoding.htm for
reserved characters that are important for users to encode. For a sample of how to URL encode see http://www.w3schools.com/
tags/ref_urlencode.asp.
Accounting Namespace
The Accounting Namespace allows users to set and retrieve the limits, contact information, and usage for accounts. These settings
control the access to a user's files. This component exposes the commands that allow a Master Account to create child accounts, and
set and read their limits.
back to top
Customer API
NOTE: SetAccountPassword method will be deprecated with release 1.0.3.7 and will be replaced with
more secure and fully functional methods shortly after.
CreateChildAccount
The CreateChildAccount command creates a child account with the provided username, password, and contact info under a
specific Application Key. The provided Session Token must be from the parent account login. The username must be unique under
the Application Key associated with the session token. This command is exposed as a web service.
Input Parameters
Parameter Description Details
SessionToken A valid session token for the user. Required
Username The account username. Required Length limit: 320
Password The account password. Required Length limit: 100
FirstName An account contact name Optional Length limit: 30
LastName Optional Length limit: 30
MiddleInitial Optional Length limit: 1
PhoneNumber A primary contact phone number Optional Length limit: 50
EmailAddress The Email address associated with the account. Optional Length limit: 1000
EmailFormat The format the email will be sent to the account. (html/text) Optional
Address1 Optional Length limit: 200
Address2 Optional Length limit: 200
City Optional Length limit: 200
State Optional Length limit: 2
CountryID Optional
PostalCode Optional Length limit: 50
Output Values
A Response Code is always returned. If an error occurred, an Error Message is also returned.
REST XSD
DeleteChildAccount
The DeleteChildAccount command deletes the child account with the provided username. The provided Session Token must be from
the parent account login and the Application Key provided must be from an application owned by that parent account. The username must
be under the Application Key associated with the session token. If the username exists under the Application Key, it will be deleted.
A Response Code will be returned. This command is exposed as a web service.
Note: Deleting an account that a Virtual URL is mapped to will delete the Virtual URL.
Input Parameters
Parameter Description Details
SessionToken A valid session token for the user. Required
Username The account username. Required
Output Values
A Response Code is always returned. If an error occurred, an Error Message is also returned.
REST XSD
GetAccountUsage
The GetAccountUsage command returns all of the usage metrics for the provided username under the provided Application Key.
A Response Code will be returned, as well as a list of usage. This command is exposed as a web service.
Input Parameters
Parameter Description Details
SessionToken A valid session token for the user. Required
Username The account username. Required
Output Values
A Response Code is always returned. A successful execution will return the feature name and usage amount. If an error occurred, an
Error Message is returned.
REST XSD
GetAccountLimits
The GetAccountLimits command returns all of limits for the account associated with the session token. A Response Code will be returned,
as well as a list of the limits. This command is exposed as a web service.
Input Parameters
Parameter Description Details
SessionToken A valid session token for the user. Required
Username The child account to operate on. Required
Output Values
A Response Code is always returned. A successful execution will return the feature type, feature value, and whether or not the feature
limit was associated with an application key. If an error occurred, an Error Message is returned.
REST XSD
SetAccountLimits
The SetAccountLimits command sets the limits for the provided username under the provided Application Key. The Session Token
must belong to a Parent Account for the username. A Response Code will be returned. This command is exposed as a web service.
Input Parameters
Parameter Description Details
SessionToken A valid session token for the user. Required
Username The account username. Required
The feature type. Valid types are:
● StorageAmount - The total bytes stored.
Type ● DownloadBandwidthAmount - The total number of bytes that can be downloaded per pay period. Required
● FileSizeDownloadLimit - The maximum size in bytes of a file that can be downloaded.
● UploadBandwidthAmount - The total number of bytes that can be uploaded per pay period.
Output Values
A Response Code is always returned. If an error occurred, an Error Message is returned.
REST XSD
GetAccountInfo
The GetAccountInfo command gets the account details for the account associated with the session token. A Response Code will be
returned, as well as a list of information. This command is exposed as a web service.
Input Parameters
Parameter Description Details
SessionToken A valid session token for the user. Required
Username The child account to operate on. Required
Output Values
A Response Code is always returned. A successful execution will return account contact data. If an error occurred, an Error Message
is returned.
REST XSD
SetAccountInfo
The SetAccountInfo command changes the account details for the provided session token.
Input Parameters
Parameter Description Details
sessionToken A valid session token for the user. Required
Username Required
FirstName Required
LastName Required
MiddleInitial Required
PhoneNumber Primary Phone Number Required
CompanyName Required
EmailAddress Required Length limit: 1000
EmailFormat TEXT or HTML Required
Address1 Required Length limit: 200
Address2 Required Length limit: 200
Locality Required
City Required Length limit: 200
State Required Length limit: 2
CountryID See Country Code List for Valid values. Required
PostalCode Required Length limit: 50
Output Values
A Response Code is always returned. If an error occurred, an Error Message is returned.
REST XSD
Errors
Code Description Details
Occurs when a required contact field is missing Occurs when a contact field is too long
65101 InvalidContactException
Occurs if an email address is not valid
65003 InvalidSlaError Occurs if the supplied SLA is invalid
Occurs if a billing contact is not provided at MasterAccount creation Occurs if no payment
65001 AccountCreateException
information is provided at MasterAccount creation
65004 InvalidAppKey Occurs if an invalid AppKey is used
65005 InvalidAccountType Occurs if non-Parent Account attempts to create a child
65006 DuplicateUserNameUnderAppKey Occurs if UserName is not unique for an AppKey
SetAccountNotes
The SetAccountNotes command sets an XML document stored with the account. The XML must be well formed or it will be rejected.
The Session Token must belong to a Parent Account for the username. A Response Code will be returned. This command is exposed as
a web service.
Input Parameters
Parameter Description Details
sessionToken A valid session token for the user or parent account. Required
username The account username. Required
xmlNotes Well formed XML document Required
Output Values
A Response Code is always returned. If an error occurred, an Error Message is returned.
REST XSD
GetAccountNotes
The GetAccountNotes command sets an XML document stored with the account. The XML must be well formed or it will be rejected.
The Session Token must belong to a Parent Account for the username. A XML document will be returned. This command is exposed as
a web service.
Input Parameters
Parameter Description Details
sessionToken A valid session token for the user or parent account. Required
username The account username. Required
Output Values
A Response Code is always returned. If an error occurred, an Error Message is returned.
REST XSD
ListChildAccounts
The ListChildAccounts method will retrieve the list of child accounts associated with the specified master account.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the logged in master account. Required
pageNumber The page number to list. Required
pageSize The number of child accounts to list for the specified page. Required
Output Values
Name Description Sample Value
A result code with the status of the ListChildAccounts command. If the result is 0 the method was
ResponseCode 0
successful.
/ws/Accounting/ListChildAccounts.ashx?sessionToken=22b16933-2cd5-40ab-
981e-dc9b6cfba06d
&pageNumber=1&pageSize=500
<Response>
<ResponseCode>0</ResponseCode>
<Account>childuser1</Account>
<Account>childuser2</Account>
</Response>
Audio Namespace
The Audio Namespace allows a user to convert an audio file from one format to another with the ability to specify optional parameters
such as number of frames, frame rate, and number of audio channels.
back to top
Customer API
Transcode
The Transcode method is used to convert an audio file from one format to another.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
srcFilePath The audio file to be transcoded. Required
The resulting transcoded file. The audio format of this file will be based on the suffix. i.e. a file
destFilePath Required
named foo.mp3 will be in MP3 format.
callbackURL The URL to be invoked then the transcode operation has been completed. Optional
The available options are:
● numberOfFrames - Minimum: 1
● numberOfChannels - Minimum: 1
REST
options Optional
Each option is passed as a separate parameter. Ex: &numberOfFrames=10000&biteRate=192
SOAP
Output Values
Name Description Sample Value
A result code with the status of the transcode command. If the result is 0 the method was
ResponseCode successful. However, you must wait until your callback URL was invoked (if specified) in order to 0
determine if the actual transcode operation was successful.
/ws/Audio/Transcode.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&srcFilePath=mysong.mp3&destFilePath=mynewsong.wav&numberOfFrames=10000&bitRate=192
<Response>
<ResponseCode>0</ResponseCode>
</Response>
back to top
Video Namespace
The Video Namespace allows a user to convert a video file from one format to another with the ability to specify optional parameters such
as number of frames, frame rate, width, height, and aspect ratio.
back to top
Customer API
Transcode
The Transcode method is used to convert a video file from one format to another.
Input Parameters
Required/
Parameter Description
Optional
sessionToken A valid session token for the user. Required
srcFilePath The video file to be transcoded. Required
The resulting transcoded file. The video format of this file will be based on the suffix. i.e. a file named foo.
destFilePath Required
mov will be in MOV QuickTime format.
callbackURL The URL to be invoked then the transcode operation has been completed. Optional
The available options are:
● numberOfFrames - Minimum: 1
● width - Minimum: 1 (May be set to -1 if a valid height is specified to maintain the aspect ratio)
● height - Minimum: 1 (May be set to -1 if a valid width is specified to maintain the aspect ratio)
● audioFreq - Must be Integer, Minimum: 0 (The audio sample frequency when converting to FLV files
SOAP
Output Values
Name Description Sample Value
A result code with the status of the transcode command. If the result is 0 the method was
ResponseCode successful. However, you must wait until your callback URL was invoked (if specified) in order to 0
determine if the actual transcode operation was successful.
/ws/Video/Transcode.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&srcFilePath=myvideo.
mpg&numberOfFrames=10000&frameRate=24&width=640&height=480&aspectRatio=1.33&audioFreq=44100
<Response>
<ResponseCode>0</ResponseCode>
</Response>
ExtractFrames
The ExtractFrames method will extract frames from a video file and store them as images.
Input Parameters
Parameter Description Required/Optional
sessionToken A valid session token for the user. Required
srcFilePath The video file to have frames extracted from it. Required
destFolderPath The folder path where the extracted frame images will be placed in the file system. Required
callbackURL The URL to be invoked then the frame extraction operation has been completed. Optional
A list of ':' delimited optional parameters. The allowable parameters and their corresponding
limits are numberOfFrames (Minimum: 1), frameRate (Minimum: 0.0), width (Minimum: 1),
height (Minimum: 1), startTimeOffset (Minimum: 0.0), frameName, frameFormat,
frameNumberDigits (Minimum: -1). Either 'width' or 'height' may be set to -1 to maintain the
aspect ratio of the video file frames, 'frameRate' is in frames per second. 'startTimeOffset' is
options Optional
the number of seconds to skip in the video prior to starting the frame extraction, 'frameName'
is the name to be used for the images. Defaults to the name of the video file, 'frameFormat' is
either 'jpg' (default), 'bmp', 'png', 'frameNumberDigits' is the number of digits to append to the
'frameName' when naming the extracted frame files. NOTE: If width is specified, height must
be specified as well and vice versa.
Output Values
Name Description Sample Value
A result code with the status of the video frame extraction command. If the result is 0 the method
ResponseCode was successful. However, you must wait until your callback URL was invoked (if specified) in order 0
to determine if the actual video frame extraction operation was successful.
/ws/Video/ExtractFrames.ashx?sessionToken=22b16933-2cd5-40ab-981e-dc9b6cfba06d
&srcFilePath=myvideo.mpg&destFolderPath=myFrameFolder&numberOfFrames=10000&frameName=MyFrame
<Response>
<ResponseCode>0</ResponseCode>
</Response>
back to top
Glossary
NS Record (NS-Rec) - Used to delegate a portion of your name space (ex: campus1.domain.com) to external name servers.
You cannot use NS records for your base domain name (ex: domain.com) as the DNS Manager creates these records for you
automatically. If you want to delegate a portion of your name space to another server, enter the name space as the FQDN, select NS
record type and enter the Name Server responsible for this name space in the Server Name field. (i.e. pointing storage.joe77.com to
the Nirvanix DNS servers so that they control the *.storage.joe77.com zone)
Authoritative DNS - The DNS server responsible for controlling the address information for an entire zone. (i.e. storage77.com)
CNAME - An alias within a DNS referencing a (sub) domain to a separate (sub) domains IP address associations. (i.e. Referencing
node1.storage.joe77.com to node1.nirvanix.com)
Mapped Zone (new concept) - A domain (joe77.com) or sub-domain (storage.joe77.com) that has been properly associated
within the Nirvanix DNS, including the NS-Record and CNAMEs and HAS been mapped to a specific Application or Child Account. (i.
e. storage.joe77.com pointing to nirvanix.com\JoeApp1\JoeUser1).
Default Mapping (new concept) - A domain (storage77.com) or sub-domain (storage.joe77.com) that has been properly
associated within the Nirvanix DNS, including the NS-Record and CNAMEs but HAS NOT been mapped to a specific Application or
Child Account. (i.e. storage.joe77.com pointing to nirvanix.com).
Virtual URL - A URL that has been passed to Nirvanix but does not carry the "nirvanix.com" domain. Rather, this URL is a
virtual reference of an NS-Record or Authoritative DNS assigned to us by a customer.
Propagation Times
New Virtual URLs require 24 - 72 hours for the DNS to propagate completely.
Mappings can be reassigned with only a 5 - 10 minute propagation delay.
Virtual URLs that are deleted will fail within 5 - 10 minutes. The URL will no longer resolve to the Nirvanix Nameservers after the 24 - 72
hour propagation time has elapsed.
Mapped Zones
All Virtual URLs have some sort of mapping. There are three types of mapping allowed:
1. Default Mapping - No specific mapping is designated. Use of this Virtual URL is limited to all Accounts of Applications which are
owned by the Master Account that registered the Virtual URL.
2. Application Mapping - The Virtual URL is mapped to a single Application of the Master Account that registered the Virtual URL.
Only children of the mapped Application can use this URL.
3. Account Mapping - The Virtual URL is mapped to a single Account of an Application of the Master Account that registered the
Virtual URL. Only the mapped Account can use the URL. This is helpful for sharing publicly hosted files.
*Note: Deleting an Application or Account that has Virtual URLs mapped to it will delete the Virtual URL. The Virtual URL can be re-
created. Normal setup charges would apply.
Miscellaneous
● A Virtual URL can only have one mapping. However, a single Application or Account can have several Virtual URLs mapped to it.
● All URLs with Records pointing to Nirvanix Nameservers must be registered through the Nirvanix Management Portal. This
restriction prevents URL spoofing.
back to top
Exception Framework
When an exception occurs, they often contain information useful to the user. If a path was misspelled or a session token expired, the
user should be told what went wrong. The exception framework helps convert all Nirvanix exceptions into a consistent xml response,
while hiding any proprietary programming information.
back to top
Customer API
Every web service method interacts with the Exception Framework to provide consistent, meaningful, non-technical responses to errors. If
an exception is thrown, the outermost layer of the web service will catch the exception, and return two meaningful pieces: a Response
Code and an Error Message.
Input Parameters
Parameter Description Details
Exception A default exception thrown by the .Net Runtime
BaseException Custom Nirvanix exception intentionally thrown when an error occurs
Output Values
A Response Code and Error Message is returned.
<response ns="NirvanixException">
<responseCode>82005</ responseCode>
<errorMessage>Invalid Session Token</errorMessage>
</response>
errorMessage = xmlDetailNode.SelectSingleNode("Response/" +
"ErrorMessage").InnerText;
}
If the Create Child Account SOAP call returns a Soap Exception, It will be caught, and the error response xml will be loaded into
the xmlDetailNode. The values can then be read and loaded into the ResponseCode and ErrorMessage variables.
Errors
Error Code Type
100 MissingRequiredParameter
101 InvalidParameter
160 UnsupportedOperation
50103 ParameterOutOfAcceptedRange
55001 InvalidPayment
55100 CreditCardChargeFailed
65001 CreateAccountFailed
65002 CreateAccountContactFailed
65003 InvalidSlaError
65004 InvalidAppKey
65005 InvalidAccountType
65006 DuplicateUserNameUnderAppKey
65007 DuplicateAppName
65008 PageSizeExceedsLimit
65009 DeletedAccount
65010 InvalidStatus
65011 InvalidSecurityResponse
65012 InvalidUserNameOrPassword
65016 DuplicateMasterAccountUserName
65101 InvalidContactParameter
65102 AppNameNotFound
65104 UserNameNotFound
70001 FolderNotFound
70002 FileNotFound
70003 PathNotFound
70004 AlreadyExists
70005 InvalidPath
70006 DownloadPathNotFound
70007 MetadataDoesNotExist
70008 FolderAlreadyExists
70009 PathTooLong
70010 FileFolderNameTooLong
70101 NullOrEmptyPath
70102 InvalidPathCharacter
70103 InvalidAbsolutePath
70104 InvalidRelativePath
70106 FileIntegrityError
70107 InvalidMetadata
70108 RangeNotSatisfiable
70109 PathTooShort
70110 FileOffline
70111 InvalidImageDimensions
80001 LoginFailed
80003 AccessDenied
80004 InvalidMasterAccountID
80005 InvalidBillableAccountID
80006 SessionNotFound
80007 AccountExpired
80015 OutOfBytes
80016 OutOfBytesNonOwner
80018 InvalidIPAddress
80019 DownloadFileSizeLimitExceeded
80020 UploadBandwidthLimitExceeded
80021 StorageLimitExceeded
80022 LimitAlreadyExceeded
80023 InvalidAccessToken
80101 InvalidSessionToken
80102 ExpiredAccessToken
80103 InvalidDownloadToken
90001 Configuration
90002 SSLRequired
100001 Database
Appendices
Date Format
Passing dates to the Nirvanix API require a specific format based on RFC and W3C Standards. Below is an example of a full date and
time format that can be used with our system followed by the standards information associated with the acceptable date formats.
RFC 822 Date and Time Specification (Partial See RFC 822.)
W3C Date and Time Format (See W3C Date and Time Format)
1994-11-05T08:15:30-05:00 corresponds to November 5, 1994, 8:15:30 am, US Eastern Standard Time.
For HTTP applications, the date and time format is specified in RFC 2616 which is the format defined in RFC 1123 (which is an update
to RFC 822, changing the year format from YY to YYYY). This is currently supported under our Web services on both input and output.
A second format supported by our Web services is the WC3 Datetime Format which is a profile of a broader standard defined in ISO 8601.
back to top
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09
0x00 0xf1 0xf2 0xf3 0xf4 0xf5 0x06 0x07 0x08 0x09
0x00 0xf1 0xf2 0xf3 0xf4 0xf5 0x06 0x07 0x08 0xf9
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F
back to top