File Management
Update File
Request
Information about the file to update along with the new properties to set. The /files/update API accepts requests in the following format:
UpdateFileNameRequest Model - Request to update the name of a file. | |
|---|---|
| projectId | integer Project Id to which the file belongs. |
| oldFileName | string The current name of the file. |
| newName | string The new name for the file. |
| Example |
{
"projectId": 23456789,
"oldFileName": "file1.py",
"newName": "file2.py"
}
|
UpdateFileContentsRequest Model - Request to update the contents of a file. | |
|---|---|
| projectId | integer Project Id to which the file belongs. |
| name | string The name of the file that should be updated. |
| content | string The new contents of the file. |
| Example |
{
"projectId": 23456789,
"name": "main.py",
"content": "class CustomClass:
def __init__(self):
pass
"
}
|
Responses
The /files/update API provides a response in the following format:
200 Success
RestResponse Model - Base API response class for the QuantConnect API. | |
|---|---|
| success | boolean Indicate if the API request was successful. |
| errors | string Array List of errors with the API call. |
| Example |
{
"success": true,
"errors": [
"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 creating, reading, updating, and deleting a file 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 project ID of the project to manage its files
project_id = 12345678
### Create File
# Send a POST request to the /files/create endpoint to create a new file
response = post(f'{BASE_URL}/files/create', headers=get_headers(), json={
"projectId": project_id, # ID of the project
"name": "utils.py", # Name of the new file
"content": '''
# region imports
from AlgorithmImports import *
# endregion
class Project(QCAlgorithm):
def Initialize(self):
self.AddEquity("SPY", Resolution.Minute)
''' # Content of the file (Python code)
})
# 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("File Created Successfully:")
print(result)
### Read File
# Prepare data payload to read files in the project
payload = {
"projectId": project_id, # ID of the project
"includeLibraries": True # Include library files in the response
}
# Send a POST request to the /files/read endpoint to read files
response = post(f'{BASE_URL}/files/read', headers=get_headers(), json=payload)
# Parse the JSON response into python managable dict
result = response.json()
# Extract filename and content from the first file in the response
fileName = result['files'][0]['name']
content = result['files'][0]['content']
# Check if the request was successful and print the content
if result['success']:
print("File Content:")
print(content)
### Update File Contents
# Modify the content by replacing "SPY" with "TSLA"
content = content.replace("SPY", "TSLA")
# Send a POST request to the /files/update endpoint to update the file content
response = post(f'{BASE_URL}/files/update', headers=get_headers(), json={
"projectId": project_id, # ID of the project
"name": "utils.py", # Name of the file to update
"content": content # Updated content
})
# 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("File Updated Successfully:")
print(result)
### Rename File
# Send a POST request to the /files/update endpoint to rename the file
response = post(f'{BASE_URL}/files/update', headers=get_headers(), json={
"projectId": project_id, # ID of the project
"name": "utils.py", # Current name of the file
"newName": "utils2.py" # New name for the file
})
# 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("File Renamed Successfully:")
print(result)
### Delete File
# Prepare data payload to delete the file
payload = {
"projectId": project_id, # ID of the project
"name": "utils2.py" # Name of the file to delete
}
# Send a POST request to the /files/delete endpoint to delete the file
response = post(f'{BASE_URL}/files/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("File Deleted Successfully:")
print(result)