runline 0.33.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/oauth2.d.ts +7 -1
- package/dist/auth/oauth2.js +10 -0
- package/dist/auth/token.d.ts +1 -0
- package/dist/auth/token.js +19 -1
- package/dist/auth/types.d.ts +22 -1
- package/dist/core/engine.d.ts +7 -0
- package/dist/core/engine.js +21 -8
- package/dist/credentials/policy.d.ts +53 -1
- package/dist/credentials/policy.js +146 -6
- package/dist/credentials/registry.d.ts +9 -0
- package/dist/credentials/registry.js +184 -22
- package/dist/credentials/transport.d.ts +48 -2
- package/dist/credentials/transport.js +248 -70
- package/dist/credentials/types.d.ts +177 -10
- package/dist/index.d.ts +6 -5
- package/dist/index.js +3 -2
- package/dist/plugin/api.d.ts +7 -0
- package/dist/plugin/api.js +7 -0
- package/dist/plugin/schema.d.ts +16 -4
- package/dist/plugin/schema.js +28 -5
- package/dist/plugin/types.d.ts +20 -0
- package/dist/plugins/_shared/base64.js +30 -0
- package/dist/plugins/_shared/credentialAdapter.js +99 -15
- package/dist/plugins/_shared/credentials.js +416 -0
- package/dist/plugins/_shared/googleAuth.js +69 -39
- package/dist/plugins/_shared/googleCredentials.js +68 -14
- package/dist/plugins/_shared/localFile.js +40 -0
- package/dist/plugins/_shared/mediaFile.js +12 -12
- package/dist/plugins/_shared/microsoftAuth.js +31 -47
- package/dist/plugins/_shared/microsoftCredentials.js +42 -15
- package/dist/plugins/_shared/provider.js +2 -14
- package/dist/plugins/_shared/shiftCloud.js +16 -56
- package/dist/plugins/_shared/shiftCredentials.js +83 -0
- package/dist/plugins/_shared/shiftUpload.js +14 -10
- package/dist/plugins/actionNetwork/src/credentials.js +14 -0
- package/dist/plugins/actionNetwork/src/index.js +39 -50
- package/dist/plugins/activeCampaign/src/credentials.js +22 -0
- package/dist/plugins/activeCampaign/src/index.js +61 -132
- package/dist/plugins/adalo/src/credentials.js +16 -0
- package/dist/plugins/adalo/src/index.js +19 -43
- package/dist/plugins/affinity/src/credentials.js +19 -0
- package/dist/plugins/affinity/src/index.js +29 -54
- package/dist/plugins/agentMail/src/credentials.js +35 -0
- package/dist/plugins/agentMail/src/drafts.js +137 -0
- package/dist/plugins/agentMail/src/inboxes.js +95 -0
- package/dist/plugins/agentMail/src/index.js +35 -0
- package/dist/plugins/agentMail/src/messages.js +154 -0
- package/dist/plugins/agentMail/src/schemas.js +156 -0
- package/dist/plugins/agentMail/src/shared.js +203 -0
- package/dist/plugins/agentMail/src/threads.js +75 -0
- package/dist/plugins/agileCrm/src/credentials.js +16 -0
- package/dist/plugins/agileCrm/src/index.js +46 -112
- package/dist/plugins/airtable/src/credentials.js +19 -0
- package/dist/plugins/airtable/src/index.js +37 -50
- package/dist/plugins/airtop/src/credentials.js +20 -0
- package/dist/plugins/airtop/src/index.js +51 -75
- package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
- package/dist/plugins/apiTemplateIo/src/index.js +14 -31
- package/dist/plugins/asana/src/credentials.js +19 -0
- package/dist/plugins/asana/src/index.js +51 -72
- package/dist/plugins/autopilot/src/credentials.js +19 -0
- package/dist/plugins/autopilot/src/index.js +38 -45
- package/dist/plugins/bambooHr/src/credentials.js +16 -0
- package/dist/plugins/bambooHr/src/index.js +41 -67
- package/dist/plugins/bannerbear/src/credentials.js +19 -0
- package/dist/plugins/bannerbear/src/index.js +15 -27
- package/dist/plugins/baserow/src/credentials.js +17 -0
- package/dist/plugins/baserow/src/index.js +23 -49
- package/dist/plugins/beeminder/src/credentials.js +19 -0
- package/dist/plugins/beeminder/src/index.js +32 -54
- package/dist/plugins/bitly/src/credentials.js +19 -0
- package/dist/plugins/bitly/src/index.js +12 -26
- package/dist/plugins/bitwarden/src/credentials.js +62 -0
- package/dist/plugins/bitwarden/src/index.js +34 -80
- package/dist/plugins/box/src/credentials.js +19 -0
- package/dist/plugins/box/src/index.js +24 -49
- package/dist/plugins/brandfetch/src/credentials.js +13 -0
- package/dist/plugins/brandfetch/src/index.js +12 -17
- package/dist/plugins/brevo/src/credentials.js +19 -0
- package/dist/plugins/brevo/src/index.js +30 -51
- package/dist/plugins/bubble/src/credentials.js +28 -0
- package/dist/plugins/bubble/src/index.js +29 -65
- package/dist/plugins/chargebee/src/credentials.js +16 -0
- package/dist/plugins/chargebee/src/index.js +15 -45
- package/dist/plugins/circleci/src/credentials.js +19 -0
- package/dist/plugins/circleci/src/index.js +19 -39
- package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
- package/dist/plugins/ciscoWebex/src/index.js +43 -61
- package/dist/plugins/clearbit/src/credentials.js +22 -0
- package/dist/plugins/clearbit/src/index.js +11 -21
- package/dist/plugins/clickup/src/credentials.js +19 -0
- package/dist/plugins/clickup/src/index.js +85 -117
- package/dist/plugins/clockify/src/credentials.js +19 -0
- package/dist/plugins/clockify/src/index.js +46 -61
- package/dist/plugins/cloudflare/src/credentials.js +19 -0
- package/dist/plugins/cloudflare/src/index.js +19 -34
- package/dist/plugins/cockpit/src/credentials.js +17 -0
- package/dist/plugins/cockpit/src/index.js +18 -31
- package/dist/plugins/coda/src/credentials.js +19 -0
- package/dist/plugins/coda/src/index.js +33 -50
- package/dist/plugins/coingecko/src/credentials.js +20 -0
- package/dist/plugins/coingecko/src/index.js +24 -34
- package/dist/plugins/contentful/src/credentials.js +26 -0
- package/dist/plugins/contentful/src/index.js +19 -40
- package/dist/plugins/convertkit/src/credentials.js +26 -0
- package/dist/plugins/convertkit/src/index.js +27 -45
- package/dist/plugins/copper/src/credentials.js +17 -0
- package/dist/plugins/copper/src/index.js +25 -47
- package/dist/plugins/cortex/src/credentials.js +28 -0
- package/dist/plugins/cortex/src/index.js +26 -49
- package/dist/plugins/currents/src/credentials.js +19 -0
- package/dist/plugins/currents/src/index.js +46 -59
- package/dist/plugins/customerIo/src/credentials.js +52 -0
- package/dist/plugins/customerIo/src/index.js +30 -58
- package/dist/plugins/databricks/src/credentials.js +13 -0
- package/dist/plugins/databricks/src/index.js +51 -103
- package/dist/plugins/deepl/src/credentials.js +19 -0
- package/dist/plugins/deepl/src/index.js +13 -39
- package/dist/plugins/demio/src/credentials.js +26 -0
- package/dist/plugins/demio/src/index.js +17 -41
- package/dist/plugins/dhl/src/credentials.js +13 -0
- package/dist/plugins/dhl/src/index.js +8 -19
- package/dist/plugins/discord/src/credentials.js +19 -0
- package/dist/plugins/discord/src/index.js +30 -58
- package/dist/plugins/discourse/src/credentials.js +18 -0
- package/dist/plugins/discourse/src/index.js +36 -53
- package/dist/plugins/disqus/src/credentials.js +13 -0
- package/dist/plugins/disqus/src/index.js +14 -32
- package/dist/plugins/drift/src/credentials.js +13 -0
- package/dist/plugins/drift/src/index.js +16 -26
- package/dist/plugins/dropbox/src/credentials.js +13 -0
- package/dist/plugins/dropbox/src/index.js +23 -30
- package/dist/plugins/dropcontact/src/credentials.js +13 -0
- package/dist/plugins/dropcontact/src/index.js +13 -18
- package/dist/plugins/egoi/src/credentials.js +19 -0
- package/dist/plugins/egoi/src/index.js +23 -38
- package/dist/plugins/elasticsearch/src/credentials.js +18 -0
- package/dist/plugins/elasticsearch/src/index.js +27 -48
- package/dist/plugins/elevenlabs/src/credentials.js +30 -0
- package/dist/plugins/elevenlabs/src/index.js +4 -1
- package/dist/plugins/elevenlabs/src/schemas.js +2 -1
- package/dist/plugins/elevenlabs/src/shared.js +87 -62
- package/dist/plugins/elevenlabs/src/workflows.js +2 -2
- package/dist/plugins/emelia/src/credentials.js +14 -0
- package/dist/plugins/emelia/src/index.js +19 -23
- package/dist/plugins/erpnext/src/credentials.js +27 -0
- package/dist/plugins/erpnext/src/index.js +21 -42
- package/dist/plugins/facebookGraph/src/credentials.js +20 -0
- package/dist/plugins/facebookGraph/src/index.js +39 -37
- package/dist/plugins/fal/src/credentials.js +14 -0
- package/dist/plugins/fal/src/index.js +5 -3
- package/dist/plugins/fal/src/shared.js +58 -63
- package/dist/plugins/freshdesk/src/credentials.js +20 -0
- package/dist/plugins/freshdesk/src/index.js +25 -46
- package/dist/plugins/freshservice/src/credentials.js +16 -0
- package/dist/plugins/freshservice/src/index.js +37 -58
- package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
- package/dist/plugins/freshworksCrm/src/index.js +20 -39
- package/dist/plugins/getresponse/src/credentials.js +22 -0
- package/dist/plugins/getresponse/src/index.js +20 -32
- package/dist/plugins/gett/src/credentials.js +64 -0
- package/dist/plugins/gett/src/index.js +11 -6
- package/dist/plugins/gett/src/login.js +24 -0
- package/dist/plugins/gett/src/session.js +15 -38
- package/dist/plugins/gett/src/shared.js +41 -84
- package/dist/plugins/ghost/src/credentials.js +36 -0
- package/dist/plugins/ghost/src/index.js +18 -59
- package/dist/plugins/github/src/credentials.js +18 -0
- package/dist/plugins/github/src/index.js +55 -78
- package/dist/plugins/gitlab/src/credentials.js +24 -0
- package/dist/plugins/gitlab/src/index.js +29 -48
- package/dist/plugins/gmail/src/index.js +47 -108
- package/dist/plugins/gong/src/credentials.js +16 -0
- package/dist/plugins/gong/src/index.js +16 -32
- package/dist/plugins/googleAppsScript/src/index.js +109 -42
- package/dist/plugins/googleCalendar/src/index.js +20 -51
- package/dist/plugins/googleContacts/src/index.js +13 -40
- package/dist/plugins/googleDocs/src/index.js +3 -32
- package/dist/plugins/googleDocs/src/shared.js +2 -1
- package/dist/plugins/googleDrive/src/index.js +68 -97
- package/dist/plugins/googleImage/src/credentials.js +14 -0
- package/dist/plugins/googleImage/src/index.js +15 -26
- package/dist/plugins/googleSheets/src/index.js +27 -60
- package/dist/plugins/googleSlides/src/index.js +7 -35
- package/dist/plugins/googleTasks/src/index.js +14 -42
- package/dist/plugins/gotify/src/credentials.js +32 -0
- package/dist/plugins/gotify/src/index.js +14 -36
- package/dist/plugins/gotowebinar/src/credentials.js +13 -0
- package/dist/plugins/gotowebinar/src/index.js +52 -69
- package/dist/plugins/grafana/src/credentials.js +16 -0
- package/dist/plugins/grafana/src/index.js +34 -53
- package/dist/plugins/graphql/src/credentials.js +42 -0
- package/dist/plugins/graphql/src/index.js +21 -46
- package/dist/plugins/grist/src/credentials.js +30 -0
- package/dist/plugins/grist/src/index.js +14 -43
- package/dist/plugins/halopsa/src/credentials.js +56 -0
- package/dist/plugins/halopsa/src/index.js +20 -47
- package/dist/plugins/harvest/src/credentials.js +20 -0
- package/dist/plugins/harvest/src/index.js +24 -43
- package/dist/plugins/helpscout/src/credentials.js +13 -0
- package/dist/plugins/helpscout/src/index.js +26 -38
- package/dist/plugins/highlevel/src/credentials.js +19 -0
- package/dist/plugins/highlevel/src/index.js +42 -65
- package/dist/plugins/homeAssistant/src/credentials.js +27 -0
- package/dist/plugins/homeAssistant/src/index.js +34 -52
- package/dist/plugins/hubspot/src/credentials.js +16 -0
- package/dist/plugins/hubspot/src/index.js +29 -41
- package/dist/plugins/humanticAi/src/credentials.js +13 -0
- package/dist/plugins/humanticAi/src/index.js +15 -22
- package/dist/plugins/hunter/src/credentials.js +13 -0
- package/dist/plugins/hunter/src/index.js +18 -17
- package/dist/plugins/intercom/src/credentials.js +19 -0
- package/dist/plugins/intercom/src/index.js +25 -38
- package/dist/plugins/iterable/src/credentials.js +17 -0
- package/dist/plugins/iterable/src/index.js +26 -40
- package/dist/plugins/jenkins/src/credentials.js +16 -0
- package/dist/plugins/jenkins/src/index.js +22 -36
- package/dist/plugins/jira/src/credentials.js +16 -0
- package/dist/plugins/jira/src/index.js +35 -61
- package/dist/plugins/keap/src/credentials.js +19 -0
- package/dist/plugins/keap/src/index.js +43 -71
- package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
- package/dist/plugins/kobotoolbox/src/index.js +46 -84
- package/dist/plugins/lemlist/src/credentials.js +19 -0
- package/dist/plugins/lemlist/src/index.js +35 -47
- package/dist/plugins/linear/src/attachments.js +7 -7
- package/dist/plugins/linear/src/comments.js +7 -7
- package/dist/plugins/linear/src/credentials.js +17 -0
- package/dist/plugins/linear/src/cycles.js +5 -5
- package/dist/plugins/linear/src/index.js +2 -0
- package/dist/plugins/linear/src/initiatives.js +6 -6
- package/dist/plugins/linear/src/issues.js +14 -14
- package/dist/plugins/linear/src/labels.js +6 -6
- package/dist/plugins/linear/src/organization.js +2 -2
- package/dist/plugins/linear/src/projects.js +12 -12
- package/dist/plugins/linear/src/shared.js +34 -32
- package/dist/plugins/linear/src/states.js +3 -3
- package/dist/plugins/linear/src/teams.js +4 -4
- package/dist/plugins/linear/src/users.js +3 -3
- package/dist/plugins/linear/src/views.js +5 -5
- package/dist/plugins/linear/src/webhooks.js +5 -5
- package/dist/plugins/lingvanex/src/credentials.js +13 -0
- package/dist/plugins/lingvanex/src/index.js +7 -9
- package/dist/plugins/linkedin/src/credentials.js +17 -0
- package/dist/plugins/linkedin/src/index.js +13 -17
- package/dist/plugins/lonescale/src/credentials.js +13 -0
- package/dist/plugins/lonescale/src/index.js +16 -26
- package/dist/plugins/magento/src/credentials.js +16 -0
- package/dist/plugins/magento/src/index.js +67 -84
- package/dist/plugins/mailcheck/src/credentials.js +17 -0
- package/dist/plugins/mailcheck/src/index.js +7 -9
- package/dist/plugins/mailchimp/src/credentials.js +32 -0
- package/dist/plugins/mailchimp/src/index.js +36 -44
- package/dist/plugins/mailerlite/src/credentials.js +13 -0
- package/dist/plugins/mailerlite/src/index.js +19 -32
- package/dist/plugins/mailgun/src/credentials.js +21 -0
- package/dist/plugins/mailgun/src/index.js +15 -21
- package/dist/plugins/mailjet/src/credentials.js +38 -0
- package/dist/plugins/mailjet/src/index.js +60 -115
- package/dist/plugins/mandrill/src/credentials.js +17 -0
- package/dist/plugins/mandrill/src/index.js +11 -12
- package/dist/plugins/marketstack/src/credentials.js +16 -0
- package/dist/plugins/marketstack/src/index.js +18 -28
- package/dist/plugins/matrix/src/credentials.js +19 -0
- package/dist/plugins/matrix/src/index.js +23 -52
- package/dist/plugins/mattermost/src/credentials.js +19 -0
- package/dist/plugins/mattermost/src/index.js +41 -73
- package/dist/plugins/mautic/src/credentials.js +16 -0
- package/dist/plugins/mautic/src/index.js +46 -62
- package/dist/plugins/medium/src/credentials.js +20 -0
- package/dist/plugins/medium/src/index.js +18 -23
- package/dist/plugins/messagebird/src/credentials.js +22 -0
- package/dist/plugins/messagebird/src/index.js +13 -18
- package/dist/plugins/metabase/src/credentials.js +19 -0
- package/dist/plugins/metabase/src/index.js +24 -40
- package/dist/plugins/microsoftCalendar/src/index.js +49 -18
- package/dist/plugins/microsoftFiles/src/index.js +95 -31
- package/dist/plugins/microsoftMail/src/index.js +63 -21
- package/dist/plugins/misp/src/credentials.js +16 -0
- package/dist/plugins/misp/src/index.js +60 -71
- package/dist/plugins/mocean/src/credentials.js +17 -0
- package/dist/plugins/mocean/src/index.js +11 -23
- package/dist/plugins/monday/src/credentials.js +14 -0
- package/dist/plugins/monday/src/index.js +31 -44
- package/dist/plugins/monicaCrm/src/credentials.js +19 -0
- package/dist/plugins/monicaCrm/src/index.js +25 -42
- package/dist/plugins/msg91/src/credentials.js +10 -0
- package/dist/plugins/msg91/src/index.js +15 -11
- package/dist/plugins/nasa/src/credentials.js +22 -0
- package/dist/plugins/nasa/src/index.js +24 -28
- package/dist/plugins/netlify/src/credentials.js +19 -0
- package/dist/plugins/netlify/src/index.js +27 -51
- package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
- package/dist/plugins/netscalerAdc/src/index.js +16 -31
- package/dist/plugins/nextcloud/src/credentials.js +27 -0
- package/dist/plugins/nextcloud/src/index.js +55 -109
- package/dist/plugins/nocodb/src/credentials.js +16 -0
- package/dist/plugins/nocodb/src/index.js +19 -37
- package/dist/plugins/notion/src/credentials.js +21 -0
- package/dist/plugins/notion/src/index.js +25 -38
- package/dist/plugins/npm/src/credentials.js +19 -0
- package/dist/plugins/npm/src/index.js +22 -32
- package/dist/plugins/odoo/src/credentials.js +21 -0
- package/dist/plugins/odoo/src/index.js +53 -69
- package/dist/plugins/okta/src/credentials.js +23 -0
- package/dist/plugins/okta/src/index.js +30 -35
- package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
- package/dist/plugins/oneSimpleApi/src/index.js +19 -24
- package/dist/plugins/onfleet/src/credentials.js +23 -0
- package/dist/plugins/onfleet/src/index.js +42 -53
- package/dist/plugins/openai/src/credentials.js +13 -0
- package/dist/plugins/openai/src/index.js +16 -24
- package/dist/plugins/openweathermap/src/credentials.js +16 -0
- package/dist/plugins/openweathermap/src/index.js +22 -22
- package/dist/plugins/oura/src/credentials.js +19 -0
- package/dist/plugins/oura/src/index.js +13 -18
- package/dist/plugins/paddle/src/credentials.js +27 -0
- package/dist/plugins/paddle/src/index.js +20 -36
- package/dist/plugins/pagerduty/src/credentials.js +24 -0
- package/dist/plugins/pagerduty/src/index.js +30 -39
- package/dist/plugins/parallel/src/credentials.js +18 -0
- package/dist/plugins/parallel/src/index.js +16 -22
- package/dist/plugins/paypal/src/credentials.js +44 -0
- package/dist/plugins/paypal/src/index.js +14 -40
- package/dist/plugins/peekalink/src/credentials.js +16 -0
- package/dist/plugins/peekalink/src/index.js +10 -11
- package/dist/plugins/phantombuster/src/credentials.js +19 -0
- package/dist/plugins/phantombuster/src/index.js +19 -32
- package/dist/plugins/philipsHue/src/credentials.js +17 -0
- package/dist/plugins/philipsHue/src/index.js +15 -27
- package/dist/plugins/pipedrive/src/credentials.js +26 -0
- package/dist/plugins/pipedrive/src/index.js +43 -73
- package/dist/plugins/plaud/src/index.js +2 -1
- package/dist/plugins/plaud/src/shared.js +23 -19
- package/dist/plugins/plivo/src/credentials.js +20 -0
- package/dist/plugins/plivo/src/index.js +13 -19
- package/dist/plugins/posthog/src/credentials.js +18 -0
- package/dist/plugins/posthog/src/index.js +14 -20
- package/dist/plugins/profitwell/src/credentials.js +22 -0
- package/dist/plugins/profitwell/src/index.js +10 -17
- package/dist/plugins/pushbullet/src/credentials.js +19 -0
- package/dist/plugins/pushbullet/src/index.js +19 -27
- package/dist/plugins/pushcut/src/credentials.js +19 -0
- package/dist/plugins/pushcut/src/index.js +7 -8
- package/dist/plugins/pushover/src/credentials.js +14 -0
- package/dist/plugins/pushover/src/index.js +7 -12
- package/dist/plugins/quickbase/src/credentials.js +15 -0
- package/dist/plugins/quickbase/src/index.js +24 -34
- package/dist/plugins/quickbooks/src/credentials.js +22 -0
- package/dist/plugins/quickbooks/src/index.js +17 -46
- package/dist/plugins/raindrop/src/credentials.js +19 -0
- package/dist/plugins/raindrop/src/index.js +30 -32
- package/dist/plugins/recraft/src/credentials.js +13 -0
- package/dist/plugins/recraft/src/index.js +39 -28
- package/dist/plugins/reddit/src/credentials.js +26 -0
- package/dist/plugins/reddit/src/index.js +30 -34
- package/dist/plugins/replicate/src/credentials.js +23 -0
- package/dist/plugins/replicate/src/index.js +18 -28
- package/dist/plugins/rocketchat/src/credentials.js +17 -0
- package/dist/plugins/rocketchat/src/index.js +8 -19
- package/dist/plugins/rundeck/src/credentials.js +16 -0
- package/dist/plugins/rundeck/src/index.js +12 -28
- package/dist/plugins/salesforce/src/credentials.js +73 -0
- package/dist/plugins/salesforce/src/index.js +6 -0
- package/dist/plugins/salesforce/src/metadata.js +3 -16
- package/dist/plugins/salesforce/src/shared.js +25 -100
- package/dist/plugins/salesforce/src/sobjects.js +10 -9
- package/dist/plugins/salesmate/src/credentials.js +17 -0
- package/dist/plugins/salesmate/src/index.js +20 -37
- package/dist/plugins/securityScorecard/src/credentials.js +22 -0
- package/dist/plugins/securityScorecard/src/index.js +24 -37
- package/dist/plugins/segment/src/credentials.js +16 -0
- package/dist/plugins/segment/src/index.js +12 -16
- package/dist/plugins/sendgrid/src/credentials.js +13 -0
- package/dist/plugins/sendgrid/src/index.js +31 -35
- package/dist/plugins/sendy/src/credentials.js +18 -0
- package/dist/plugins/sendy/src/index.js +18 -24
- package/dist/plugins/sentry/src/credentials.js +16 -0
- package/dist/plugins/sentry/src/index.js +30 -98
- package/dist/plugins/servicenow/src/credentials.js +13 -0
- package/dist/plugins/servicenow/src/index.js +22 -41
- package/dist/plugins/shiftAtlas/src/graph.js +2 -2
- package/dist/plugins/shiftAtlas/src/index.js +2 -0
- package/dist/plugins/shiftAtlas/src/shared.js +3 -1
- package/dist/plugins/shiftBwm/src/index.js +4 -2
- package/dist/plugins/shiftBwm/src/shared.js +41 -16
- package/dist/plugins/shiftCrm/src/access.js +2 -2
- package/dist/plugins/shiftCrm/src/accounts.js +3 -3
- package/dist/plugins/shiftCrm/src/activities.js +3 -3
- package/dist/plugins/shiftCrm/src/credentials.js +6 -0
- package/dist/plugins/shiftCrm/src/index.js +2 -0
- package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
- package/dist/plugins/shiftCrm/src/people.js +3 -3
- package/dist/plugins/shiftCrm/src/records.js +2 -2
- package/dist/plugins/shiftCrm/src/shared.js +2 -1
- package/dist/plugins/shiftCrm/src/tasks.js +3 -3
- package/dist/plugins/shiftObjects/src/credentials.js +2 -0
- package/dist/plugins/shiftObjects/src/index.js +2 -0
- package/dist/plugins/shiftObjects/src/objects.js +4 -3
- package/dist/plugins/shiftOcr/src/credentials.js +8 -0
- package/dist/plugins/shiftOcr/src/index.js +14 -8
- package/dist/plugins/shiftPages/src/index.js +2 -0
- package/dist/plugins/shiftPages/src/pages.js +5 -3
- package/dist/plugins/shiftPages/src/shared.js +3 -1
- package/dist/plugins/shiftTranscription/src/index.js +2 -0
- package/dist/plugins/shiftTranscription/src/shared.js +11 -1
- package/dist/plugins/shiftTranscription/src/transcription.js +5 -5
- package/dist/plugins/shiftWork/src/index.js +2 -0
- package/dist/plugins/shiftWork/src/issue-views.js +5 -5
- package/dist/plugins/shiftWork/src/issues.js +11 -7
- package/dist/plugins/shiftWork/src/projects.js +3 -3
- package/dist/plugins/shiftWork/src/shared.js +3 -1
- package/dist/plugins/shopify/src/credentials.js +16 -0
- package/dist/plugins/shopify/src/index.js +32 -59
- package/dist/plugins/signl4/src/credentials.js +17 -0
- package/dist/plugins/signl4/src/index.js +28 -29
- package/dist/plugins/slack/src/credentials.js +19 -0
- package/dist/plugins/slack/src/index.js +51 -60
- package/dist/plugins/sms77/src/credentials.js +17 -0
- package/dist/plugins/sms77/src/index.js +11 -16
- package/dist/plugins/splunk/src/credentials.js +19 -0
- package/dist/plugins/splunk/src/index.js +32 -74
- package/dist/plugins/spotify/src/credentials.js +19 -0
- package/dist/plugins/spotify/src/index.js +40 -55
- package/dist/plugins/stackby/src/credentials.js +13 -0
- package/dist/plugins/stackby/src/index.js +14 -23
- package/dist/plugins/steel/src/auth.js +27 -0
- package/dist/plugins/steel/src/browser.js +4 -3
- package/dist/plugins/steel/src/captchas.js +4 -3
- package/dist/plugins/steel/src/extensions.js +3 -2
- package/dist/plugins/steel/src/files.js +9 -10
- package/dist/plugins/steel/src/index.js +2 -0
- package/dist/plugins/steel/src/page/tools.js +3 -3
- package/dist/plugins/steel/src/profiles.js +4 -3
- package/dist/plugins/steel/src/sessions.js +13 -13
- package/dist/plugins/steel/src/shared.js +21 -51
- package/dist/plugins/storyblok/src/credentials.js +37 -0
- package/dist/plugins/storyblok/src/index.js +22 -66
- package/dist/plugins/strapi/src/credentials.js +71 -0
- package/dist/plugins/strapi/src/index.js +36 -70
- package/dist/plugins/strava/src/credentials.js +19 -0
- package/dist/plugins/strava/src/index.js +16 -33
- package/dist/plugins/stripe/src/credentials.js +19 -0
- package/dist/plugins/stripe/src/index.js +44 -58
- package/dist/plugins/supabase/src/credentials.js +30 -0
- package/dist/plugins/supabase/src/index.js +18 -40
- package/dist/plugins/syncromsp/src/credentials.js +16 -0
- package/dist/plugins/syncromsp/src/index.js +37 -70
- package/dist/plugins/tapfiliate/src/credentials.js +13 -0
- package/dist/plugins/tapfiliate/src/index.js +21 -31
- package/dist/plugins/telegram/src/credentials.js +20 -0
- package/dist/plugins/telegram/src/index.js +31 -39
- package/dist/plugins/thehive/src/credentials.js +14 -0
- package/dist/plugins/thehive/src/index.js +33 -50
- package/dist/plugins/thehiveProject/src/credentials.js +16 -0
- package/dist/plugins/thehiveProject/src/index.js +53 -122
- package/dist/plugins/todoist/src/credentials.js +26 -0
- package/dist/plugins/todoist/src/index.js +49 -79
- package/dist/plugins/together/src/credentials.js +16 -0
- package/dist/plugins/together/src/index.js +31 -33
- package/dist/plugins/travisci/src/credentials.js +24 -0
- package/dist/plugins/travisci/src/index.js +16 -30
- package/dist/plugins/trello/src/credentials.js +29 -0
- package/dist/plugins/trello/src/index.js +49 -64
- package/dist/plugins/twake/src/credentials.js +16 -0
- package/dist/plugins/twake/src/index.js +8 -10
- package/dist/plugins/twilio/src/credentials.js +23 -0
- package/dist/plugins/twilio/src/index.js +12 -26
- package/dist/plugins/twist/src/credentials.js +13 -0
- package/dist/plugins/twist/src/index.js +32 -44
- package/dist/plugins/twitter/src/credentials.js +16 -0
- package/dist/plugins/twitter/src/index.js +25 -37
- package/dist/plugins/typesafe/src/credentials.js +28 -0
- package/dist/plugins/typesafe/src/index.js +3 -1
- package/dist/plugins/typesafe/src/shared.js +23 -35
- package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
- package/dist/plugins/unleashedSoftware/src/index.js +13 -37
- package/dist/plugins/uplead/src/credentials.js +16 -0
- package/dist/plugins/uplead/src/index.js +11 -16
- package/dist/plugins/uproc/src/credentials.js +14 -0
- package/dist/plugins/uproc/src/index.js +7 -10
- package/dist/plugins/uptimerobot/src/credentials.js +14 -0
- package/dist/plugins/uptimerobot/src/index.js +28 -39
- package/dist/plugins/urlscanio/src/credentials.js +13 -0
- package/dist/plugins/urlscanio/src/index.js +13 -22
- package/dist/plugins/vercel/src/credentials.js +19 -0
- package/dist/plugins/vercel/src/deployments.js +27 -11
- package/dist/plugins/vercel/src/env.js +31 -12
- package/dist/plugins/vercel/src/index.js +2 -0
- package/dist/plugins/vercel/src/projects.js +6 -3
- package/dist/plugins/vercel/src/shared.js +32 -37
- package/dist/plugins/vero/src/credentials.js +17 -0
- package/dist/plugins/vero/src/index.js +18 -21
- package/dist/plugins/vonage/src/credentials.js +17 -0
- package/dist/plugins/vonage/src/index.js +14 -18
- package/dist/plugins/wekan/src/credentials.js +16 -0
- package/dist/plugins/wekan/src/index.js +33 -46
- package/dist/plugins/wolt/src/account.js +6 -0
- package/dist/plugins/wolt/src/catalog.js +2 -2
- package/dist/plugins/wolt/src/credentials.js +64 -0
- package/dist/plugins/wolt/src/index.js +8 -3
- package/dist/plugins/wolt/src/orders.js +2 -2
- package/dist/plugins/wolt/src/public.js +91 -0
- package/dist/plugins/wolt/src/shared.js +49 -158
- package/dist/plugins/woocommerce/src/credentials.js +16 -0
- package/dist/plugins/woocommerce/src/index.js +19 -37
- package/dist/plugins/wordpress/src/credentials.js +16 -0
- package/dist/plugins/wordpress/src/index.js +23 -42
- package/dist/plugins/xai/src/credentials.js +13 -0
- package/dist/plugins/xai/src/index.js +32 -31
- package/dist/plugins/xero/src/credentials.js +17 -0
- package/dist/plugins/xero/src/index.js +19 -36
- package/dist/plugins/yourls/src/credentials.js +17 -0
- package/dist/plugins/yourls/src/index.js +13 -23
- package/dist/plugins/zammad/src/credentials.js +15 -0
- package/dist/plugins/zammad/src/index.js +27 -47
- package/dist/plugins/zendesk/src/credentials.js +26 -0
- package/dist/plugins/zendesk/src/index.js +29 -48
- package/dist/plugins/zoho/src/credentials.js +17 -0
- package/dist/plugins/zoho/src/index.js +18 -38
- package/dist/plugins/zoom/src/credentials.js +19 -0
- package/dist/plugins/zoom/src/index.js +15 -30
- package/dist/plugins/zulip/src/credentials.js +16 -0
- package/dist/plugins/zulip/src/index.js +36 -42
- package/dist/sdk.d.ts +8 -0
- package/dist/sdk.js +3 -0
- package/package.json +2 -1
- package/dist/plugins/_shared/authedFetch.js +0 -33
- package/dist/plugins/_shared/tokenRefresh.js +0 -41
- package/dist/tests/helpers/engine-harness.d.ts +0 -1
- package/dist/tests/helpers/engine-harness.js +0 -236
|
@@ -1,37 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
const opts = {
|
|
1
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
2
|
+
import { agileCrmCredential } from "./credentials.js";
|
|
3
|
+
function apiRequest(ctx, method, path, body, query) {
|
|
4
|
+
return credentialJson(ctx, agileCrmCredential, "agileCrm", {
|
|
5
|
+
target: "api",
|
|
6
|
+
path,
|
|
10
7
|
method,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Authorization: `Basic ${btoa(`${email}:${apiKey}`)}`,
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
if (body && method !== "GET" && method !== "DELETE") {
|
|
18
|
-
opts.body = JSON.stringify(body);
|
|
19
|
-
}
|
|
20
|
-
const res = await fetch(url.toString(), opts);
|
|
21
|
-
if (!res.ok) {
|
|
22
|
-
const text = await res.text();
|
|
23
|
-
throw new Error(`Agile CRM API error ${res.status}: ${text}`);
|
|
24
|
-
}
|
|
25
|
-
if (res.status === 204 || res.headers.get("content-length") === "0")
|
|
26
|
-
return { success: true };
|
|
27
|
-
return res.json();
|
|
8
|
+
query,
|
|
9
|
+
...(body && method !== "GET" && method !== "DELETE" ? { json: body } : {}),
|
|
10
|
+
});
|
|
28
11
|
}
|
|
29
|
-
async function paginateAll(
|
|
12
|
+
async function paginateAll(ctx, method, path, body, qs, limit, sendCursorInBody) {
|
|
30
13
|
const results = [];
|
|
31
14
|
const _body = { ...body };
|
|
32
15
|
const _qs = { ...qs };
|
|
33
16
|
while (true) {
|
|
34
|
-
const data = (await apiRequest(
|
|
17
|
+
const data = (await apiRequest(ctx, method, path, Object.keys(_body).length > 0 ? _body : undefined, Object.keys(_qs).length > 0 ? _qs : undefined));
|
|
35
18
|
if (!Array.isArray(data) || data.length === 0)
|
|
36
19
|
break;
|
|
37
20
|
results.push(...data);
|
|
@@ -49,16 +32,10 @@ async function paginateAll(subdomain, email, apiKey, method, endpoint, body, qs,
|
|
|
49
32
|
}
|
|
50
33
|
return results;
|
|
51
34
|
}
|
|
52
|
-
function getConn(ctx) {
|
|
53
|
-
return {
|
|
54
|
-
subdomain: ctx.connection.config.subdomain,
|
|
55
|
-
email: ctx.connection.config.email,
|
|
56
|
-
apiKey: ctx.connection.config.apiKey,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
35
|
export default function agileCrm(rl) {
|
|
60
36
|
rl.setName("agileCrm");
|
|
61
37
|
rl.setVersion("0.1.0");
|
|
38
|
+
rl.setCredential(agileCrmCredential);
|
|
62
39
|
rl.setConnectionSchema({
|
|
63
40
|
subdomain: {
|
|
64
41
|
type: "string",
|
|
@@ -103,7 +80,6 @@ export default function agileCrm(rl) {
|
|
|
103
80
|
},
|
|
104
81
|
async execute(input, ctx) {
|
|
105
82
|
const { firstName, lastName, email, company, title, phone, tags, starValue, } = input;
|
|
106
|
-
const { subdomain, email: userEmail, apiKey } = getConn(ctx);
|
|
107
83
|
const properties = [];
|
|
108
84
|
if (firstName)
|
|
109
85
|
properties.push({
|
|
@@ -126,7 +102,7 @@ export default function agileCrm(rl) {
|
|
|
126
102
|
body.tags = tags;
|
|
127
103
|
if (starValue !== undefined)
|
|
128
104
|
body.star_value = starValue;
|
|
129
|
-
return apiRequest(
|
|
105
|
+
return apiRequest(ctx, "POST", "api/contacts", body);
|
|
130
106
|
},
|
|
131
107
|
});
|
|
132
108
|
rl.registerAction("contact.get", {
|
|
@@ -137,8 +113,7 @@ export default function agileCrm(rl) {
|
|
|
137
113
|
},
|
|
138
114
|
async execute(input, ctx) {
|
|
139
115
|
const { contactId } = input;
|
|
140
|
-
|
|
141
|
-
return apiRequest(subdomain, email, apiKey, "GET", `api/contacts/${contactId}`);
|
|
116
|
+
return apiRequest(ctx, "GET", `api/contacts/${pathSegment(contactId)}`);
|
|
142
117
|
},
|
|
143
118
|
});
|
|
144
119
|
rl.registerAction("contact.list", {
|
|
@@ -153,12 +128,11 @@ export default function agileCrm(rl) {
|
|
|
153
128
|
},
|
|
154
129
|
async execute(input, ctx) {
|
|
155
130
|
const { limit } = input ?? {};
|
|
156
|
-
const { subdomain, email, apiKey } = getConn(ctx);
|
|
157
131
|
const body = {
|
|
158
132
|
page_size: limit ?? 100,
|
|
159
133
|
filterJson: JSON.stringify({ contact_type: "PERSON" }),
|
|
160
134
|
};
|
|
161
|
-
return paginateAll(
|
|
135
|
+
return paginateAll(ctx, "POST", "api/filters/filter/dynamic-filter", body, undefined, limit, true);
|
|
162
136
|
},
|
|
163
137
|
});
|
|
164
138
|
rl.registerAction("contact.update", {
|
|
@@ -184,8 +158,6 @@ export default function agileCrm(rl) {
|
|
|
184
158
|
},
|
|
185
159
|
async execute(input, ctx) {
|
|
186
160
|
const { contactId, firstName, lastName, email: contactEmail, company, tags, starValue, leadScore, } = input;
|
|
187
|
-
const { subdomain, email, apiKey } = getConn(ctx);
|
|
188
|
-
const baseUri = `https://${subdomain}.agilecrm.com/dev/`;
|
|
189
161
|
const properties = [];
|
|
190
162
|
if (firstName)
|
|
191
163
|
properties.push({
|
|
@@ -200,43 +172,29 @@ export default function agileCrm(rl) {
|
|
|
200
172
|
if (company)
|
|
201
173
|
properties.push({ type: "SYSTEM", name: "company", value: company });
|
|
202
174
|
let result;
|
|
203
|
-
const auth = `Basic ${btoa(`${email}:${apiKey}`)}`;
|
|
204
|
-
const headers = {
|
|
205
|
-
Accept: "application/json",
|
|
206
|
-
"Content-Type": "application/json",
|
|
207
|
-
Authorization: auth,
|
|
208
|
-
};
|
|
209
175
|
if (properties.length > 0) {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
body: JSON.stringify({ id: contactId, properties }),
|
|
176
|
+
result = await apiRequest(ctx, "PUT", "api/contacts/edit-properties", {
|
|
177
|
+
id: contactId,
|
|
178
|
+
properties,
|
|
214
179
|
});
|
|
215
|
-
result = await res.json();
|
|
216
180
|
}
|
|
217
181
|
if (leadScore !== undefined) {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
body: JSON.stringify({ id: contactId, lead_score: leadScore }),
|
|
182
|
+
result = await apiRequest(ctx, "PUT", "api/contacts/edit/lead-score", {
|
|
183
|
+
id: contactId,
|
|
184
|
+
lead_score: leadScore,
|
|
222
185
|
});
|
|
223
|
-
result = await res.json();
|
|
224
186
|
}
|
|
225
187
|
if (tags) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
body: JSON.stringify({ id: contactId, tags }),
|
|
188
|
+
result = await apiRequest(ctx, "PUT", "api/contacts/edit/tags", {
|
|
189
|
+
id: contactId,
|
|
190
|
+
tags,
|
|
230
191
|
});
|
|
231
|
-
result = await res.json();
|
|
232
192
|
}
|
|
233
193
|
if (starValue !== undefined) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
body: JSON.stringify({ id: contactId, star_value: starValue }),
|
|
194
|
+
result = await apiRequest(ctx, "PUT", "api/contacts/edit/add-star", {
|
|
195
|
+
id: contactId,
|
|
196
|
+
star_value: starValue,
|
|
238
197
|
});
|
|
239
|
-
result = await res.json();
|
|
240
198
|
}
|
|
241
199
|
return result ?? { success: true };
|
|
242
200
|
},
|
|
@@ -249,8 +207,7 @@ export default function agileCrm(rl) {
|
|
|
249
207
|
},
|
|
250
208
|
async execute(input, ctx) {
|
|
251
209
|
const { contactId } = input;
|
|
252
|
-
|
|
253
|
-
return apiRequest(subdomain, email, apiKey, "DELETE", `api/contacts/${contactId}`);
|
|
210
|
+
return apiRequest(ctx, "DELETE", `api/contacts/${pathSegment(contactId)}`);
|
|
254
211
|
},
|
|
255
212
|
});
|
|
256
213
|
// ── Company ─────────────────────────────────────────
|
|
@@ -269,7 +226,6 @@ export default function agileCrm(rl) {
|
|
|
269
226
|
},
|
|
270
227
|
async execute(input, ctx) {
|
|
271
228
|
const { name, email: companyEmail, phone, tags, } = input;
|
|
272
|
-
const { subdomain, email, apiKey } = getConn(ctx);
|
|
273
229
|
const properties = [];
|
|
274
230
|
if (name)
|
|
275
231
|
properties.push({ type: "SYSTEM", name: "name", value: name });
|
|
@@ -280,7 +236,7 @@ export default function agileCrm(rl) {
|
|
|
280
236
|
const body = { type: "COMPANY", properties };
|
|
281
237
|
if (tags)
|
|
282
238
|
body.tags = tags;
|
|
283
|
-
return apiRequest(
|
|
239
|
+
return apiRequest(ctx, "POST", "api/contacts", body);
|
|
284
240
|
},
|
|
285
241
|
});
|
|
286
242
|
rl.registerAction("company.get", {
|
|
@@ -291,8 +247,7 @@ export default function agileCrm(rl) {
|
|
|
291
247
|
},
|
|
292
248
|
async execute(input, ctx) {
|
|
293
249
|
const { companyId } = input;
|
|
294
|
-
|
|
295
|
-
return apiRequest(subdomain, email, apiKey, "GET", `api/contacts/${companyId}`);
|
|
250
|
+
return apiRequest(ctx, "GET", `api/contacts/${pathSegment(companyId)}`);
|
|
296
251
|
},
|
|
297
252
|
});
|
|
298
253
|
rl.registerAction("company.list", {
|
|
@@ -307,12 +262,11 @@ export default function agileCrm(rl) {
|
|
|
307
262
|
},
|
|
308
263
|
async execute(input, ctx) {
|
|
309
264
|
const { limit } = input ?? {};
|
|
310
|
-
const { subdomain, email, apiKey } = getConn(ctx);
|
|
311
265
|
const body = {
|
|
312
266
|
page_size: limit ?? 100,
|
|
313
267
|
filterJson: JSON.stringify({ contact_type: "COMPANY" }),
|
|
314
268
|
};
|
|
315
|
-
return paginateAll(
|
|
269
|
+
return paginateAll(ctx, "POST", "api/filters/filter/dynamic-filter", body, undefined, limit, true);
|
|
316
270
|
},
|
|
317
271
|
});
|
|
318
272
|
rl.registerAction("company.update", {
|
|
@@ -336,8 +290,6 @@ export default function agileCrm(rl) {
|
|
|
336
290
|
},
|
|
337
291
|
async execute(input, ctx) {
|
|
338
292
|
const { companyId, name, email: companyEmail, phone, tags, starValue, } = input;
|
|
339
|
-
const { subdomain, email, apiKey } = getConn(ctx);
|
|
340
|
-
const baseUri = `https://${subdomain}.agilecrm.com/dev/`;
|
|
341
293
|
const properties = [];
|
|
342
294
|
if (name)
|
|
343
295
|
properties.push({ type: "SYSTEM", name: "name", value: name });
|
|
@@ -346,35 +298,23 @@ export default function agileCrm(rl) {
|
|
|
346
298
|
if (phone)
|
|
347
299
|
properties.push({ type: "SYSTEM", name: "phone", value: phone });
|
|
348
300
|
let result;
|
|
349
|
-
const auth = `Basic ${btoa(`${email}:${apiKey}`)}`;
|
|
350
|
-
const headers = {
|
|
351
|
-
Accept: "application/json",
|
|
352
|
-
"Content-Type": "application/json",
|
|
353
|
-
Authorization: auth,
|
|
354
|
-
};
|
|
355
301
|
if (properties.length > 0) {
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
body: JSON.stringify({ id: companyId, properties }),
|
|
302
|
+
result = await apiRequest(ctx, "PUT", "api/contacts/edit-properties", {
|
|
303
|
+
id: companyId,
|
|
304
|
+
properties,
|
|
360
305
|
});
|
|
361
|
-
result = await res.json();
|
|
362
306
|
}
|
|
363
307
|
if (tags) {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
body: JSON.stringify({ id: companyId, tags }),
|
|
308
|
+
result = await apiRequest(ctx, "PUT", "api/contacts/edit/tags", {
|
|
309
|
+
id: companyId,
|
|
310
|
+
tags,
|
|
368
311
|
});
|
|
369
|
-
result = await res.json();
|
|
370
312
|
}
|
|
371
313
|
if (starValue !== undefined) {
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
body: JSON.stringify({ id: companyId, star_value: starValue }),
|
|
314
|
+
result = await apiRequest(ctx, "PUT", "api/contacts/edit/add-star", {
|
|
315
|
+
id: companyId,
|
|
316
|
+
star_value: starValue,
|
|
376
317
|
});
|
|
377
|
-
result = await res.json();
|
|
378
318
|
}
|
|
379
319
|
return result ?? { success: true };
|
|
380
320
|
},
|
|
@@ -387,8 +327,7 @@ export default function agileCrm(rl) {
|
|
|
387
327
|
},
|
|
388
328
|
async execute(input, ctx) {
|
|
389
329
|
const { companyId } = input;
|
|
390
|
-
|
|
391
|
-
return apiRequest(subdomain, email, apiKey, "DELETE", `api/contacts/${companyId}`);
|
|
330
|
+
return apiRequest(ctx, "DELETE", `api/contacts/${pathSegment(companyId)}`);
|
|
392
331
|
},
|
|
393
332
|
});
|
|
394
333
|
// ── Deal ────────────────────────────────────────────
|
|
@@ -425,7 +364,6 @@ export default function agileCrm(rl) {
|
|
|
425
364
|
},
|
|
426
365
|
async execute(input, ctx) {
|
|
427
366
|
const { name, expectedValue, probability, milestone, closeDate, contactIds, } = input;
|
|
428
|
-
const { subdomain, email, apiKey } = getConn(ctx);
|
|
429
367
|
const body = {
|
|
430
368
|
name,
|
|
431
369
|
expected_value: expectedValue,
|
|
@@ -435,7 +373,7 @@ export default function agileCrm(rl) {
|
|
|
435
373
|
};
|
|
436
374
|
if (contactIds)
|
|
437
375
|
body.contactIds = contactIds;
|
|
438
|
-
return apiRequest(
|
|
376
|
+
return apiRequest(ctx, "POST", "api/opportunity", body);
|
|
439
377
|
},
|
|
440
378
|
});
|
|
441
379
|
rl.registerAction("deal.get", {
|
|
@@ -446,8 +384,7 @@ export default function agileCrm(rl) {
|
|
|
446
384
|
},
|
|
447
385
|
async execute(input, ctx) {
|
|
448
386
|
const { dealId } = input;
|
|
449
|
-
|
|
450
|
-
return apiRequest(subdomain, email, apiKey, "GET", `api/opportunity/${dealId}`);
|
|
387
|
+
return apiRequest(ctx, "GET", `api/opportunity/${pathSegment(dealId)}`);
|
|
451
388
|
},
|
|
452
389
|
});
|
|
453
390
|
rl.registerAction("deal.list", {
|
|
@@ -462,8 +399,7 @@ export default function agileCrm(rl) {
|
|
|
462
399
|
},
|
|
463
400
|
async execute(input, ctx) {
|
|
464
401
|
const { limit } = input ?? {};
|
|
465
|
-
|
|
466
|
-
return paginateAll(subdomain, email, apiKey, "GET", "api/opportunity", undefined, { page_size: limit ?? 100 }, limit);
|
|
402
|
+
return paginateAll(ctx, "GET", "api/opportunity", undefined, { page_size: limit ?? 100 }, limit);
|
|
467
403
|
},
|
|
468
404
|
});
|
|
469
405
|
rl.registerAction("deal.update", {
|
|
@@ -490,7 +426,6 @@ export default function agileCrm(rl) {
|
|
|
490
426
|
},
|
|
491
427
|
async execute(input, ctx) {
|
|
492
428
|
const { dealId, name, expectedValue, probability, contactIds } = input;
|
|
493
|
-
const { subdomain, email, apiKey } = getConn(ctx);
|
|
494
429
|
const body = { id: dealId };
|
|
495
430
|
if (name)
|
|
496
431
|
body.name = name;
|
|
@@ -500,7 +435,7 @@ export default function agileCrm(rl) {
|
|
|
500
435
|
body.probability = probability;
|
|
501
436
|
if (contactIds)
|
|
502
437
|
body.contactIds = contactIds;
|
|
503
|
-
return apiRequest(
|
|
438
|
+
return apiRequest(ctx, "PUT", "api/opportunity/partial-update", body);
|
|
504
439
|
},
|
|
505
440
|
});
|
|
506
441
|
rl.registerAction("deal.delete", {
|
|
@@ -511,8 +446,7 @@ export default function agileCrm(rl) {
|
|
|
511
446
|
},
|
|
512
447
|
async execute(input, ctx) {
|
|
513
448
|
const { dealId } = input;
|
|
514
|
-
|
|
515
|
-
return apiRequest(subdomain, email, apiKey, "DELETE", `api/opportunity/${dealId}`);
|
|
449
|
+
return apiRequest(ctx, "DELETE", `api/opportunity/${pathSegment(dealId)}`);
|
|
516
450
|
},
|
|
517
451
|
});
|
|
518
452
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
/** A personal access token, sent as a bearer to Airtable's one API origin. */
|
|
3
|
+
export const airtableCredential = staticCredential({
|
|
4
|
+
id: "airtable",
|
|
5
|
+
auth: { kind: "bearer" },
|
|
6
|
+
local: { secret: "token" },
|
|
7
|
+
targets: {
|
|
8
|
+
api: {
|
|
9
|
+
baseUrl: "https://api.airtable.com/v0/",
|
|
10
|
+
methods: ["GET", "POST", "PATCH", "DELETE"],
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
probe: {
|
|
14
|
+
target: "api",
|
|
15
|
+
path: "meta/whoami",
|
|
16
|
+
method: "GET",
|
|
17
|
+
acceptedStatuses: [200],
|
|
18
|
+
},
|
|
19
|
+
});
|
|
@@ -1,49 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
2
|
+
import { airtableCredential } from "./credentials.js";
|
|
3
|
+
function apiRequest(ctx, method, path, body, qs) {
|
|
4
|
+
// Airtable's repeated-array convention: fields[]=a&fields[]=b.
|
|
5
|
+
const query = {};
|
|
4
6
|
if (qs) {
|
|
5
7
|
for (const [k, v] of Object.entries(qs)) {
|
|
6
8
|
if (v === undefined)
|
|
7
9
|
continue;
|
|
8
|
-
|
|
9
|
-
for (const item of v)
|
|
10
|
-
url.searchParams.append(`${k}[]`, String(item));
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
url.searchParams.set(k, String(v));
|
|
14
|
-
}
|
|
10
|
+
query[Array.isArray(v) ? `${k}[]` : k] = v;
|
|
15
11
|
}
|
|
16
12
|
}
|
|
17
|
-
|
|
13
|
+
return credentialJson(ctx, airtableCredential, "airtable", {
|
|
14
|
+
target: "api",
|
|
15
|
+
path,
|
|
18
16
|
method,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
method !== "DELETE") {
|
|
28
|
-
opts.body = JSON.stringify(body);
|
|
29
|
-
}
|
|
30
|
-
const res = await fetch(url.toString(), opts);
|
|
31
|
-
if (!res.ok) {
|
|
32
|
-
const text = await res.text();
|
|
33
|
-
throw new Error(`Airtable API error ${res.status}: ${text}`);
|
|
34
|
-
}
|
|
35
|
-
if (res.status === 204)
|
|
36
|
-
return { success: true };
|
|
37
|
-
return res.json();
|
|
17
|
+
query,
|
|
18
|
+
...(body &&
|
|
19
|
+
Object.keys(body).length > 0 &&
|
|
20
|
+
method !== "GET" &&
|
|
21
|
+
method !== "DELETE"
|
|
22
|
+
? { json: body }
|
|
23
|
+
: {}),
|
|
24
|
+
});
|
|
38
25
|
}
|
|
39
|
-
async function paginateRecords(
|
|
26
|
+
async function paginateRecords(ctx, endpoint, qs, limit) {
|
|
40
27
|
const results = [];
|
|
41
28
|
const _qs = { pageSize: 100, ...qs };
|
|
42
29
|
let offset;
|
|
43
30
|
while (true) {
|
|
44
31
|
if (offset)
|
|
45
32
|
_qs.offset = offset;
|
|
46
|
-
const data = (await apiRequest(
|
|
33
|
+
const data = (await apiRequest(ctx, "GET", endpoint, undefined, _qs));
|
|
47
34
|
results.push(...data.records);
|
|
48
35
|
if (limit && results.length >= limit)
|
|
49
36
|
return results.slice(0, limit);
|
|
@@ -54,23 +41,21 @@ async function paginateRecords(token, endpoint, qs, limit) {
|
|
|
54
41
|
return results;
|
|
55
42
|
}
|
|
56
43
|
/** Airtable limits batch writes to 10 records at a time */
|
|
57
|
-
async function batchWrite(
|
|
44
|
+
async function batchWrite(ctx, method, endpoint, records, extraBody) {
|
|
58
45
|
const results = [];
|
|
59
46
|
const batchSize = 10;
|
|
60
47
|
for (let i = 0; i < records.length; i += batchSize) {
|
|
61
48
|
const batch = records.slice(i, i + batchSize);
|
|
62
49
|
const body = { ...extraBody, records: batch };
|
|
63
|
-
const data = (await apiRequest(
|
|
50
|
+
const data = (await apiRequest(ctx, method, endpoint, body));
|
|
64
51
|
results.push(...data.records);
|
|
65
52
|
}
|
|
66
53
|
return results;
|
|
67
54
|
}
|
|
68
|
-
function getToken(ctx) {
|
|
69
|
-
return ctx.connection.config.token;
|
|
70
|
-
}
|
|
71
55
|
export default function airtable(rl) {
|
|
72
56
|
rl.setName("airtable");
|
|
73
57
|
rl.setVersion("0.1.0");
|
|
58
|
+
rl.setCredential(airtableCredential);
|
|
74
59
|
rl.setConnectionSchema({
|
|
75
60
|
token: {
|
|
76
61
|
type: "string",
|
|
@@ -92,14 +77,13 @@ export default function airtable(rl) {
|
|
|
92
77
|
},
|
|
93
78
|
async execute(input, ctx) {
|
|
94
79
|
const { limit } = input ?? {};
|
|
95
|
-
const token = getToken(ctx);
|
|
96
80
|
const results = [];
|
|
97
81
|
let offset;
|
|
98
82
|
while (true) {
|
|
99
83
|
const qs = {};
|
|
100
84
|
if (offset)
|
|
101
85
|
qs.offset = offset;
|
|
102
|
-
const data = (await apiRequest(
|
|
86
|
+
const data = (await apiRequest(ctx, "GET", "meta/bases", undefined, qs));
|
|
103
87
|
results.push(...data.bases);
|
|
104
88
|
if (limit && results.length >= limit)
|
|
105
89
|
return results.slice(0, limit);
|
|
@@ -122,7 +106,7 @@ export default function airtable(rl) {
|
|
|
122
106
|
},
|
|
123
107
|
async execute(input, ctx) {
|
|
124
108
|
const { baseId } = input;
|
|
125
|
-
return apiRequest(
|
|
109
|
+
return apiRequest(ctx, "GET", `meta/bases/${pathSegment(baseId)}/tables`);
|
|
126
110
|
},
|
|
127
111
|
});
|
|
128
112
|
// ── Record ──────────────────────────────────────────
|
|
@@ -152,7 +136,7 @@ export default function airtable(rl) {
|
|
|
152
136
|
const body = { fields };
|
|
153
137
|
if (typecast)
|
|
154
138
|
body.typecast = true;
|
|
155
|
-
return apiRequest(
|
|
139
|
+
return apiRequest(ctx, "POST", `${pathSegment(baseId)}/${pathSegment(tableId)}`, body);
|
|
156
140
|
},
|
|
157
141
|
});
|
|
158
142
|
rl.registerAction("record.createMany", {
|
|
@@ -181,7 +165,7 @@ export default function airtable(rl) {
|
|
|
181
165
|
const extra = {};
|
|
182
166
|
if (typecast)
|
|
183
167
|
extra.typecast = true;
|
|
184
|
-
return batchWrite(
|
|
168
|
+
return batchWrite(ctx, "POST", `${pathSegment(baseId)}/${pathSegment(tableId)}`, records, extra);
|
|
185
169
|
},
|
|
186
170
|
});
|
|
187
171
|
rl.registerAction("record.get", {
|
|
@@ -202,7 +186,7 @@ export default function airtable(rl) {
|
|
|
202
186
|
},
|
|
203
187
|
async execute(input, ctx) {
|
|
204
188
|
const { baseId, tableId, recordId } = input;
|
|
205
|
-
return apiRequest(
|
|
189
|
+
return apiRequest(ctx, "GET", `${pathSegment(baseId)}/${pathSegment(tableId)}/${pathSegment(recordId)}`);
|
|
206
190
|
},
|
|
207
191
|
});
|
|
208
192
|
rl.registerAction("record.search", {
|
|
@@ -244,13 +228,16 @@ export default function airtable(rl) {
|
|
|
244
228
|
qs.filterByFormula = filterByFormula;
|
|
245
229
|
if (fields)
|
|
246
230
|
qs.fields = fields;
|
|
247
|
-
|
|
248
|
-
|
|
231
|
+
// Airtable's indexed form: sort[0][field]=Due&sort[0][direction]=asc.
|
|
232
|
+
for (const [i, s] of (sort ?? []).entries()) {
|
|
233
|
+
qs[`sort[${i}][field]`] = s.field;
|
|
234
|
+
qs[`sort[${i}][direction]`] = s.direction;
|
|
235
|
+
}
|
|
249
236
|
if (view)
|
|
250
237
|
qs.view = view;
|
|
251
238
|
if (limit && !filterByFormula)
|
|
252
239
|
qs.maxRecords = limit;
|
|
253
|
-
return paginateRecords(
|
|
240
|
+
return paginateRecords(ctx, `${pathSegment(baseId)}/${pathSegment(tableId)}`, qs, limit);
|
|
254
241
|
},
|
|
255
242
|
});
|
|
256
243
|
rl.registerAction("record.update", {
|
|
@@ -280,7 +267,7 @@ export default function airtable(rl) {
|
|
|
280
267
|
const body = { fields };
|
|
281
268
|
if (typecast)
|
|
282
269
|
body.typecast = true;
|
|
283
|
-
return apiRequest(
|
|
270
|
+
return apiRequest(ctx, "PATCH", `${pathSegment(baseId)}/${pathSegment(tableId)}/${pathSegment(recordId)}`, body);
|
|
284
271
|
},
|
|
285
272
|
});
|
|
286
273
|
rl.registerAction("record.updateMany", {
|
|
@@ -309,7 +296,7 @@ export default function airtable(rl) {
|
|
|
309
296
|
const extra = {};
|
|
310
297
|
if (typecast)
|
|
311
298
|
extra.typecast = true;
|
|
312
|
-
return batchWrite(
|
|
299
|
+
return batchWrite(ctx, "PATCH", `${pathSegment(baseId)}/${pathSegment(tableId)}`, records, extra);
|
|
313
300
|
},
|
|
314
301
|
});
|
|
315
302
|
rl.registerAction("record.upsert", {
|
|
@@ -342,7 +329,7 @@ export default function airtable(rl) {
|
|
|
342
329
|
};
|
|
343
330
|
if (typecast)
|
|
344
331
|
body.typecast = true;
|
|
345
|
-
return apiRequest(
|
|
332
|
+
return apiRequest(ctx, "PATCH", `${pathSegment(baseId)}/${pathSegment(tableId)}`, body);
|
|
346
333
|
},
|
|
347
334
|
});
|
|
348
335
|
rl.registerAction("record.delete", {
|
|
@@ -359,7 +346,7 @@ export default function airtable(rl) {
|
|
|
359
346
|
},
|
|
360
347
|
async execute(input, ctx) {
|
|
361
348
|
const { baseId, tableId, recordId } = input;
|
|
362
|
-
return apiRequest(
|
|
349
|
+
return apiRequest(ctx, "DELETE", `${pathSegment(baseId)}/${pathSegment(tableId)}/${pathSegment(recordId)}`);
|
|
363
350
|
},
|
|
364
351
|
});
|
|
365
352
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
/**
|
|
3
|
+
* An API key, sent as a bearer to Airtop's two path prefixes on one
|
|
4
|
+
* origin: the v1 API, and the hooks base that agent webhooks invoke.
|
|
5
|
+
*/
|
|
6
|
+
export const airtopCredential = staticCredential({
|
|
7
|
+
id: "airtop",
|
|
8
|
+
auth: { kind: "bearer" },
|
|
9
|
+
local: { secret: "apiKey" },
|
|
10
|
+
targets: {
|
|
11
|
+
api: {
|
|
12
|
+
baseUrl: "https://api.airtop.ai/api/v1/",
|
|
13
|
+
methods: ["GET", "POST", "PUT", "DELETE"],
|
|
14
|
+
},
|
|
15
|
+
hooks: {
|
|
16
|
+
baseUrl: "https://api.airtop.ai/api/hooks/",
|
|
17
|
+
methods: ["POST"],
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
});
|