Address Channel Support & Standardize Dynamic Models
Interactions API: Supporting structured address channel and introducing a breaking change for outcomesDetailed. All channel and outcomesDetailed objects now validate against a standard structured format that requires both type and value to be supplied.
Interactions API
Support Structured address Channel
address ChannelIntroduced a standard shape for the address channel value to require postal address fields. This channel will continue to support dynamic properties at the base object level e.g.latitude and longitude below:
{
"channel": {
"type": "address",
"value": {
"addressLine1": "123 Sesame Street",
"addressLine2": "Basement",
"city": "New York",
"state": "New York",
"postalCode": "10001"
},
"latitude": "40.76046",
"longitude": "-73.99750"
}
}Standardized Dynamic Models
To enable consistent typing across resources and improve schema extensibility, all channel and outcomesDetailed objects now validate against a standard structured format that requires both type and value to be supplied:
{
"type": "string",
"value": { ... }
}{
"type": "string",
"value": "string"
}The value property was expanded to handle dynamic objects, strings, integers, etc. Some type discriminators will still validate expected properties e.g. Survey Response outcomes require questionText and responseText.
You can continue to send unstructured and non-validated properties at the base object level:
{
"type": "event",
"value": {
"name": "City Council - Meet the Candidates Night",
"dateTime": "2025-11-03 7:30pm"
},
"notes": "Limited entry"
}Breaking change for outcomesDetailed
outcomesDetailedThe above changes were integrated into our outcomesDetailed model for consistency. All existing fields for Survey Response and Activist Code outcomes have been moved under the value property.
Before
{
"outcomesDetailed": [
{
"type": "survey_response",
"questionText": "Are you able to attend the Weekend Rally in Cambridge?",
"questionId": "765",
"responseText": "No",
"responseId": "41"
},
{
"type": "activist_code",
"text": "Super Volunteer",
"activistCodeId": "154"
}
]
}After
{
"outcomesDetailed": [
{
"type": "survey_response",
"value": {
"questionText": "Are you able to attend the Weekend Rally in Cambridge?",
"questionId": "765",
"responseText": "No",
"responseId": "41"
}
},
{
"type": "activist_code",
"value": {
"text": "Super Volunteer",
"activistCodeId": "154"
}
}
]
}