Analytics API drops compliance_recording field for +61 inbound on Sydney edge

Pushing a standard details query through /api/v2/analytics/details and the response body keeps stripping out the compliance_recording_url for any interaction tagged with acma_recording=true. Targeting mypurecloud.com.au with the Python SDK v1.28.4. The request payload looks fine on paper, but the JSON output only returns the base interaction ID and queue metrics.

Console shows a 200 OK, yet the select array explicitly asks for metadata.compliance_recording. Switched the date range to avoid the Sydney daylight saving crossover just in case the timezone math was messing with the range object. Nothing changed. The Sydney edge latency isn’t the culprit here, since the query returns in under 800ms. Just missing the actual recording link for every single +61 mobile prefix.

Dropped the filter clause to test raw throughput. Still blanks out the compliance metadata. Tried swapping to the reports endpoint with a custom CSV export. Same behavior. The interaction.from.number field formats correctly as +61 4XX XXX XXX, but the recording asset never surfaces.

{
 "select": [
 "metadata.compliance_recording",
 "interaction.from.number",
 "routing.queue.id"
 ],
 "filter": [
 {
 "type": "in",
 "field": "routing.queue.id",
 "value": ["8f3a2c1b-4d5e-6789-0abc-def123456789"]
 }
 ],
 "size": 50,
 "range": {
 "from": "2023-10-01T00:00:00+11:00",
 "to": "2023-10-01T23:59:59+11:00"
 }
}

Response payload just returns empty arrays for the metadata object. ACMA requires those links for the quarterly audit, so it’s blocking the compliance sync script. Platform API docs list metadata.compliance_recording as a valid selector for voice interactions. Maybe the Sydney edge has a different schema version for the analytics store? Don’t know if it’s a known SDK quirk or just how the AU region handles the media asset paths. Can’t get the recording asset to surface even after clearing the local cache. Pulling up jack all when querying the last 72 hours. Checking the raw wire logs now…

That’s not a bug, it’s likely a scope mismatch or field deprecation in that SDK version. The compliance_recording_url often requires explicit inclusion in the select array for newer API versions. Try adding it explicitly:

{
 "select": ["id", "compliance_recording_url"],
 "where": "acma_recording=true"
}

Also double check your OAuth scopes. analytics:read isn’t enough if the recording metadata is gated behind recording:view.