Derivatives Migration
The Derivatives Migration API provides endpoints for migrating legacy derivatives to the new derivative model with underlying assets, or reverting back to legacy format.
| Base route | /v1/derivatives/migration |
| Endpoints | POST /v1/derivatives/migration |
POST /v1/derivatives/migration/downgrade | |
| Produces | JSON |
| Pagination | No |
| Application permissions required | "API Access: Create, edit, and delete" |
| OAuth scopes | PORTFOLIO |
🔒 Access requirements
"API Access: Create, edit, and delete" application permission and
PORTFOLIOOAuth scope are required.
Migrate derivatives
POST /v1/derivatives/migration migrates legacy derivatives based on filter criteria.
The migration process:
- Identifies derivatives matching the provided criteria
- Creates underlying asset entities for each unique underlying security
- Links the derivatives to their corresponding underlying assets
- Returns a summary of successful migrations, ignored nodes, and any errors
🔑 Authentication
All requests require a base64-encoded API key pair:
Authorization: Basic {base64(key_id:key_secret)}See Access & Authentication for setup.
Request body
The request accepts one or more filter criteria to identify which derivatives to migrate.
Filter types:
| Filter | Description |
|---|---|
underlying_node | Filter derivatives by their underlying financial graph node ID. Value is an integer. |
node_type | Filter derivatives by their node type (e.g., FORWARD_CONTRACT, STRUCTURED_PRODUCT, OPTION). Value is a string. |
Multiple criteria can be combined. The migration processes all derivatives matching all provided criteria.
curl -X POST "https://{firm}.addepar.com/api/v1/derivatives/migration" \
-H "Authorization: Basic {credentials}" \
-H "Addepar-Firm: 1" \
-H "Content-Type: application/vnd.api+json" \
-H "Accept: application/vnd.api+json" \
-d '{
"criteria": [
{
"type": "underlying_node",
"value": 200
},
{
"type": "node_type",
"value": "STRUCTURED_PRODUCT"
}
]
}'HTTP/1.1 200
{
"node_count": 5,
"nodes_migrated_count": 3,
"nodes_migrated": [1001, 1002, 1003],
"ignore_summaries": [
{
"ignore_reason_message": "Derivative already migrated",
"affected_node_count": 1,
"affected_node_ids": ["1004"]
}
],
"error_summaries": [
{
"error_message": "Missing required underlying asset information",
"affected_node_count": 1,
"affected_node_ids": ["1005"]
}
]
}Response fields
| Field | Description |
|---|---|
node_count | Total number of nodes evaluated for migration |
nodes_migrated_count | Number of nodes successfully migrated |
nodes_migrated | Array of node IDs that were successfully migrated |
ignore_summaries | Array of summaries for nodes intentionally skipped. Each contains ignore_reason_message, affected_node_count, and affected_node_ids |
error_summaries | Array of summaries for nodes that encountered errors. Each contains error_message, affected_node_count, and affected_node_ids |
Response codes:
200 OK-- Success400 Bad Request-- Invalid payload (e.g., missing required fields, invalid filter criteria)403 Forbidden-- Not permitted to make the request
Downgrade derivatives
POST /v1/derivatives/migration/downgrade reverts derivatives from the new derivative model back to legacy format.
The downgrade process:
- Identifies new derivatives matching the provided criteria (or all new derivatives if no criteria provided)
- Sets
isNewDerivativetofalseon each derivative - Deletes underlying asset relationships
- Returns a summary of downgraded nodes and deleted relationships
Request body
The request accepts optional filter criteria to identify which derivatives to downgrade. If no criteria are provided, all new derivatives will be downgraded.
| Filter | Description |
|---|---|
node_type | Filter derivatives by their node type. Value is a string. |
⚠️ The
underlying_nodefilter is not supported for downgrade operations and will result in a400 Bad Requesterror.
curl -X POST "https://{firm}.addepar.com/api/v1/derivatives/migration/downgrade" \
-H "Authorization: Basic {credentials}" \
-H "Addepar-Firm: 1" \
-H "Content-Type: application/vnd.api+json" \
-H "Accept: application/vnd.api+json" \
-d '{
"criteria": [
{
"type": "node_type",
"value": "OPTION"
}
]
}'HTTP/1.1 200
{
"node_count": 3,
"nodes_downgraded": [2001, 2002, 2003],
"relationships_deleted": 3
}Response fields
| Field | Description |
|---|---|
node_count | Number of derivatives downgraded |
nodes_downgraded | Array of node IDs that were downgraded |
relationships_deleted | Number of underlying asset relationships deleted |
Response codes:
200 OK-- Success400 Bad Request-- Invalid payload (e.g.,underlying_nodefilter used, invalid filter criteria)403 Forbidden-- Not permitted to make the request
📘 Related resources
Updated 19 days ago