curl --request PATCH \
--url https://public.api.live.turrisfi.com/v2/upstream/downstream-entity-associations/{downstreamEntityAssociationId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalId": "EXT-12345",
"producerCode": "PROD-001"
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({externalId: 'EXT-12345', producerCode: 'PROD-001'})
};
fetch('https://public.api.live.turrisfi.com/v2/upstream/downstream-entity-associations/{downstreamEntityAssociationId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://public.api.live.turrisfi.com/v2/upstream/downstream-entity-associations/{downstreamEntityAssociationId}"
payload = {
"externalId": "EXT-12345",
"producerCode": "PROD-001"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"data": {
"_id": "<string>",
"downstreamEntity": {
"_id": "<string>",
"isNpnRequired": true,
"legalName": "<string>",
"category": "<string>",
"npn": "<string>",
"ein": "<string>"
},
"niprDataSubscription": {
"dataOwnerId": "<string>",
"dataOwnerModel": "<string>",
"entityModel": "<string>",
"entityInfo": {
"status": "<string>",
"jobId": "<string>",
"message": "<string>",
"rawEntityInfoId": "<string>"
},
"npn": "<string>",
"lastSynchronizationDate": "2023-11-07T05:31:56Z",
"pdbAlertsSubscriptionStatus": "<string>",
"pdbAlertsPausedAt": "2023-11-07T05:31:56Z"
},
"path": "<string>",
"level": 123,
"parentAssociationId": "<string>",
"ultimateParentAssociationId": "<string>",
"ultimateParentAgreementExecuted": true,
"producerCode": "<string>",
"externalId": "<string>",
"branchName": "<string>",
"creationPath": "<string>"
},
"requestId": "dev-2c5e7cf2-9acf-4c8c-ab2f-b81f39d775a8",
"timestamp": "2025-11-12T20:49:03.293Z"
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}Update Association
Set or clear the external ID and producer code on a downstream entity association
curl --request PATCH \
--url https://public.api.live.turrisfi.com/v2/upstream/downstream-entity-associations/{downstreamEntityAssociationId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalId": "EXT-12345",
"producerCode": "PROD-001"
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({externalId: 'EXT-12345', producerCode: 'PROD-001'})
};
fetch('https://public.api.live.turrisfi.com/v2/upstream/downstream-entity-associations/{downstreamEntityAssociationId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://public.api.live.turrisfi.com/v2/upstream/downstream-entity-associations/{downstreamEntityAssociationId}"
payload = {
"externalId": "EXT-12345",
"producerCode": "PROD-001"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"data": {
"_id": "<string>",
"downstreamEntity": {
"_id": "<string>",
"isNpnRequired": true,
"legalName": "<string>",
"category": "<string>",
"npn": "<string>",
"ein": "<string>"
},
"niprDataSubscription": {
"dataOwnerId": "<string>",
"dataOwnerModel": "<string>",
"entityModel": "<string>",
"entityInfo": {
"status": "<string>",
"jobId": "<string>",
"message": "<string>",
"rawEntityInfoId": "<string>"
},
"npn": "<string>",
"lastSynchronizationDate": "2023-11-07T05:31:56Z",
"pdbAlertsSubscriptionStatus": "<string>",
"pdbAlertsPausedAt": "2023-11-07T05:31:56Z"
},
"path": "<string>",
"level": 123,
"parentAssociationId": "<string>",
"ultimateParentAssociationId": "<string>",
"ultimateParentAgreementExecuted": true,
"producerCode": "<string>",
"externalId": "<string>",
"branchName": "<string>",
"creationPath": "<string>"
},
"requestId": "dev-2c5e7cf2-9acf-4c8c-ab2f-b81f39d775a8",
"timestamp": "2025-11-12T20:49:03.293Z"
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}{
"statusCode": 123,
"requestId": "<string>",
"errorType": "validation_error",
"errorMessage": [
"<string>"
],
"timestamp": "<string>",
"details": {}
}externalId and producerCode. Send a non-empty string to set a field, null to clear it, and leave a key out to keep its stored value. At least one of the two keys must be present.
Both values are unique across your associations. Sending a value another of your associations already carries returns 409 with errorType duplicate_external_id_error or duplicate_producer_code_error. Sending an association’s own current value back is not a conflict.
The usual reason to call this is an integration that keyed an association to the wrong record in your system and needs to move its external ID. The response is the full association, identical in shape to Get Association.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
UUID to ensure idempotent request processing
"550e8400-e29b-41d4-a716-446655440000"
Alternative UUID header for idempotent request processing
"550e8400-e29b-41d4-a716-446655440000"
Path Parameters
Downstream entity association ID
"507f1f77bcf86cd799439011"
Body
Your own identifier for this association, for example the record key in your producer management system. Pass a non-empty string to set it, or null to clear it. An empty string is rejected. Must be unique across your associations. Leave the key out to keep the stored value.
1"EXT-12345"
Producer code you assign to this downstream entity location. Pass a non-empty string to set it, or null to clear it. An empty string is rejected. Must be unique across your associations. Leave the key out to keep the stored value.
1"PROD-001"
Was this page helpful?