Hi Im Marcel from bundle.social. We provide social media scheduling via API/SDK and web. Currently, I’m creating a custom app for our users to integrate with their make scenarios.
The one thing that I don’t understand is how to send data conditionally. For example, this is my request.
{
"url": "/post/",
"method": "POST",
"body": {
"teamId": "{{parameters.teamId}}",
"title": "{{parameters.title}}",
"postDate": "{{formatDate(parameters.postDate, 'YYYY-MM-DDTHH:mm:ssZ')}}",
"status": "{{parameters.status}}",
"socialAccountTypes": "{{parameters.socialAccountTypes}}",
"data": {
"TWITTER": {
"text": "{{parameters.twitter_text}}",
"uploadIds": "{{split(parameters.twitter_uploadIds, ',')}}"
},
"FACEBOOK": {
"type": "{{parameters.facebook_type}}",
"text": "{{parameters.facebook_text}}",
"uploadIds": "{{split(parameters.facebook_uploadIds, ',')}}"
},
"INSTAGRAM": {
"type": "{{parameters.instagram_type}}",
"text": "{{parameters.instagram_text}}",
"uploadIds": "{{parameters.instagram_uploadIds}}"
},
"TIKTOK": {
"text": "{{parameters.tiktok_text}}",
"uploadIds": "{{split(parameters.tiktok_uploadIds, ',')}}",
"privacy": "{{parameters.tiktok_privacy}}",
"isBrandContent": "{{parameters.tiktok_isBrandContent}}",
"isOrganicBrandContent": "{{parameters.tiktok_isOrganicBrandContent}}",
"disableComments": "{{parameters.tiktok_disableComments}}",
"disableDuet": "{{parameters.tiktok_disableDuet}}",
"disableStitch": "{{parameters.tiktok_disableStitch}}"
},
"LINKEDIN": {
"text": "{{parameters.linkedin_text}}",
"uploadIds": "{{split(parameters.linkedin_uploadIds, ',')}}",
"privacy": "{{parameters.linkedin_privacy}}",
"hideFromFeed": "{{parameters.linkedin_hideFromFeed}}",
"disableReshare": "{{parameters.linkedin_disableReshare}}"
},
"YOUTUBE": {
"type": "{{parameters.youtube_type}}",
"uploadIds": "[{{parameters.youtube_uploadId}}]",
"text": "{{parameters.youtube_text}}",
"description": "{{parameters.youtube_description}}",
"privacy": "{{parameters.youtube_privacy}}",
"madeForKids": "{{parameters.youtube_madeForKids}}"
},
"REDDIT": {
"sr": "{{parameters.reddit_sr}}",
"text": "{{parameters.reddit_text}}",
"description": "{{parameters.reddit_description}}",
"uploadIds": "{{split(parameters.reddit_uploadIds, ',')}}",
"link": "{{parameters.reddit_link}}",
"nsfw": "{{parameters.reddit_nsfw}}"
},
"DISCORD": {
"channelId": "{{parameters.discord_channelId}}",
"text": "{{parameters.discord_text}}",
"uploadIds": "{{parameters.discord_uploadIds}}",
"username": "{{parameters.discord_username}}",
"avatarUrl": "{{parameters.discord_avatarUrl}}"
},
"SLACK": {
"channelId": "{{parameters.slack_channelId}}",
"text": "{{parameters.slack_text}}",
"uploadIds": "{{split(parameters.slack_uploadIds, ',')}}",
"username": "{{parameters.slack_username}}",
"avatarUrl": "{{parameters.slack_avatarUrl}}"
},
"MASTODON": {
"text": "{{parameters.mastodon_text}}",
"uploadIds": "{{split(parameters.mastodon_uploadIds, ',')}}",
"privacy": "{{parameters.mastodon_privacy}}",
"spoiler": "{{parameters.mastodon_spoiler}}"
}
}
}
}
The thing is, some users only want to post on Instagram and LinkedIn and they are filling out only those inputs but Make sends full request with undefined/empty variables to our backend, causing request to fail at validation. Internally, we can see this in our logs
Global exception filter caught an exception Request Validation Error {"body":{"issues":[{"code":"invalid_type","expected":"string","message":"Required","path":["data","LINKEDIN","text"],"received":"undefined"},{"code":"invalid_type","expected":"array","message":"Expected array, received string","path":["data","YOUTUBE","uploadIds"],"received":"string"},{"code":"invalid_type","expected":"string","message":"Required","path":["data","REDDIT","sr"],"received":"undefined"},{"code":"invalid_type","expected":"string","message":"Required","path":["data","REDDIT","text"],"received":"undefined"},{"code":"invalid_type","expected":"string","message":"Required","path":["data","DISCORD","channelId"],"received":"undefined"},{"code":"invalid_type","expected":"string","message":"Required","path":["data","SLACK","channelId"],"received":"undefined"}],"name":"ZodError"},"context":"AllExceptionsFilter","headers":null,"name":"RequestValidationError","options":{},"organizationId":"e540c339-db23-4912-912e-c78e55dab6bd","pathParams":null,"query":null,"requestId":"8d8bf396-7c69-4e1a-8fbb-3bf5007976e3","response":{"bodyResult":{"issues":[{"code":"invalid_type","expected":"string","message":"Required","path":["data","LINKEDIN","text"],"received":"undefined"},{"code":"invalid_type","expected":"array","message":"Expected array, received string","path":["data","YOUTUBE","uploadIds"],"received":"string"},{"code":"invalid_type","expected":"string","message":"Required","path":["data","REDDIT","sr"],"received":"undefined"},{"code":"invalid_type","expected":"string","message":"Required","path":["data","REDDIT","text"],"received":"undefined"},{"code":"invalid_type","expected":"string","message":"Required","path":["data","DISCORD","channelId"],"received":"undefined"},{"code":"invalid_type","expected":"string","message":"Required","path":["data","SLACK","channelId"],"received":"undefined"}]
How we can have only one module for all the different social media platforms.