Publish resource data to a custom integration.
This endpoint accepts a list of resource data objects, each containing the current state of a resource to be processed. This data will be processed and if successful, the results will be available in the Custom Automated Tests feature, as well as the Asset Inventory and/or other Secureframe features.
Early access: This endpoint is currently only available to customers in our Early Access program. Please contact Secureframe to request access. All details are subject to change.
If a schema does not already exist for the provided slug, one will be created automatically based on the structure of the first resource data object in the request.
After a schema is created, it must be defined using the "Define Schema" workflow in the Secureframe application interface in order for the data to be processed.
You can provide us data in any JSON structure you like, as long as all resources in a schema follow the same format. We recommend you provide the data to us with as few changes as possible from the original format in your system or as provided by the vendor.
At least one field must uniquely identify the resource within the schema, and be set as its "primary ID" when defining the schema. The primary ID cannot be changed after the schema is created.
The data may be nested (e.g. { "name": { "first": "Alan", "last": "Turing" } }
). However, arrays are not currently
supported and will be ignored.
When you send resource data to Secureframe using schemas that have a model mapping set up, the data will be mapped to corresponding models in the Secureframe application.
You can structure your data in any way that makes sense for your systems, as long as all required fields are present for the chosen category.
The field names in your data don't need to match our internal field names - the mapping is handled automatically based on the schema definition.
We recommend providing data in a format as close as possible to the examples below. This approach simplifies integration and makes it easier to properly map your data to our system.
After processing, your data will appear in the appropriate sections of the Secureframe application, such as Asset Inventory, Personnel, or Training Records, depending on the schema's category.
Cloud resources
Cloud resources are the resources used for creating and updating any cloud-based or on-premise servers, virtual machines, VPNs, databases, etc.
These should be used any time you want to import data about hardware or cloud-based infrastructure components that are in scope for your compliance plan.
Example resource data for a cloud resource:
{
"id": "123", // required, type: string
"cloud_resource_type": "aws_ec2_instance", // required, type: string, supported values listed below
"description": "My Cloud Resource" // optional, type: string
}
Training records
Training records specify that a certain person has completed a training course. These should be used when you have data from an external training system and you want to bring that data into Secureframe.
Example resource data for a training record:
{
"id": "123", // required, type: string
"completed_at": "2024-01-01T00:00:00Z", // required, type: datetime, format: ISO 8601
"user_email": "john.doe@example.com", // required, type: string
"training_slug": "security_awareness_training" // required, type: string, supported values listed below
}
Personnel accounts
Personnel accounts are records that a person has an account granting them access to a certain system.
You can use this to import information about these accounts into the Secureframe application's Personnel section.
Example resource data for a personnel account:
{
"id": "123", // required, type: string
"email": "john.doe@example.com", // required, type: string
"secondary_email": "john.doe2@example.com", // optional, type: string
"username": "john.doe", // optional, type: string
"first_name": "John", // optional, type: string
"preferred_first_name": "John", // optional, type: string
"last_name": "Doe", // optional, type: string
"admin": false, // optional, type: boolean
"active": true // optional, type: boolean
}
This data will be processed asynchronously, and a 202 Accepted
response indicates the data is enqueued for
processing. There may be a delay before the data is available in the Secureframe application, especially if a large
amount of data is being processed.
Data for a given connection will be processed in the order it is enqueued, even if provided in separate requests or for separate schemas.
By default, the data in a request will replace the existing data for the resource and is expected to be the complete
state of a resource. To perform a partial update, you can set the partial
parameter to true
. When processing a partial
update, only the fields specified in the request will be updated. Any fields not specified in the request will be
left unchanged. If you want to delete a field, you can set its value to null
.
request
Accepted The data is enqueued for processing.
Bad Request The request body was not in the correct format.
Unauthorized The Authorization header was invalid.
Forbidden The API key provided was not authorized to push data for this custom connection.
Not Found A custom connection could not be found for the provided ID.
{- "schema_slug": "users",
- "vendor_slug": "acme",
- "resource_data": [
- {
- "id": "123",
- "name": "John Doe",
- "email": "john.doe@example.com"
}, - {
- "id": "456",
- "name": "Jane Doe",
- "email": "jane.doe@example.com"
}
]
}