Object Store Management
Get Object Store Metadata
Request
Get Object Store properties of a specific organization and key. The /object/properties API accepts requests in the following format:
GetObjectStorePropertiesRequest Model - Request to get Object Store properties of a specific organization and keys. | |
|---|---|
| organizationId | string Organization ID we would like to get the Object Store properties from. |
| key | string Key to the Object Store. |
| Example |
{
"organizationId": "5cad178b20a1d52567b534553413b691",
"key": "key1"
}
|
Responses
The /object/properties API provides a response in the following format:
200 Success
GetObjectStorePropertiesResponse Model - Response received when fetching Object Store file properties. | |
|---|---|
| metadata | ObjectStoreProperties object Object Store file properties. |
| success | boolean Indicate if the API request was successful. |
| errors | string Array List of errors with the API call. |
| Example |
{
"metadata": {
"key": "string",
"modified": "2021-11-26T15:18:27.693Z",
"created": "string",
"size": 24,
"md5": "string",
"mime": "string",
"preview": "string"
},
"success": true,
"errors": [
"string"
]
}
|
ObjectStoreProperties Model - Object Store file properties. | |
|---|---|
| key | string Object Store key. |
| modified | string($date) Last time it was modified. |
| created | string Date this project was created. |
| size | float Object Store file size. |
| md5 | string MD5 (hashing algorithm) hash authentication code. |
| mime | string MIME type. |
| preview | string Preview of the Object Store file content. |
| Example |
{
"key": "string",
"modified": "2021-11-26T15:18:27.693Z",
"created": "string",
"size": 24,
"md5": "string",
"mime": "string",
"preview": "string"
}
|
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)