Custom File Transfer
Leverage JupiterOne's Custom File Transfer to ingest assets into JupiterOne and designate the asset's relationships prior to uploading. This integration allows you to import a batch of assets and relationships via CSV file and track and manage each upload within the integration's instances.
You will need to have your assets and relationships in CSV format, and there is a size limitation of 100MB per file. For larger uploads, see our API documentation.
CSV File Requirements
To ensure data is correctly ingested, please consider the following:
- The first row in the CSV must be headers. These headers will be used as the property values for the final entity.
- We encourage the use of camelCasing for headers for consistency with other data in your graph.
- We encourage the use of Data Type Tokens to improve query-ability of your data (see below for more details).
- If a blank or whitespace header is provided, it will be replaced by
idxNwhere N is the numerical index of that column. - The number of values in each row must match the number of headers provided on the first row. A mismatch will result in an error.
- All empty (
,,) and blank (,"",) values will be replaced withundefinedto improve query-ability of your data. - Whitespace (
" "or, ,) values will be maintained.
Data Type Tokens (optional)
In order for the integration to successfully identify different types of data, the column headers can optionally include a token to identify the columns data type. By providing these data type tokens, JupiterOne will store the data in the correct format allowing for advanced J1QL queries to be written.
Supported Data Type Tokens:
- [datetime]: With the
[datetime]token present in the header, all valid ISO dates will be parsed and stored ready for queries as a date. To ensure dates are displayed correctly in the JupiterOne app, column header names should end inOn. Parsed dates will allow queries such asFIND approvals WITH approvedOn < Date.now - 30days - [boolean]: With the
[boolean]token present in the header, the following values will be parsed as true:true,1,on,yes. All other values will be consideredfalse. Parsed booleans will allow for queries such asFIND approvals WITH approved = true - [number]: With the
[number]token present in the header, all valid numbers (int, decimal, negative) will be parsed as a number. If a value is not a number, the value will remain unparsed. Parsed numbers will allow queries such asFIND approvals WITH count > 50 - [stringList]: When the
[stringList]token is included in a column header, the corresponding cell value will be split into an array of strings using a comma (,) as the delimiter. If no commas are found, the result will be a single-element array containing the entire string.-
It is recommended to enclose the full list of comma-separated values in double quotes (
"). This ensures the list is interpreted as a single CSV field and parsed correctly. -
For example, if you have an entity property named
webUrls[stringList], you can specify the values in the CSV like this:- ✅ Correct:
"https://www.j1.com,https://www.j1.io" - ❌ Incorrect:
"https://www.j1.com","https://www.j1.io"
- ✅ Correct:
-
Adding a Data Type Token to the column header name that uniquely identifies each row is not supported. The value entered as the Entity Key Property should exactly match the value found in the CSV.
Example walkthrough
Starting CSV:
id,createDate,description,approvedOn,approved,count,weekdays
1,01/01/2024,Granted access to fix the issue,01/01/2024,true,100,"monday,tuesday"
2,02/11/2014,Test access granted,02/11/2014,testBool,100,"tuesday,wednesday"
In this example, createDate and approvedOn are both dates. id and count are both numbers. approved is a boolean.
id will not be considered a number, it will be used as the Entity Key Property which is explained later in this document.
For the integration to identify them as their appropriate data type, add the data type tokens to the applicable header. For example, createDate becomes createDate[datetime].
Tips: Add the data type token after the column header name. For timestamps, renaming the column to end with On is preferable for best display support in the JupiterOne app and more consistent with the JupiterOne data model. So for example, createDate becomes createdOn.
Example with Data Type Tokens:
id,createdOn[datetime],description,approvedOn[datetime],approved[boolean],count[number],weekdays[stringList]
1,02/11/2014,Granted access to fix the issue,02/11/2014 11:30:30,true,100,"monday,tuesday"
2,02/11/2014,Test access granted,02/11/2014,testBool,100,"tuesday,wednesday"
Ensure that the date time values are in a valid ISO 8601 format:
id,createdOn[datetime],description,approvedOn[datetime],approved[boolean],count[number],weekdays[stringList]
1,2014-02-11Z,Granted access to fix the issue,2014-02-11T11:30:30Z,true,100,"monday,,tuesday"
2,2014-02-11Z,Test access granted,2014-02-11Z,testBool,100xx,"tuesday,wednesday,"
Below is an example of the resulting entities post-processing. If a value is not successfully parsed for the given data type, the value will remain in its original format. The data type token will be removed prior to use as a property name.
[
{
"id": 1,
"createdOn": 1392076800000, // unix epoch timestamp, will be displayed correctly as ISO timestamp in JupiterOne.
"description": "Granted access to fix the issue",
"approvedOn": 1392118230000,
"approved": true,
"count": 100,
"weekdays": ['monday', 'tuesday']
},
{
"id": 2,
"createdOn": 1392076800000, // unix epoch timestamp, will be displayed correctly as ISO timestamp in JupiterOne.
"description": "Test access granted",
"approvedOn": 1392118230000,
"approved": false, // testBool was parsed as false
"count": "100xx", // was not parsed
"weekdays": ['tuesday', 'wednesday']
}
]