npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mondaydotcomorg/monday-api-queue-sdk

v0.1.2

Published

A module for executing / consuming monday.com API requests at scale.

Maintainers

yairfeyairfeavivdaavivdasaararsaarartomramutomramuyonaharelyonahareljoshpe-mondayjoshpe-mondayalonbehaimalonbehaimsergeyroytsergeyroytantonru92antonru92laviomrilaviomrishanibenaderetmondayshanibenaderetmondayvitalimvitalimadarmondayadarmondayaviel_mondayaviel_mondayhadaspehadasperotemtarotemtashayelmodnayshayelmodnaychristopher-nowakchristopher-nowakvladmondayvladmondayella-miella-miliorkeliorkeomermondayomermondayrutikeveshrutikeveshaf8811af8811witold-mondaywitold-mondayavihayavavihayavcsalomancsalomaneran.hubermaneran.hubermandanielabdanielabmoshikmoshikaviv_go_npmaviv_go_npmdanielb-bladepopdanielb-bladepoporibaoribaoronmelleroronmelleryglaubachyglaubachayelet-mondayayelet-mondaydanielle.ahdanielle.ahidohayidohayliran-brimer-mondayliran-brimer-mondaynavecohennavecohensaharbsaharbtombogtombogbarakbebarakbeidoyana-mondayidoyana-mondaylorin-totahlorin-totahoronmondayoronmondaynik-savchenkonik-savchenkotomerfriedmantomerfriedmanyosefwyosefwigor_budiigor_budimatanyaw2matanyaw2nirlachmannirlachmanorrgottlorrgottlsebastian-curland-mndysebastian-curland-mndyyuly-robermanyuly-robermanamirbardugoamirbardugobarcohen2barcohen2illyayuillyayutootmorantootmoranfreak4pcfreak4pcmateuszwomateuszwoamit_hanochamit_hanochdorhasondorhasongal_libermangal_libermannoamn3knoamn3kronachmany-mondayronachmany-mondayshahafmelamedshahafmelamedyuvalbyuvalbbenpibenpidorshakeddorshakedmickael_firstmickael_firstitaycohenitaycohenmayaheilbrunmayaheilbrunventuramdventuramdudidoronudidorongoralthgoralthshaietshaieturi-shmueliuri-shmuelianatkatzanatkatzshalomsteinbachshalomsteinbachannasoannasoboazjboazjofirmonsingoofirmonsingoshaneeshaneeavifreegeavifreegeliorrabinliorrabinvirtservirtserssddnodessddnodepablo-mdcpablo-mdcamitbiranamitbiranorelhazorelhazroyna-devroyna-devsergeybrsergeybrofirc-mondayofirc-mondaynizanshnizansharavasharavashavnerhaavnerhaidanklingeridanklingeraxelstaxelstdanielkheyfetsdanielkheyfetscarloscr.mondaycarloscr.mondaylorenzo.palorenzo.paaviv_goaviv_gogiuliofigiuliofilahav_p_mondaylahav_p_mondayheshamgoheshamgotaniasilvataniasilvabenymondaybenymondaydanielokanindanielokaninneomi_shavitneomi_shavitshaikatzzshaikatzzarielmondayarielmondayguywaguywatomsap-mondaytomsap-mondaylukaszf-mondaylukaszf-mondayliranrorlichliranrorlicheran-coheneran-cohenmaya-assayagmaya-assayagrami-mondayrami-mondayalonbrimeralonbrimerethans-mondayethans-mondaywitoldtkwitoldtkerlich75erlich75adamflooradamfloorlahavplahavpomernave1omernave1rankupmondayrankupmondaybuzagloidanbuzagloidanjeandavidjeandavidmeromcomeromcorachelskrachelskarnonrgoarnonrgodanapodanapoannasolomonikannasolomonikmitzafon-mondaymitzafon-mondayyoavgayoavgalueranlueranshiranbirenbaumshiranbirenbaumnirro.mondaynirro.mondaynicole_kezliknicole_kezliklaurefelaurefemichalsz-mondaymichalsz-mondaymickey_mondaymickey_mondayitamarteitamartedor-cohendor-cohenliranbinliranbinasif_mondayasif_mondaylotemkirshlotemkirshorihassid2507orihassid2507itaymndyitaymndyeyalmueyalmuarekze-mondayarekze-mondayibmondayibmondayvikas-mondayvikas-mondayalonmualonmulukaszfiszer-mondaylukaszfiszer-mondaymarszelun-mondaymarszelun-mondayarnonguarnongumarekpemarekpeharelcohenharelcohenameerdoameerdokamiekamiedekelabedekelabehadascohadascoalonsadanalonsadanrama-ronrama-rongilby1gilby1galor-mondaygalor-mondayran-haveshush-mondayran-haveshush-mondaymichaelsimkinmichaelsimkinbarakbsbarakbsedenhayatedenhayatrachelikarachelikaliorfrliorfranyatchernishovanyatchernishovnadavavnadavavthierryguythierryguynirarazi.mondaynirarazi.mondayedenberdugoedenberdugoneilmonneilmonalonzialonzirongabbayrongabbayetgarmonetgarmonronniemironniemimoshe-samsonmoshe-samsonadamru-mondayadamru-mondaygauravsh-mondaygauravsh-mondayshlomiatmondayshlomiatmondayandrey-palmanandrey-palmanleonidkrleonidkrtomzohtomzohshirsharshirsharmonday-grahamlamonday-grahamlayoni-alalufyoni-alaluftomer-gillmoretomer-gillmorerobertdarobertdasaarbasaarbatalsoffertalsofferalonlealonlestasshwstasshwataliareataliareidanmondayidanmondayraneldanraneldanbarosenbarosenrotemda10rotemda10vladislavmovladislavmoyardendvyardendvchensarchensaryuvalgryuvalgrjohhh_mondayjohhh_mondayandreihryhoryeuandreihryhoryeuinbaldginbaldgjosephsamondayjosephsamondaykubakolybaczkubakolybaczbanueldobanueldomoriatmoriatmatanlamatanlaavivgiavivgialonschatzalonschatzidanoridanormichallormichallorsrdjan-mondaysrdjan-mondayggaallggaallshanmondayshanmondaytomerzlotomerzloophirdoophirdojohnny-morjohnny-morfilip-daca-mondayfilip-daca-mondayurielwasyngurielwasyngchrisbamondaychrisbamondayamitmazor37amitmazor37jakubmojakubmoflistflistoded_by_mondayoded_by_mondaymichaljamichaljaamitcoamitcogalspmondaygalspmondayorelco2orelco2eyalleeyallealexjalbaalexjalbaadva-gonshadva-gonshorcomondayorcomondayronov1ronov1shoshanyshoshanygalko_mondaygalko_mondaybernardpo-mondaybernardpo-mondayeviatharmeviatharmshayalshayalronavmondayronavmondaygal_finger_mondaygal_finger_mondaymichaelimasmichaelimasyoavteyoavtemarta-mondaymarta-mondayarielklarielklmichalbelmichalbeldyh1213dyh1213dvirpedvirpeshaharshakishaharshakitomasztarczynskitomasztarczynskishalevkeshalevkemaor-barazanimaor-barazanimarcinko-mondaymarcinko-mondaydanielga-mondaydanielga-mondayeliyapleliyaplsapir_barsapir_baryavgenypayavgenypaomergrinomergrinigorczigorczmayaismayaisyoavstyoavsttim-mondaytim-mondaygil_zilbermangil_zilbermansandeepkmondaysandeepkmondayleimoniomndleimoniomndadirhadirhgrzegorzrojekgrzegorzrojekorilaorilatomhousmantomhousmantomkochtomkochromkadriaromkadrianivyahnivyahyotamhermesyotamhermesroni-ben-aharonroni-ben-aharontomnisimtomnisimmoro256moro256litalwlitalwshirazbehar2shirazbehar2cezarylacezarylavasilyklvasilyklaviel_hershkovitzaviel_hershkovitzmayabarkanmayabarkanmatanmamanmatanmamanbenmamondaybenmamondaydoron.brikmandoron.brikmanliorl-mondayliorl-mondaytalhararitalhararitalshetalshetsemachlitsemachlilotanyuranlotanyuranramhillelramhillelidangaidangapiotrdu-mondaypiotrdu-mondayephraimgrephraimgrjakubso2749jakubso2749yevgeniliyevgenilidorsimmdorsimmmichaelvamondaymichaelvamondaygioraguatmondaygioraguatmondayyahorzhyahorzhshaharzishaharzianastasiyakhanastasiyakhomrialomrialofir-efraimofir-efraimmiloszpi-mondaymiloszpi-mondaykarolszmndykarolszmndyyardengavyardengavdanielmo-mondaydanielmo-mondaytalibl.mondaytalibl.mondayamirkeamirkeantonigmantonigmashb22ashb22neyemaawneyemaawrzmndrzmndrangr-mondayrangr-mondayyossisaadi.mondayyossisaadi.mondayjonathansejonathansetheidotheidoguyhadasguyhadasronco99ronco99olegsh_mondayolegsh_mondayjr-mondayjr-mondayomerraomerradord2dord2giladar-mondaygiladar-mondaygiladscgiladscyuliagoldbergyuliagoldbergpiotrkopiotrkoyonatanbi-mondayyonatanbi-mondayaranweb-mondayaranweb-mondayhananmahananmaeladna-mondayeladna-mondaynaorsnaorssamwisamwilukaszmichlukaszmichuziabuziabasafswasafswadmonsaadmonsatalkortalkorv0vs-mondayv0vs-mondayavivzafraniavivzafraniyoniho_myoniho_mpinizopinizovickyhivickyhitiagopi-mondaytiagopi-mondaydanielepdanielepidanmoralidanmoraladirmonadirmontomergatomerganegevmanegevmayosia1990yosia1990rivkaungarrivkaungareliyahumanymondayeliyahumanymondayadirhaziz2adirhaziz2ori-mondayori-mondaykuzalekskuzaleksnatanrolnik_mndnatanrolnik_mndkapusjkapusjavileviavileviliranroliranroorizvidamondayorizvidamondaykamalwo-mondaykamalwo-mondayasaf472mondayasaf472mondaynoamco-mondaynoamco-mondaydavidgohbergdavidgohbergnurkiewicznurkiewicznoamst-mondaynoamst-mondaymichael-azimovmichael-azimovnitzanshinitzanshisaridansaridanidanpedidanpedronilaronilaitaykalitaykalmoshiko_ben_avimoshiko_ben_avimondayshpiglifymondayshpiglifynoamagoodmannoamagoodmandimaaldimaalgadshgadshrotemdurotemdumaxime.mondaymaxime.mondaydanielvadanielvagabriel.amramgabriel.amraminbalziinbalzitomasz-fijalkowski-mondaytomasz-fijalkowski-mondayalmogrualmogrudaniilvodaniilvomondayjohnmondayjohnbashanyebashanyetomaszlamondaytomaszlamondayeden-eitanieden-eitanitom-katztom-katzdoniawadoniawaedogr1edogr1yonatanelyonataneleladdoeladdolukasz-dudzinskilukasz-dudzinskitom_shlomitom_shlomiodedsandakodedsandakhodayaishodayaisalexandrzhalexandrzhmichalpl-mondaymichalpl-mondayiradcoiradconitzanholmes718nitzanholmes718eliasgaeliasgaidoagidoagitaysimitaysimjacksnettjacksnetteladmondayeladmondaytomasfeldertomasfelderibgudmanibgudmanitcerbyitcerbybrittdabrittdashahargmndshahargmndkevinmondaykevinmondayyoniarvivyoniarvivmarcin-gabmarcin-gabalonedelmanmonday1alonedelmanmonday1mulhamhamulhamhamaslomonday2maslomonday2talbamatalbamakuba_niemieckuba_niemiecyoavroyoavroshiraweshirawesreekanthjusreekanthjugrzegorzswgrzegorzswcoralincoralinamitbenmoramitbenmorlaver_mondaylaver_mondaysimohanounasimohanounaohad-katzavohad-katzavguykorenguykorenmeytalfremeytalfredavidbr1davidbr1donia2610donia2610nicole_kezlik2nicole_kezlik2awallace327awallace327kamieshamischnitzer1kamieshamischnitzer1galbenoziliomdygalbenoziliomdymortzmondaymortzmondayyonatanleyonatanlemahmoudna-mondaymahmoudna-mondayromanshapromanshapransarusiransarusiliorla13liorla13liors619liors619dh94dh94adamyahidadamyahidhagaiwehagaiweyoni-mondayyoni-mondayshirlyrashirlyraomerfoxomerfoxrivkapelegrivkapelegjakubrohlederjakubrohledermaslomaslo5maslomaslo5mohamedigmohamedigtomaszjackowiaktomaszjackowiakshayo-arshayo-arraphaelouraphaeloufabiotaatmondayfabiotaatmondayishandua-mondayishandua-mondayhadarahhadarahtomreztomrezmatthewtomatthewtoilyamezilyamezidozitidozitdamianmarek-mondaydamianmarek-mondaysheenanasheenananurenbergvovanurenbergvovaetaymondayetaymondayrangr1-mondayrangr1-mondayandrewlo-mondayandrewlo-mondaynaormondaynaormondaymaxdv-4016maxdv-4016katedubouskayakatedubouskayaliortalmondayliortalmondaymaor-karomaor-karohadargevahadargevadominikko-mondaydominikko-mondaynovrosenamnnovrosenamnharveyr-mondayharveyr-mondayramimonday90ramimonday90ranku_mondayranku_mondayedenbeedenbenegevma2negevma2eyalmondayeyalmondaychenbeturchenbeturdorbi_mondaydorbi_mondayidanpeduiemidanpeduiemst_tomerst_tomerthibaudduthibaudduavilevi768988avilevi768988tomersttomerstrivkasc2rivkasc2naorsmondaynaorsmondayyuval-moshe-mndyyuval-moshe-mndyyardenliyardenlicarmeldahancarmeldahanofekkiofekkisagilinshitssagilinshitsjohnnpmman2025johnnpmman2025shaygrshaygrjeremybarnejeremybarneidoziidozibarakzabarakzashamilgshamilgibukun-mondayibukun-mondaysagibarkol89sagibarkol89alonsegalalonsegalofrichenofrichenyuvallev-mondayyuvallev-mondayshannon-mondayshannon-mondayjoel-mondayjoel-mondaymichaelozmondaymichaelozmondaybenlivnibenlivniapeslinapeslinnaorsolmondaynaorsolmondaysergeytsibulnik3sergeytsibulnik3jonathanadlerjonathanadlerliatyaliatyaalonmorgenalonmorgenellaportnovellaportnovadelebeadelebemichaelarmichaelaritamarhiitamarhileahorlinleahorlinruthiedarruthiedaramirfeamirferonykrishtalronykrishtalitaypa777itaypa777reutlevyreutlevyeithanhollandermondayeithanhollandermondaybenhabenhagiladomgiladomyuriisrohyiyuriisrohyiamirnajjaramirnajjarmohamedig1mohamedig1raunaq-mondayraunaq-mondayodedgoodedgonuri-mondaynuri-mondaynavelenavelelironamlironamzivha-mondayzivha-mondayshirzashirzazvimintszvimintsasif_d_dromiasif_d_dromihilakislevhilakislevtommattommateran_zidkiyaeran_zidkiyastavrastavraozkamaozkamaofirstofirstdordvdordvalonadaalonadadvirshdvirshtamarshetamarshemark-watkin-mondaymark-watkin-mondayshimony-urielshimony-urieltzvico-mondaytzvico-mondayasafbashiriasafbashiriohadleshnoohadleshnoor-mondayor-mondayaviramashkenazi-monaviramashkenazi-monjihyunum-mondayjihyunum-mondaydanielkorichdanielkorichguymarushchenkoguymarushchenkobruchim_mondaybruchim_mondaytomda-mondaytomda-mondaymiroslawwomiroslawwonickday-mondaynickday-mondayyuvalpadanyuvalpadanamalpiamalpiroeiyaroeiyaiddoaliddoalmichaldamichaldayuvalezyuvalezkerensokerensoyaarmaypazyaarmaypazroiemondayroiemondayhadarlibmanhadarlibmannetaezra1netaezra1guybe-mondayguybe-mondayamitsabag1amitsabag1lorengolorengomusayedahmusayedahamitreamitreedendoron-mondayedendoron-mondayfranekmondayfranekmondaylinoymarganlinoymargannoam-yehudanoam-yehudasergeisasergeisamatanmematanmeyoavkulayoavkularoniavroniavmonadavmonadavsofivasofivaprzemyslawbprzemyslawbadiknafoadiknafoalekseiilalekseiilandreiyuandreiyubargaldbargaldtbreuerweiltbreuerweilyanivridelyanivridelmichalbudziakmichalbudziakurasmuurasmulayanhalayanhamoshe1100moshe1100moranossmoranosssergeym-mondaysergeym-mondaylevkomondaylevkomondayyonatanc163yonatanc163matkotmatkotolegkaplunolegkaplunohad-mondayohad-mondayandreyolandreyolnetta-snetta-schezkibotwinickchezkibotwinickwitoswitosguysimaimondayguysimaimonday

Keywords

Readme

monday-api-queue-sdk

A module for executing and consuming monday.com API requests at scale using queue-based processing.

Overview

This SDK provides a robust solution for handling high-volume monday.com API requests through a queue-based architecture. It handles API rate limiting, automatic retries with exponential backoff, and callback notifications when requests complete.

Key Features

  • Queue-based processing for scalable API request handling
  • Built-in retry logic with exponential backoff
  • Automatic handling of monday.com rate limits (complexity budget exhaustion, concurrency limits)
  • Support for AWS SQS as the message queue
  • S3 integration for storing API response payloads
  • Callback notifications via HTTP endpoints
  • Both long-polling consumers and trigger-based (Lambda) consumers

Installation

npm install @mondaydotcomorg/monday-api-queue-sdk

Architecture

The SDK uses a two-queue architecture:

┌─────────────┐     ┌─────────────────────┐     ┌───────────────┐
│  API Queue  │────▶│  ApiRequestProcessor │────▶│ Callback Queue│
└─────────────┘     └─────────────────────┘     └───────────────┘
                              │                         │
                              ▼                         ▼
                         ┌─────────┐         ┌──────────────────────┐
                         │   S3    │         │ CallbackQueueProcessor│
                         └─────────┘         └──────────────────────┘
                                                        │
                                                        ▼
                                                ┌──────────────┐
                                                │ Your Webhook │
                                                └──────────────┘
  1. API Queue: Receives monday.com API requests
  2. ApiRequestQueueProcessor: Executes the API call, uploads response to S3, pushes to callback queue
  3. Callback Queue: Holds completed requests ready for delivery
  4. CallbackQueueProcessor: Delivers results to your webhook endpoint

Quick Start

Using the Factory (Recommended)

The QueueFactory provides a convenient way to create pre-configured processors. It internally creates the necessary producers for retries and pushing results to the callback queue:

import {
  QueueFactory,
  QueueConfigTypes,
  FileStorageTypes,
  TriggerConsumer,
} from "@mondaydotcomorg/monday-api-queue-sdk";

const apiProcessor = QueueFactory.createApiProcessor({
  apiQueueSettings: {
    type: QueueConfigTypes.SQS,
    queueUrl: "https://sqs.us-east-1.amazonaws.com/123456789/api-queue",
    region: "us-east-1",
  },
  callbackQueueSettings: {
    type: QueueConfigTypes.SQS,
    queueUrl: "https://sqs.us-east-1.amazonaws.com/123456789/callback-queue",
    region: "us-east-1",
  },
  fileStorageSettings: {
    type: FileStorageTypes.S3,
    bucketName: "my-api-responses-bucket",
  },
  maxRetries: 3,
  shouldRetryOnGeneralError: true,
});

const callbackProcessor = QueueFactory.createCallbackProcessor({
  queueSettings: {
    type: QueueConfigTypes.SQS,
    queueUrl: "https://sqs.us-east-1.amazonaws.com/123456789/callback-queue",
    region: "us-east-1",
  },
  maxRetries: 3,
  shouldRetryOnGeneralError: true,
});

Lambda / Trigger-Based Consumer

For AWS Lambda or other serverless environments:

import {
  TriggerConsumer,
  parseSqsRecords,
  ApiRequestQueueJob,
} from "@mondaydotcomorg/monday-api-queue-sdk";

export const handler = async (event: SQSEvent) => {
  const consumer = new TriggerConsumer(apiProcessor);
  const jobs = parseSqsRecords<ApiRequestQueueJob>(event.Records);
  
  const result = await consumer.consumeBatch(jobs);
  
  console.log(`Processed: ${result.successful.length} successful, ${result.failed.length} failed`);
};

Enqueueing API Requests

The QueueFactory creates producers internally for retries and callback delivery, but you'll need to create your own SqsProducer to initially enqueue jobs to the API queue:

import { SqsProducer, ApiRequestQueueJob } from "@mondaydotcomorg/monday-api-queue-sdk";

const producer = new SqsProducer({
  queueUrl: "https://sqs.us-east-1.amazonaws.com/123456789/api-queue",
  region: "us-east-1",
});

const job: ApiRequestQueueJob = {
  token: "your-monday-api-token",
  query: `query { boards(limit: 10) { id name } }`,
  variables: {},
  data: {},
};

const result = await producer.enqueue(job);
if (result.success) {
  console.log("Job enqueued with ID:", result.id);
}

API Reference

Queue Jobs

ApiRequestQueueJob

Job structure for API requests:

interface ApiRequestQueueJob {
  token: string;
  query: string;
  variables?: Record<string, unknown>;
  id?: string | number | null;
  attempts?: number;
  data: unknown;
}

CallbackQueueJob

Job structure for callbacks:

interface CallbackQueueJob {
  callbackUrl: string;
  payload: unknown;
  id?: string | number | null;
  attempts?: number;
  data: unknown;
}

Processors

ApiRequestQueueProcessor

Processes monday.com API requests:

  • Executes GraphQL queries using the provided token
  • Handles rate limiting (COMPLEXITY_BUDGET_EXHAUSTED, MAX_CONCURRENCY_EXCEEDED)
  • Uploads responses to S3
  • Pushes results to the callback queue
  • Automatic retry with exponential backoff

CallbackQueueProcessor

Delivers results to webhook endpoints:

  • Makes HTTP POST requests to callback URLs
  • Retries on 5xx errors
  • Configurable retry behavior

Consumers

TriggerConsumer

For serverless/Lambda environments:

const consumer = new TriggerConsumer(processor);
const result = await consumer.consumeBatch(jobs);

SqsConsumer

Abstract base class for long-polling SQS consumers. Extend this for continuous processing:

class MyConsumer extends SqsConsumer {
  constructor() {
    super(processor, {
      queueUrl: "https://sqs...",
      region: "us-east-1",
    });
  }
}

const consumer = new MyConsumer();
await consumer.start();

Producers

SqsProducer

Enqueue jobs to SQS:

const producer = new SqsProducer({
  queueUrl: "https://sqs.us-east-1.amazonaws.com/123456789/queue",
  region: "us-east-1",
});

await producer.enqueue(job, { delay: 30 });

Utilities

parseSqsRecords

Parse SQS event records into typed jobs:

import { parseSqsRecords, ApiRequestQueueJob } from "@mondaydotcomorg/monday-api-queue-sdk";

const jobs = parseSqsRecords<ApiRequestQueueJob>(event.Records);

Configuration

Queue Settings

interface SQSVendorQueueConfig {
  type: QueueConfigTypes.SQS;
  queueUrl: string;
  region: string;
}

File Storage Settings

interface S3FileStorageConfig {
  type: FileStorageTypes.S3;
  bucketName: string;
}

Processor Options

| Option | Type | Default | Description | |--------|------|---------|-------------| | maxRetries | number | 3 | Maximum retry attempts | | shouldRetryOnGeneralError | boolean | true | Retry on non-monday.com errors |

Error Handling

The SDK includes specialized error types:

MondayError

Thrown when the monday.com API returns errors:

import { MondayError, MondayErrorCodes } from "@mondaydotcomorg/monday-api-queue-sdk";

if (error instanceof MondayError) {
  const hasRateLimit = error.mondayErrors.some(
    (e) => e.extensions?.code === MondayErrorCodes.COMPLEXITY_BUDGET_EXHAUSTED
  );
}

JobError

Thrown during job processing with retry information:

import { JobError } from "@mondaydotcomorg/monday-api-queue-sdk";

if (error instanceof JobError) {
  console.log("Should retry:", error.shouldRetry);
  console.log("Retry delay:", error.options?.delay);
}

AWS Requirements

IAM Permissions

The SDK requires the following AWS permissions:

SQS:

  • sqs:SendMessage
  • sqs:ReceiveMessage
  • sqs:DeleteMessage
  • sqs:GetQueueAttributes

S3:

  • s3:PutObject

Queue Configuration

Recommended SQS queue settings:

  • Visibility Timeout: 60 seconds (adjust based on API response times)
  • Message Retention: 4 days
  • Dead Letter Queue: Recommended for failed messages

Development

npm install

npm run build

npm run test

npm run test:coverage

npm run lint

npm run typecheck

License

MIT