From 7e93b710dc7cb1770dc230e06138e2ae6de19822 Mon Sep 17 00:00:00 2001 From: Hitvardhan Singh Solanki Date: Wed, 11 Feb 2026 15:41:22 +0000 Subject: [PATCH 1/2] Add qualified_id field to Reporting Data Export API schema Updates the Unstable OpenAPI spec to include the new qualified_id field for attribute disambiguation in the get_datasets response. Co-Authored-By: Claude Opus 4.5 --- descriptions/0/api.intercom.io.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/descriptions/0/api.intercom.io.yaml b/descriptions/0/api.intercom.io.yaml index b401874..ebf1248 100644 --- a/descriptions/0/api.intercom.io.yaml +++ b/descriptions/0/api.intercom.io.yaml @@ -1514,6 +1514,7 @@ paths: example: conversation attribute_ids: type: array + description: List of attribute identifiers to include in the export. Accepts either the simple id (e.g., "Brand") or the qualified_id (e.g., "people.Brand"). Use qualified_id when the same attribute name exists across different types (e.g., user and conversation custom data). items: type: string example: [conversation_id, conversation_started_at] @@ -1734,7 +1735,12 @@ paths: properties: id: type: string + description: The attribute identifier. For custom attributes, this may be ambiguous if the same name exists across different attribute types (e.g., user vs conversation custom data). Use qualified_id for disambiguation. example: conversation_id + qualified_id: + type: string + description: A namespaced identifier that uniquely identifies the attribute across all types. Format is "type.name" (e.g., "people.Brand", "conversation.Brand"). Use this when attributes have the same name across different types. + example: conversation.conversation_id name: type: string example: Conversation ID From e27fc812bd0b8b609647b5f2ffeeeeedbaf7bafc Mon Sep 17 00:00:00 2001 From: Hitvardhan Singh Solanki Date: Mon, 16 Feb 2026 13:32:35 +0000 Subject: [PATCH 2/2] fix: Update attribute_ids to require qualified_id format The public_id fallback has been removed from find_attribute, so attribute_ids must use qualified_id format (e.g., "standard.conversation_id") instead of plain public_id (e.g., "conversation_id"). Co-Authored-By: Claude Opus 4.6 (1M context) --- descriptions/0/api.intercom.io.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/descriptions/0/api.intercom.io.yaml b/descriptions/0/api.intercom.io.yaml index ebf1248..75b9416 100644 --- a/descriptions/0/api.intercom.io.yaml +++ b/descriptions/0/api.intercom.io.yaml @@ -1514,10 +1514,10 @@ paths: example: conversation attribute_ids: type: array - description: List of attribute identifiers to include in the export. Accepts either the simple id (e.g., "Brand") or the qualified_id (e.g., "people.Brand"). Use qualified_id when the same attribute name exists across different types (e.g., user and conversation custom data). + description: List of attribute identifiers to include in the export. Requires qualified_id format (e.g., "people.Brand", "standard.conversation_id"). Use the qualified_id returned from the get_datasets response. items: type: string - example: [conversation_id, conversation_started_at] + example: [standard.conversation_id, timestamp.conversation_started_at] start_time: type: integer format: int64 @@ -1735,11 +1735,11 @@ paths: properties: id: type: string - description: The attribute identifier. For custom attributes, this may be ambiguous if the same name exists across different attribute types (e.g., user vs conversation custom data). Use qualified_id for disambiguation. + description: The simple attribute identifier. Note that this may be ambiguous if the same name exists across different attribute types. Use qualified_id when calling the enqueue endpoint. example: conversation_id qualified_id: type: string - description: A namespaced identifier that uniquely identifies the attribute across all types. Format is "type.name" (e.g., "people.Brand", "conversation.Brand"). Use this when attributes have the same name across different types. + description: A namespaced identifier that uniquely identifies the attribute across all types. Format is "prefix.name" (e.g., "people.Brand", "conversation.Brand"). Required when calling the enqueue endpoint. example: conversation.conversation_id name: type: string