Context:
Migrating our outbound operations from Zendesk Talk to Genesys Cloud Outbound. In Zendesk, we simply uploaded a CSV to a static list, and the dialer handled the rest with minimal config. Here in GC, the granularity is impressive but the setup is rigorous. We are using the Genesys Cloud Platform API v2 (specifically POST /api/v2/outbound/campaigns) to programmatically create a campaign that pulls from a newly created Contact Source via the POST /api/v2/outbound/contactsources endpoint. The environment is Production (EU-West). The SDK version in use is genesys-cloud@2.3.0.
We are mapping the Zendesk ticket custom fields to GC Contact Attributes. The Zendesk field phone_number maps to the GC attribute phone_number. However, when the campaign attempts to sync, it fails. The API response returns a 400 Bad Request with the error code invalid_contact_source_definition. The message states: Attribute 'phone_number' in contact source does not match required type 'string'. This is confusing because the payload we send explicitly defines the attribute type as string.
In Zendesk, we never dealt with strict schema validation on list imports. The system was forgiving. GC seems to enforce a rigid schema that we are struggling to align with our legacy data structure. The JSON body for the contact source attribute definition looks correct based on the Swagger docs. We have verified that the data in the underlying CSV is clean strings. No hidden characters or numeric formatting issues.
Question:
Why does this setting cause a validation failure when the attribute definition appears correct? Is there a specific format requirement for the attribute_type in the Contact Source definition that differs from the standard OpenAPI schema? We need to understand how to map Zendesk’s flexible custom fields to GC’s strict outbound contact attributes without hitting this 400 error. Any insights on the exact JSON structure required for the attributes array in the contact source payload would be appreciated.