This API endpoint is intended to be used to upload large files/artifacts for processing within the Opsera backend workflow.
Required Headers
Authorization: Bearer <your_auth_token>
Content-Type: application/json
Content-Encoding: gzip
X-File-Content-Classification: Insights.UnityProjects
X-File-Content-Length: <original_file_size_in_bytes>
X-File-Content-MD5: <MD5_hash_of_original_file>
X-File-Name: <original_file_name.json>
Valid Header Values
X-File-Content-Classification: Insights.UnityProjects - A classification to help us track the source of this data.
X-File-Content-Length: A positive integer representing the size of the original (uncompressed) JSON file in bytes
X-File-Content-MD5: The MD5 hash of the original (uncompressed) JSON file
X-File-Name: The original filename of your JSON file
Opsera API Token Generation
From within the Opsera portal, follow these steps to generate an API token if you don't already have one.
Login to the HW Sandbox Portal: https://portal.honeywell-sandbox.opsera.io/
Access User Profile: Click on your user avatar or profile picture at the top-right corner of the dashboard.
Navigate to API Tokens: Select "API Tokens" or "Personal Access Tokens" from the profile settings menu.
Create a New API Token: Click on the "Create New Token" button and provide a name for the token.
Define Permissions: Choose the appropriate permissions or scopes for the token.
Generate and Save the Token: Click "Generate Token" and securely store the displayed token.
For more information please see: https://docs.opsera.io/api-platform-and-integration/opsera-api-platform/personal-access-tokens
Steps to Test Using cURL
Prepare your JSON file (e.g., "data.json").
Compress the file using gzip:
gzip -c data.json > data.json.gz
Calculate the MD5 hash and file size of the original JSON file:
original_md5=$(md5sum data.json | cut -d ' ' -f 1) original_size=$(wc -c < data.json)
Use the following curl command to upload the file (replace placeholders with your actual values):
bash curl -X POST "https://api.honeywell-sandbox.opsera.io/data-migration-file/data/upload" \ -H "Authorization: Bearer YOUR_AUTH_TOKEN" \ -H "Content-Type: application/json" \ -H "Content-Encoding: gzip" \ -H "X-File-Content-Classification: Insights.UnityProjects" \ -H "X-File-Content-Length: $original_size" \ -H "X-File-Content-MD5: $original_md5" \ -H "X-File-Name: data.json" \ --data-binary "@data.json.gz"
Expected API Response
Upon successful upload, the API will return a JSON object with the following structure:
{ "id": "string", "contentLength": number, "contentMD5": "string" }
Description of Response Attributes
id: A string representing the unique identifier (artifactId) assigned to the uploaded file. This ID can be used for future references or operations related to this file.
contentLength: A number indicating the size of the original (uncompressed) file in bytes. This should match the value you provided in the X-File-Content-Length header.
contentMD5: A string containing the MD5 hash of the original (uncompressed) file. This should match the value you provided in the X-File-Content-MD5 header.
Example Response
❯ export AUTH_TOKEN="{auth token}" ❯ ./testGzippedJSONFileUpload.sh Original JSON file size: 17934041 Original JSON file MD5 hash: d5ce63f2310d40ce14d7044764725e1a Gzipped file size: 970511 Gzipped file MD5 hash: 1a0f877a9efb97d010d52155e0dd3778 Sending file: HCE-full.json.gz Content-Length: 970511 X-File-Content-Length: 17934041 X-File-Content-MD5: d5ce63f2310d40ce14d7044764725e1a % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 947k 100 106 100 947k 40 363k 0:00:02 0:00:02 --:--:-- 363k Response status code: 0 Response body: {"id":"66cd1b866f255a5904fffed9","contentLength":17934041,"contentMD5":"d5ce63f2310d40ce14d7044764725e1a"} ID: 66cd1b866f255a5904fffed9 Expected File Size: 17934041 Expected MD5: d5ce63f2310d40ce14d7044764725e1a Upload successful!
This response confirms that your file was successfully uploaded and provides you with the necessary information to verify the upload and reference the file in the future.
Postman Example
To test using Postman, you can import the following cURL command:
curl --location 'https://api.honeywell-sandbox.opsera.io/data-migration-file/data/upload' \ --header 'Authorization: Bearer YOUR_AUTH_TOKEN' \ --header 'Content-Type: application/json' \ --header 'Content-Encoding: gzip' \ --header 'X-File-Content-Classification: Insights.UnityProjects' \ --header 'X-File-Content-Length: ORIGINAL_FILE_SIZE' \ --header 'X-File-Content-MD5: ORIGINAL_FILE_MD5' \ --header 'X-File-Name: data.json' \ --data '@/path/to/your/data.json.gz'
To import this into Postman
Open Postman
Click on "Import" in the top left corner
Choose the "Raw text" tab
Paste the curl command above
Click "Continue" and then "Import"
Update the placeholder values with your actual data before sending the request
Please ensure you replace YOUR_AUTH_TOKEN, ORIGINAL_FILE_SIZE, ORIGINAL_FILE_MD5, and the file path with your specific values.