Skip to content

fix: update IntegrationModuleEdit DTOs - #121

Merged
gwinn merged 1 commit into
retailcrm:masterfrom
gwinn:master
May 19, 2026
Merged

fix: update IntegrationModuleEdit DTOs#121
gwinn merged 1 commit into
retailcrm:masterfrom
gwinn:master

Conversation

@gwinn

@gwinn gwinn commented May 19, 2026

Copy link
Copy Markdown
Member

What changed and why: updated IntegrationModuleEdit request and response DTOs to match the current POST /api/v5/integration-modules/{code}/edit contract. The endpoint can return info as an array, including an empty [], while the client previously expected a ResponseInfo object and failed during json.Unmarshal.

Added custom UnmarshalJSON handling for IntegrationModuleEditResponse and ResponseInfo. The legacy object format still fills Info, array-form info is preserved in InfoRaw/InfoList, and an empty [] is treated as missing additional information. Request DTOs now also support the newer documented shapes: object deliveryDataFieldList[].choices via ChoiceList/DeliveryDataFieldChoice and translated embedJs.pages[].pageHelpLink via PageHelpLinks/ConfigurationTranslation.

Backward compatibility: existing public fields Info, AdditionalCode.UserID, DeliveryDataField.Choices, and EmbedJSPage.PageHelpLink are preserved. During marshaling, new fields take precedence when set, but the old format is still used when they are empty. During unmarshaling, newer formats also populate legacy fields where possible: ChoiceList also fills Choices, numeric AdditionalCode userId fills UserID as a string, and translated pageHelpLink fills PageHelpLink with the first available translation.

What changed and why: updated IntegrationModuleEdit request and response DTOs to match the current POST /api/v5/integration-modules/{code}/edit contract. The endpoint can return info as an array, including an empty [], while the client previously expected a ResponseInfo object and failed during json.Unmarshal.

Added custom UnmarshalJSON handling for IntegrationModuleEditResponse and ResponseInfo. The legacy object format still fills Info, array-form info is preserved in InfoRaw/InfoList, and an empty [] is treated as missing additional information. Request DTOs now also support the newer documented shapes: object deliveryDataFieldList[].choices via ChoiceList/DeliveryDataFieldChoice and translated embedJs.pages[].pageHelpLink via PageHelpLinks/ConfigurationTranslation.

Backward compatibility: existing public fields Info, AdditionalCode.UserID, DeliveryDataField.Choices, and EmbedJSPage.PageHelpLink are preserved. During marshaling, new fields take precedence when set, but the old format is still used when they are empty. During unmarshaling, newer formats also populate legacy fields where possible: ChoiceList also fills Choices, numeric AdditionalCode userId fills UserID as a string, and translated pageHelpLink fills PageHelpLink with the first available translation.
@gwinn
gwinn merged commit b147f94 into retailcrm:master May 19, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant