Send only inputted data

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.

Welcome to the Make community!

Don’t make the fields Required — keep all of them Optional. Perform the validation on your server instead, and ignore the empty fields.

Hope this helps! Let me know if there are any further questions or issues.

@samliew

P.S.: Investing some effort into the Make Academy will save you lots of time and frustration using Make.

Can I do some sea of if to include keys to my payload dynamical, for example if I don’t have any text set on TWITTER don’t include that

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.