Object Store Management

List Object Store Files

Introduction

List the Object Store files under a specific directory in an organization.

Request

List the Object Store files under a specific directory in an organization. The /object/list API accepts requests in the following format:

ListObjectStoreRequest Model - Request to list the Object Store files under a specific directory in an organization.
organizationId string
required

Id of the organization to list the Object Store files from.
path string
Path to a directory in the Object Store.
Example
{
  "organizationId": "string",
  "path": "string"
}

Responses

The /object/list API provides a response in the following format:

200 Success

ListObjectStoreResponse Model - Response received containing a list of stored objects metadata, as well as the total size of all of them.
path string
Path to the directory in the Object Store.
objects ObjectStoreSummary Array
List of directories and files stored in the directory at the given path. If the path contains directories, this list of objects doesn't contain the children of those directories.
page integer
The current page number in the paginated response.
totalPages integer
The total number of pages in the paginated response.
objectStorageUsed integer
Size of all objects stored in bytes.
objectStorageUsedHuman string
Size of all the objects stored in human-readable format.
success boolean
Indicate if the API request was successful.
errors string Array
List of errors with the API call.
Example
{
  "path": "string",
  "objects": [
    {
      "key": "string",
      "name": "string",
      "modified": "2021-11-26T15:18:27.693Z",
      "mime": "string",
      "folder": true,
      "size": 0
    }
  ],
  "page": 0,
  "totalPages": 0,
  "objectStorageUsed": 0,
  "objectStorageUsedHuman": "string",
  "success": true,
  "errors": [
    "string"
  ]
}
ObjectStoreSummary Model - Summary information of the Object Store.
key string
Object Store key.
name string
File or folder name.
modified string($date-time)
Last time it was modified.
mime string
MIME type.
folder boolean
True if it is a folder, false otherwise.
size number
Object Store file size.
Example
{
  "key": "string",
  "name": "string",
  "modified": "2021-11-26T15:18:27.693Z",
  "mime": "string",
  "folder": true,
  "size": 0
}

401 Authentication Error

UnauthorizedError Model - Unauthorized response from the API. Key is missing, invalid, or timestamp is too old for hash.
www_authenticate string
Header

Examples

The following example demonstates uploading, getting, deleting, and listing Object Store objects through the cloud API.

from base64 import b64encode
from hashlib import sha256
from time import time
from requests import get, post
BASE_URL = 'https://www.quantconnect.com/api/v2/'

# You need to replace these with your actual credentials.
# You can request your credentials at https://www.quantconnect.com/settings/
# You can find our organization ID at https://www.quantconnect.com/organization/ 
USER_ID = 0
API_TOKEN = '____'
ORGANIZATION_ID = '____'

def get_headers():
    # Get timestamp
    timestamp = f'{int(time())}'
    time_stamped_token = f'{API_TOKEN}:{timestamp}'.encode('utf-8')

    # Get hased API token
    hashed_token = sha256(time_stamped_token).hexdigest()
    authentication = f'{USER_ID}:{hashed_token}'.encode('utf-8')
    authentication = b64encode(authentication).decode('ascii')

    # Create headers dictionary.
    return {
        'Authorization': f'Basic {authentication}',
        'Timestamp': timestamp
    }

# Authenticate to verify credentials
response = post(f'{BASE_URL}/authenticate', headers = get_headers())
print(response.json())

# --------------------


# The key of the object wishes to manipulate
key = "..."

### Upload Object Store File
# Send a POST request to the /object/set endpoint to upload a file
response = post(f'{BASE_URL}/object/set', headers=get_headers(), 
                data={"organizationId": ORGANIZATION_ID, "key": key},  # Organization ID and key for the object
                files={"objectData": b"Hello, world!"})  # File content as bytes
# Parse the JSON response into python managable dict
result = response.json()
# Check if the request was successful and print the result
if result['success']:
    print("Object Store File Uploaded Successfully:")
    print(result)

### Get Object Store Metadata
# Prepare data payload to get object metadata
payload = {
    "organizationId": ORGANIZATION_ID,  # ID of the organization
    "key": key  # Key of the object to get metadata for
}
# Send a POST request to the /object/properties endpoint to get metadata
response = post(f'{BASE_URL}/object/properties', headers=get_headers(), json=payload)
# Parse the JSON response into python managable dict
result = response.json()
# Check if the request was successful and print the metadata
if result['success']:
    print("Object Store Metadata:")
    print(result)

### Get Object Store File
# Prepare data payload to retrieve the object
payload = {
    "organizationId": ORGANIZATION_ID,  # ID of the organization
    "keys": [key]  # List of keys to retrieve (single key in this case)
}
# Send a POST request to the /object/get endpoint to get the object
response = post(f'{BASE_URL}/object/get', headers=get_headers(), json=payload)
# Parse the JSON response into python managable dict
result = response.json()
# Check if the request was successful and print the file content
if result['success']:
    print("Object Store File Content:")
    print(result)

### Delete Object Store File
# Prepare data payload to delete the object
payload = {
    "organizationId": ORGANIZATION_ID,  # ID of the organization
    "key": key  # Key of the object to delete
}
# Send a POST request to the /object/delete endpoint to delete the object
response = post(f'{BASE_URL}/object/delete', headers=get_headers(), json=payload)
# Parse the JSON response into python managable dict
result = response.json()
# Check if the request was successful and print the result
if result['success']:
    print("Object Store File Deleted Successfully:")
    print(result)

### List Object Store Files
# Define an empty path to list all objects (replace with specific path if needed)
path = ""
# Prepare data payload to list objects
payload = {
    "organizationId": ORGANIZATION_ID,  # ID of the organization
    "path": path  # Path to list objects from
}
# Send a POST request to the /object/list endpoint to list objects
response = post(f'{BASE_URL}/object/list', headers=get_headers(), json=payload)
# Parse the JSON response into python managable dict
result = response.json()
# Check if the request was successful and print the list
if result['success']:
    print("List of Object Store Files:")
    print(result)

You can also see our Videos. You can also get in touch with us via Discord.

Did you find this page helpful?

Contribute to the documentation: