Mapping Meta's API Errors to Effect in Typescript

Hi guys, I have been using the effect/platform API to create a api client that wraps meta's APIs, but i cannot seem to figure out the correct syntax/way on how to map meta's errors to effect. Any help would be appreciated!

const SCloudApiError = S.Struct({
  message: S.String,
  type: S.String,
  code: S.Number,
  error_data: S.Struct({
    messaging_product: S.String,
    details: S.String,
  }),
  fbtrace_id: S.optional(S.String),
});

export const metaAPI = HttpApi.make("MetaAPI")
  .add(
    HttpApiGroup.make("cloudAPI")
      .add(cloudApiSendTextMessageEndpoint)
      .add(cloudApiSendTemplateMessageEndpoint)
      .add(cloudApiSendImageMessageEndpoint)
      .add(cloudApiSendDocumentMessageEndpoint)
      .add(cloudApiSendVideoMessageEndpoint)
      .add(cloudApiSendAudioMessageEndpoint)
      .add(cloudApiSendReactionMessageEndpoint)
      .add(cloudApiGetWhatsappTemplates)
      .add(cloudApiUploadMediaEndpoint)
      .add(cloudApiGetMediaUrlEndpoint)
      .add(cloudApiReadReceiptEndpoint)
      .add(cloudApiTypingIndicatorEndpoint)
      .add(cloudApiSendInteractiveListMessageEndpoint)
      .add(cloudApiSendInteractiveButtonMessageEndpoint)
  )
  .addError(SCloudApiError, {
    status: 400,
  });

export const makeMetaAPIClient = ({ apiKey }: { apiKey: string }) => {
  return HttpApiClient.make(metaAPI, {
    transformClient: (client) =>
      client.pipe(
        HttpClient.mapRequest((request) => {
          return request.pipe(HttpClientRequest.bearerToken(apiKey));
        })
      ),
    baseUrl: "https://graph.facebook.com/v21.0",
  });
};
Was this page helpful?