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,36 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const opts = {
|
|
1
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
2
|
+
import { adaloCredential } from "./credentials.js";
|
|
3
|
+
/** A path beneath the connection's app, signed through the credential. */
|
|
4
|
+
function apiRequest(ctx, method, path, body, query) {
|
|
5
|
+
const appId = pathSegment(ctx.connection.config.appId);
|
|
6
|
+
return credentialJson(ctx, adaloCredential, "adalo", {
|
|
7
|
+
target: "api",
|
|
8
|
+
path: `${appId}/${path}`,
|
|
10
9
|
method,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
if (body && Object.keys(body).length > 0) {
|
|
17
|
-
opts.body = JSON.stringify(body);
|
|
18
|
-
}
|
|
19
|
-
const res = await fetch(url.toString(), opts);
|
|
20
|
-
if (!res.ok) {
|
|
21
|
-
const text = await res.text();
|
|
22
|
-
throw new Error(`Adalo API error ${res.status}: ${text}`);
|
|
23
|
-
}
|
|
24
|
-
if (res.status === 204)
|
|
25
|
-
return { success: true };
|
|
26
|
-
return res.json();
|
|
10
|
+
query,
|
|
11
|
+
...(body && Object.keys(body).length > 0 ? { json: body } : {}),
|
|
12
|
+
});
|
|
27
13
|
}
|
|
28
|
-
async function paginate(
|
|
14
|
+
async function paginate(ctx, collectionId, limit) {
|
|
29
15
|
const results = [];
|
|
30
16
|
let offset = 0;
|
|
31
17
|
const pageSize = 100;
|
|
32
18
|
while (true) {
|
|
33
|
-
const data = (await apiRequest(
|
|
19
|
+
const data = (await apiRequest(ctx, "GET", `collections/${pathSegment(collectionId)}`, undefined, {
|
|
34
20
|
limit: pageSize,
|
|
35
21
|
offset,
|
|
36
22
|
}));
|
|
@@ -44,15 +30,10 @@ async function paginate(appId, apiKey, collectionId, limit) {
|
|
|
44
30
|
}
|
|
45
31
|
return results;
|
|
46
32
|
}
|
|
47
|
-
function getConn(ctx) {
|
|
48
|
-
return {
|
|
49
|
-
appId: ctx.connection.config.appId,
|
|
50
|
-
apiKey: ctx.connection.config.apiKey,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
33
|
export default function adalo(rl) {
|
|
54
34
|
rl.setName("adalo");
|
|
55
35
|
rl.setVersion("0.1.0");
|
|
36
|
+
rl.setCredential(adaloCredential);
|
|
56
37
|
rl.setConnectionSchema({
|
|
57
38
|
appId: {
|
|
58
39
|
type: "string",
|
|
@@ -84,8 +65,7 @@ export default function adalo(rl) {
|
|
|
84
65
|
},
|
|
85
66
|
async execute(input, ctx) {
|
|
86
67
|
const { collectionId, fields } = input;
|
|
87
|
-
|
|
88
|
-
return apiRequest(appId, apiKey, "POST", `/collections/${collectionId}`, fields);
|
|
68
|
+
return apiRequest(ctx, "POST", `collections/${pathSegment(collectionId)}`, fields);
|
|
89
69
|
},
|
|
90
70
|
});
|
|
91
71
|
rl.registerAction("collection.get", {
|
|
@@ -101,8 +81,7 @@ export default function adalo(rl) {
|
|
|
101
81
|
},
|
|
102
82
|
async execute(input, ctx) {
|
|
103
83
|
const { collectionId, rowId } = input;
|
|
104
|
-
|
|
105
|
-
return apiRequest(appId, apiKey, "GET", `/collections/${collectionId}/${rowId}`);
|
|
84
|
+
return apiRequest(ctx, "GET", `collections/${pathSegment(collectionId)}/${pathSegment(rowId)}`);
|
|
106
85
|
},
|
|
107
86
|
});
|
|
108
87
|
rl.registerAction("collection.list", {
|
|
@@ -122,8 +101,7 @@ export default function adalo(rl) {
|
|
|
122
101
|
},
|
|
123
102
|
async execute(input, ctx) {
|
|
124
103
|
const { collectionId, limit } = input;
|
|
125
|
-
|
|
126
|
-
return paginate(appId, apiKey, collectionId, limit);
|
|
104
|
+
return paginate(ctx, collectionId, limit);
|
|
127
105
|
},
|
|
128
106
|
});
|
|
129
107
|
rl.registerAction("collection.update", {
|
|
@@ -144,8 +122,7 @@ export default function adalo(rl) {
|
|
|
144
122
|
},
|
|
145
123
|
async execute(input, ctx) {
|
|
146
124
|
const { collectionId, rowId, fields } = input;
|
|
147
|
-
|
|
148
|
-
return apiRequest(appId, apiKey, "PUT", `/collections/${collectionId}/${rowId}`, fields);
|
|
125
|
+
return apiRequest(ctx, "PUT", `collections/${pathSegment(collectionId)}/${pathSegment(rowId)}`, fields);
|
|
149
126
|
},
|
|
150
127
|
});
|
|
151
128
|
rl.registerAction("collection.delete", {
|
|
@@ -161,8 +138,7 @@ export default function adalo(rl) {
|
|
|
161
138
|
},
|
|
162
139
|
async execute(input, ctx) {
|
|
163
140
|
const { collectionId, rowId } = input;
|
|
164
|
-
|
|
165
|
-
return apiRequest(appId, apiKey, "DELETE", `/collections/${collectionId}/${rowId}`);
|
|
141
|
+
return apiRequest(ctx, "DELETE", `collections/${pathSegment(collectionId)}/${pathSegment(rowId)}`);
|
|
166
142
|
},
|
|
167
143
|
});
|
|
168
144
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
/** An API key as the Basic password, with an empty username, to Affinity's one origin. */
|
|
3
|
+
export const affinityCredential = staticCredential({
|
|
4
|
+
id: "affinity",
|
|
5
|
+
auth: { kind: "basic" },
|
|
6
|
+
local: { username: { value: "" }, password: "apiKey" },
|
|
7
|
+
targets: {
|
|
8
|
+
api: {
|
|
9
|
+
baseUrl: "https://api.affinity.co/",
|
|
10
|
+
methods: ["GET", "POST", "PUT", "DELETE"],
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
probe: {
|
|
14
|
+
target: "api",
|
|
15
|
+
path: "auth/whoami",
|
|
16
|
+
method: "GET",
|
|
17
|
+
acceptedStatuses: [200],
|
|
18
|
+
},
|
|
19
|
+
});
|
|
@@ -1,39 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
url.searchParams.set(k, String(v));
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
const opts = {
|
|
1
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
2
|
+
import { affinityCredential } from "./credentials.js";
|
|
3
|
+
function apiRequest(ctx, method, path, body, qs) {
|
|
4
|
+
return credentialJson(ctx, affinityCredential, "affinity", {
|
|
5
|
+
target: "api",
|
|
6
|
+
path,
|
|
11
7
|
method,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
if (body && Object.keys(body).length > 0) {
|
|
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(`Affinity API error ${res.status}: ${text}`);
|
|
24
|
-
}
|
|
25
|
-
if (res.status === 204)
|
|
26
|
-
return { success: true };
|
|
27
|
-
return res.json();
|
|
8
|
+
query: qs,
|
|
9
|
+
...(body && Object.keys(body).length > 0 ? { json: body } : {}),
|
|
10
|
+
});
|
|
28
11
|
}
|
|
29
|
-
async function paginateAll(
|
|
12
|
+
async function paginateAll(ctx, path, dataKey, limit, extraQuery) {
|
|
30
13
|
const results = [];
|
|
31
14
|
let pageToken;
|
|
32
15
|
while (true) {
|
|
33
|
-
const qs = { page_size: 500 };
|
|
16
|
+
const qs = { ...extraQuery, page_size: 500 };
|
|
34
17
|
if (pageToken)
|
|
35
18
|
qs.page_token = pageToken;
|
|
36
|
-
const data = (await apiRequest(
|
|
19
|
+
const data = (await apiRequest(ctx, "GET", path, undefined, qs));
|
|
37
20
|
const items = data[dataKey] ?? [];
|
|
38
21
|
results.push(...items);
|
|
39
22
|
if (limit && results.length >= limit)
|
|
@@ -44,12 +27,10 @@ async function paginateAll(apiKey, path, dataKey, limit) {
|
|
|
44
27
|
}
|
|
45
28
|
return results;
|
|
46
29
|
}
|
|
47
|
-
function getKey(ctx) {
|
|
48
|
-
return ctx.connection.config.apiKey;
|
|
49
|
-
}
|
|
50
30
|
export default function affinity(rl) {
|
|
51
31
|
rl.setName("affinity");
|
|
52
32
|
rl.setVersion("0.1.0");
|
|
33
|
+
rl.setCredential(affinityCredential);
|
|
53
34
|
rl.setConnectionSchema({
|
|
54
35
|
apiKey: {
|
|
55
36
|
type: "string",
|
|
@@ -67,7 +48,7 @@ export default function affinity(rl) {
|
|
|
67
48
|
},
|
|
68
49
|
async execute(input, ctx) {
|
|
69
50
|
const { listId } = input;
|
|
70
|
-
return apiRequest(
|
|
51
|
+
return apiRequest(ctx, "GET", `lists/${pathSegment(listId)}`);
|
|
71
52
|
},
|
|
72
53
|
});
|
|
73
54
|
rl.registerAction("list.list", {
|
|
@@ -82,7 +63,7 @@ export default function affinity(rl) {
|
|
|
82
63
|
},
|
|
83
64
|
async execute(input, ctx) {
|
|
84
65
|
const { limit } = input ?? {};
|
|
85
|
-
const data = (await apiRequest(
|
|
66
|
+
const data = (await apiRequest(ctx, "GET", "lists"));
|
|
86
67
|
if (limit)
|
|
87
68
|
return data.slice(0, limit);
|
|
88
69
|
return data;
|
|
@@ -102,7 +83,7 @@ export default function affinity(rl) {
|
|
|
102
83
|
},
|
|
103
84
|
async execute(input, ctx) {
|
|
104
85
|
const { listId, entityId, ...rest } = input;
|
|
105
|
-
return apiRequest(
|
|
86
|
+
return apiRequest(ctx, "POST", `lists/${pathSegment(listId)}/list-entries`, {
|
|
106
87
|
entity_id: entityId,
|
|
107
88
|
...rest,
|
|
108
89
|
});
|
|
@@ -121,7 +102,7 @@ export default function affinity(rl) {
|
|
|
121
102
|
},
|
|
122
103
|
async execute(input, ctx) {
|
|
123
104
|
const { listId, listEntryId } = input;
|
|
124
|
-
return apiRequest(
|
|
105
|
+
return apiRequest(ctx, "GET", `lists/${pathSegment(listId)}/list-entries/${pathSegment(listEntryId)}`);
|
|
125
106
|
},
|
|
126
107
|
});
|
|
127
108
|
rl.registerAction("listEntry.list", {
|
|
@@ -137,7 +118,7 @@ export default function affinity(rl) {
|
|
|
137
118
|
},
|
|
138
119
|
async execute(input, ctx) {
|
|
139
120
|
const { listId, limit } = input;
|
|
140
|
-
return paginateAll(
|
|
121
|
+
return paginateAll(ctx, `lists/${pathSegment(listId)}/list-entries`, "list_entries", limit);
|
|
141
122
|
},
|
|
142
123
|
});
|
|
143
124
|
rl.registerAction("listEntry.delete", {
|
|
@@ -153,7 +134,7 @@ export default function affinity(rl) {
|
|
|
153
134
|
},
|
|
154
135
|
async execute(input, ctx) {
|
|
155
136
|
const { listId, listEntryId } = input;
|
|
156
|
-
return apiRequest(
|
|
137
|
+
return apiRequest(ctx, "DELETE", `lists/${pathSegment(listId)}/list-entries/${pathSegment(listEntryId)}`);
|
|
157
138
|
},
|
|
158
139
|
});
|
|
159
140
|
// ── Person ──────────────────────────────────────────
|
|
@@ -183,7 +164,7 @@ export default function affinity(rl) {
|
|
|
183
164
|
};
|
|
184
165
|
if (organizationIds)
|
|
185
166
|
body.organization_ids = organizationIds;
|
|
186
|
-
return apiRequest(
|
|
167
|
+
return apiRequest(ctx, "POST", "persons", body);
|
|
187
168
|
},
|
|
188
169
|
});
|
|
189
170
|
rl.registerAction("person.get", {
|
|
@@ -194,7 +175,7 @@ export default function affinity(rl) {
|
|
|
194
175
|
},
|
|
195
176
|
async execute(input, ctx) {
|
|
196
177
|
const { personId } = input;
|
|
197
|
-
return apiRequest(
|
|
178
|
+
return apiRequest(ctx, "GET", `persons/${pathSegment(personId)}`);
|
|
198
179
|
},
|
|
199
180
|
});
|
|
200
181
|
rl.registerAction("person.list", {
|
|
@@ -210,10 +191,7 @@ export default function affinity(rl) {
|
|
|
210
191
|
},
|
|
211
192
|
async execute(input, ctx) {
|
|
212
193
|
const { term, limit } = input ?? {};
|
|
213
|
-
|
|
214
|
-
if (term)
|
|
215
|
-
qs.term = term;
|
|
216
|
-
return paginateAll(getKey(ctx), "/persons", "persons", limit);
|
|
194
|
+
return paginateAll(ctx, "persons", "persons", limit, term ? { term } : undefined);
|
|
217
195
|
},
|
|
218
196
|
});
|
|
219
197
|
rl.registerAction("person.update", {
|
|
@@ -243,7 +221,7 @@ export default function affinity(rl) {
|
|
|
243
221
|
body.last_name = lastName;
|
|
244
222
|
if (organizationIds)
|
|
245
223
|
body.organization_ids = organizationIds;
|
|
246
|
-
return apiRequest(
|
|
224
|
+
return apiRequest(ctx, "PUT", `persons/${pathSegment(personId)}`, body);
|
|
247
225
|
},
|
|
248
226
|
});
|
|
249
227
|
rl.registerAction("person.delete", {
|
|
@@ -254,7 +232,7 @@ export default function affinity(rl) {
|
|
|
254
232
|
},
|
|
255
233
|
async execute(input, ctx) {
|
|
256
234
|
const { personId } = input;
|
|
257
|
-
return apiRequest(
|
|
235
|
+
return apiRequest(ctx, "DELETE", `persons/${pathSegment(personId)}`);
|
|
258
236
|
},
|
|
259
237
|
});
|
|
260
238
|
// ── Organization ────────────────────────────────────
|
|
@@ -283,7 +261,7 @@ export default function affinity(rl) {
|
|
|
283
261
|
const body = { name, domain };
|
|
284
262
|
if (personIds)
|
|
285
263
|
body.person_ids = personIds;
|
|
286
|
-
return apiRequest(
|
|
264
|
+
return apiRequest(ctx, "POST", "organizations", body);
|
|
287
265
|
},
|
|
288
266
|
});
|
|
289
267
|
rl.registerAction("organization.get", {
|
|
@@ -298,7 +276,7 @@ export default function affinity(rl) {
|
|
|
298
276
|
},
|
|
299
277
|
async execute(input, ctx) {
|
|
300
278
|
const { organizationId } = input;
|
|
301
|
-
return apiRequest(
|
|
279
|
+
return apiRequest(ctx, "GET", `organizations/${pathSegment(organizationId)}`);
|
|
302
280
|
},
|
|
303
281
|
});
|
|
304
282
|
rl.registerAction("organization.list", {
|
|
@@ -314,10 +292,7 @@ export default function affinity(rl) {
|
|
|
314
292
|
},
|
|
315
293
|
async execute(input, ctx) {
|
|
316
294
|
const { term, limit } = input ?? {};
|
|
317
|
-
|
|
318
|
-
if (term)
|
|
319
|
-
qs.term = term;
|
|
320
|
-
return paginateAll(getKey(ctx), "/organizations", "organizations", limit);
|
|
295
|
+
return paginateAll(ctx, "organizations", "organizations", limit, term ? { term } : undefined);
|
|
321
296
|
},
|
|
322
297
|
});
|
|
323
298
|
rl.registerAction("organization.update", {
|
|
@@ -354,7 +329,7 @@ export default function affinity(rl) {
|
|
|
354
329
|
body.domain = domain;
|
|
355
330
|
if (personIds)
|
|
356
331
|
body.person_ids = personIds;
|
|
357
|
-
return apiRequest(
|
|
332
|
+
return apiRequest(ctx, "PUT", `organizations/${pathSegment(organizationId)}`, body);
|
|
358
333
|
},
|
|
359
334
|
});
|
|
360
335
|
rl.registerAction("organization.delete", {
|
|
@@ -369,7 +344,7 @@ export default function affinity(rl) {
|
|
|
369
344
|
},
|
|
370
345
|
async execute(input, ctx) {
|
|
371
346
|
const { organizationId } = input;
|
|
372
|
-
return apiRequest(
|
|
347
|
+
return apiRequest(ctx, "DELETE", `organizations/${pathSegment(organizationId)}`);
|
|
373
348
|
},
|
|
374
349
|
});
|
|
375
350
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { configChoice, staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
const REGIONS = ["us", "eu"];
|
|
3
|
+
const ORIGINS = {
|
|
4
|
+
us: "https://api.agentmail.to/v0/",
|
|
5
|
+
eu: "https://api.agentmail.eu/v0/",
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* An AgentMail API key, sent as a bearer to the region's one API origin.
|
|
9
|
+
* Sends get their own `send` target: AgentMail deduplicates sends (and only
|
|
10
|
+
* sends) by `Idempotency-Key`, so that is where the contract is declared and
|
|
11
|
+
* the transport sets the header. Inbox and draft creation deduplicate by the
|
|
12
|
+
* body's `client_id` instead and stay on `api`.
|
|
13
|
+
*/
|
|
14
|
+
export const agentMailCredential = staticCredential({
|
|
15
|
+
id: "agentMail",
|
|
16
|
+
auth: { kind: "bearer" },
|
|
17
|
+
local: { secret: "apiKey" },
|
|
18
|
+
targets: (config) => {
|
|
19
|
+
const baseUrl = ORIGINS[configChoice(config.region, REGIONS, "us")];
|
|
20
|
+
return {
|
|
21
|
+
api: { baseUrl, methods: ["GET", "POST", "PATCH", "DELETE"] },
|
|
22
|
+
send: {
|
|
23
|
+
baseUrl,
|
|
24
|
+
methods: ["POST"],
|
|
25
|
+
idempotency: { header: "Idempotency-Key", methods: ["POST"] },
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
probe: {
|
|
30
|
+
target: "api",
|
|
31
|
+
path: "auth/me",
|
|
32
|
+
method: "GET",
|
|
33
|
+
acceptedStatuses: [200],
|
|
34
|
+
},
|
|
35
|
+
});
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import * as t from "typebox";
|
|
2
|
+
import { atLeastOne, attachments, clientId, contentFields, draftFields, id, idList, inboxFields, labelFields, listFields, STRICT, sendFields, strings, timestamp, } from "./schemas.js";
|
|
3
|
+
import { attachmentPath, draftPath, inboxPath, request, sendMessage, } from "./shared.js";
|
|
4
|
+
const list = t.Object({ ...inboxFields, ...listFields }, STRICT);
|
|
5
|
+
const draft = t.Object(draftFields, STRICT);
|
|
6
|
+
const attachment = t.Object({ ...draftFields, attachmentId: id }, STRICT);
|
|
7
|
+
const create = t.Object({
|
|
8
|
+
...inboxFields,
|
|
9
|
+
...contentFields,
|
|
10
|
+
to: t.Optional(strings),
|
|
11
|
+
cc: t.Optional(strings),
|
|
12
|
+
bcc: t.Optional(strings),
|
|
13
|
+
replyTo: t.Optional(strings),
|
|
14
|
+
subject: t.Optional(t.String()),
|
|
15
|
+
labels: t.Optional(strings),
|
|
16
|
+
inReplyTo: t.Optional(id),
|
|
17
|
+
forwardOf: t.Optional(id),
|
|
18
|
+
replyAll: t.Optional(t.Boolean()),
|
|
19
|
+
sendAt: t.Optional(timestamp),
|
|
20
|
+
clientId: t.Optional(clientId),
|
|
21
|
+
}, {
|
|
22
|
+
...STRICT,
|
|
23
|
+
allOf: [
|
|
24
|
+
// A draft replies or forwards, never both.
|
|
25
|
+
{ not: { required: ["inReplyTo", "forwardOf"] } },
|
|
26
|
+
// replyAll: true derives every recipient from the message it replies to.
|
|
27
|
+
{
|
|
28
|
+
anyOf: [
|
|
29
|
+
{
|
|
30
|
+
not: {
|
|
31
|
+
required: ["replyAll"],
|
|
32
|
+
properties: { replyAll: { const: true } },
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
required: ["inReplyTo"],
|
|
37
|
+
not: {
|
|
38
|
+
anyOf: [
|
|
39
|
+
{ required: ["to"] },
|
|
40
|
+
{ required: ["cc"] },
|
|
41
|
+
{ required: ["bcc"] },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
});
|
|
49
|
+
const nullable = (schema) => t.Optional(t.Union([schema, t.Null()]));
|
|
50
|
+
const changes = {
|
|
51
|
+
...labelFields,
|
|
52
|
+
to: nullable(strings),
|
|
53
|
+
cc: nullable(strings),
|
|
54
|
+
bcc: nullable(strings),
|
|
55
|
+
replyTo: nullable(strings),
|
|
56
|
+
subject: nullable(t.String()),
|
|
57
|
+
text: nullable(t.String()),
|
|
58
|
+
html: nullable(t.String()),
|
|
59
|
+
sendAt: nullable(timestamp),
|
|
60
|
+
addAttachments: t.Optional(attachments),
|
|
61
|
+
removeAttachments: t.Optional(idList),
|
|
62
|
+
};
|
|
63
|
+
const update = t.Object({ ...draftFields, ...changes }, { ...STRICT, ...atLeastOne(changes) });
|
|
64
|
+
const send = t.Object({ ...draftFields, ...labelFields, ...sendFields }, STRICT);
|
|
65
|
+
export function registerDraftActions(rl) {
|
|
66
|
+
rl.registerAction("draft.list", {
|
|
67
|
+
access: "read",
|
|
68
|
+
description: "List one page of inbox drafts, preserving next_page_token. Includes optional label and timestamp filters.",
|
|
69
|
+
inputSchema: list,
|
|
70
|
+
execute: (input, ctx) => {
|
|
71
|
+
const { inboxId, ...query } = input;
|
|
72
|
+
return request(ctx, `${inboxPath(inboxId)}/drafts`, { query });
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
rl.registerAction("draft.get", {
|
|
76
|
+
access: "read",
|
|
77
|
+
description: "Get a draft for review before sending.",
|
|
78
|
+
inputSchema: draft,
|
|
79
|
+
execute: (input, ctx) => {
|
|
80
|
+
const p = input;
|
|
81
|
+
return request(ctx, draftPath(p.inboxId, p.draftId));
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
rl.registerAction("draft.create", {
|
|
85
|
+
access: "write",
|
|
86
|
+
description: "Create a draft for review, or schedule automatic delivery with sendAt. Empty drafts are valid. inReplyTo and forwardOf are mutually exclusive; replyAll requires inReplyTo and no recipient overrides. Use clientId for retry-safe creation.",
|
|
87
|
+
inputSchema: create,
|
|
88
|
+
execute: (input, ctx) => {
|
|
89
|
+
const { inboxId, ...body } = input;
|
|
90
|
+
return request(ctx, `${inboxPath(inboxId)}/drafts`, {
|
|
91
|
+
method: "POST",
|
|
92
|
+
body,
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
rl.registerAction("draft.update", {
|
|
97
|
+
access: "write",
|
|
98
|
+
description: "Edit a draft without changing its kind. Omitted fields stay unchanged; null or [] clears recipients. sendAt schedules/reschedules automatic delivery; null cancels scheduling. Attachments use addAttachments/removeAttachments.",
|
|
99
|
+
inputSchema: update,
|
|
100
|
+
execute: (input, ctx) => {
|
|
101
|
+
const { inboxId, draftId, ...body } = input;
|
|
102
|
+
return request(ctx, draftPath(inboxId, draftId), {
|
|
103
|
+
method: "PATCH",
|
|
104
|
+
body,
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
rl.registerAction("draft.delete", {
|
|
109
|
+
access: "write",
|
|
110
|
+
description: "Delete a draft rather than sending it.",
|
|
111
|
+
inputSchema: draft,
|
|
112
|
+
execute: (input, ctx) => {
|
|
113
|
+
const p = input;
|
|
114
|
+
return request(ctx, draftPath(p.inboxId, p.draftId), {
|
|
115
|
+
method: "DELETE",
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
rl.registerAction("draft.send", {
|
|
120
|
+
access: "write",
|
|
121
|
+
description: "Send an existing draft now. Returns message_id and thread_id. No automatic retries; supply idempotencyKey for retries of the identical send within 24 hours.",
|
|
122
|
+
inputSchema: send,
|
|
123
|
+
execute: (input, ctx) => {
|
|
124
|
+
const { inboxId, draftId, idempotencyKey, ...body } = input;
|
|
125
|
+
return sendMessage(ctx, `${draftPath(inboxId, draftId)}/send`, body, idempotencyKey);
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
rl.registerAction("draft.attachment", {
|
|
129
|
+
access: "read",
|
|
130
|
+
description: "Get draft attachment metadata and a temporary download_url (plus text_url when text was extracted), without fetching them. Treat the URLs as private.",
|
|
131
|
+
inputSchema: attachment,
|
|
132
|
+
execute: (input, ctx) => {
|
|
133
|
+
const p = input;
|
|
134
|
+
return request(ctx, attachmentPath(draftPath(p.inboxId, p.draftId), p.attachmentId));
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import * as t from "typebox";
|
|
2
|
+
import { atLeastOne, clientId, id, inboxFields, pageFields, STRICT, } from "./schemas.js";
|
|
3
|
+
import { inboxPath, request } from "./shared.js";
|
|
4
|
+
const metadataValue = t.Union([
|
|
5
|
+
t.String({ maxLength: 256 }),
|
|
6
|
+
t.Number(),
|
|
7
|
+
t.Boolean(),
|
|
8
|
+
]);
|
|
9
|
+
const metadataKey = t.String({ maxLength: 256 });
|
|
10
|
+
const metadataOptions = { maxProperties: 256, propertyNames: metadataKey };
|
|
11
|
+
const status = t.Union([t.Literal("active"), t.Literal("paused")], {
|
|
12
|
+
description: "paused stops sending and receiving: sends fail with 403 inbox_paused and incoming mail is neither delivered nor bounced, then or on resume. Stored mail, drafts and API keys are kept; set active to resume.",
|
|
13
|
+
});
|
|
14
|
+
const list = t.Object({ ...pageFields, ascending: t.Optional(t.Boolean()) }, STRICT);
|
|
15
|
+
const search = t.Object({
|
|
16
|
+
...pageFields,
|
|
17
|
+
query: t.String({
|
|
18
|
+
...id,
|
|
19
|
+
description: "Words matching the start of words in the address or display name (sup matches support@…, port does not). An exact address ranks first.",
|
|
20
|
+
}),
|
|
21
|
+
}, STRICT);
|
|
22
|
+
const inbox = t.Object(inboxFields, STRICT);
|
|
23
|
+
const create = t.Object({
|
|
24
|
+
username: t.Optional(id),
|
|
25
|
+
domain: t.Optional(t.String({
|
|
26
|
+
...id,
|
|
27
|
+
description: "Verified custom domain; defaults to agentmail.to.",
|
|
28
|
+
})),
|
|
29
|
+
displayName: t.Optional(t.String()),
|
|
30
|
+
status: t.Optional(status),
|
|
31
|
+
clientId: t.Optional(clientId),
|
|
32
|
+
metadata: t.Optional(t.Record(t.String(), metadataValue, metadataOptions)),
|
|
33
|
+
}, STRICT);
|
|
34
|
+
const changes = {
|
|
35
|
+
displayName: t.Optional(t.String()),
|
|
36
|
+
status: t.Optional(status),
|
|
37
|
+
metadata: t.Optional(t.Union([
|
|
38
|
+
t.Record(t.String(), t.Union([metadataValue, t.Null()]), {
|
|
39
|
+
...metadataOptions,
|
|
40
|
+
minProperties: 1,
|
|
41
|
+
}),
|
|
42
|
+
t.Null(),
|
|
43
|
+
], {
|
|
44
|
+
description: "Merge keys; null values delete keys, metadata: null clears all. Omitted keys stay unchanged.",
|
|
45
|
+
})),
|
|
46
|
+
};
|
|
47
|
+
const update = t.Object({ ...inboxFields, ...changes }, { ...STRICT, ...atLeastOne(changes) });
|
|
48
|
+
export function registerInboxActions(rl) {
|
|
49
|
+
rl.registerAction("inbox.list", {
|
|
50
|
+
access: "read",
|
|
51
|
+
description: "List one page of inboxes. Preserves next_page_token; pass it as pageToken for the next page.",
|
|
52
|
+
inputSchema: list,
|
|
53
|
+
execute: (input, ctx) => request(ctx, "inboxes", { query: input }),
|
|
54
|
+
});
|
|
55
|
+
rl.registerAction("inbox.search", {
|
|
56
|
+
access: "read",
|
|
57
|
+
description: "Search inboxes by address or display name, ranked by relevance. A page can be empty and still carry next_page_token; keep paging until it is absent.",
|
|
58
|
+
inputSchema: search,
|
|
59
|
+
execute: (input, ctx) => request(ctx, "inboxes/search", {
|
|
60
|
+
query: input,
|
|
61
|
+
}),
|
|
62
|
+
});
|
|
63
|
+
rl.registerAction("inbox.get", {
|
|
64
|
+
access: "read",
|
|
65
|
+
description: "Get an inbox: its email address, status and metadata.",
|
|
66
|
+
inputSchema: inbox,
|
|
67
|
+
execute: (input, ctx) => request(ctx, inboxPath(input.inboxId)),
|
|
68
|
+
});
|
|
69
|
+
rl.registerAction("inbox.create", {
|
|
70
|
+
access: "write",
|
|
71
|
+
description: "Create an email inbox. Omit username for a random address; use clientId to avoid duplicates when retrying.",
|
|
72
|
+
inputSchema: create,
|
|
73
|
+
execute: (input, ctx) => request(ctx, "inboxes", {
|
|
74
|
+
method: "POST",
|
|
75
|
+
body: input,
|
|
76
|
+
}),
|
|
77
|
+
});
|
|
78
|
+
rl.registerAction("inbox.update", {
|
|
79
|
+
access: "write",
|
|
80
|
+
description: "Update display name, pause or resume (status), or merge metadata. Requires at least one change; metadata supports explicit null clearing.",
|
|
81
|
+
inputSchema: update,
|
|
82
|
+
execute: (input, ctx) => {
|
|
83
|
+
const { inboxId, ...body } = input;
|
|
84
|
+
return request(ctx, inboxPath(inboxId), { method: "PATCH", body });
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
rl.registerAction("inbox.delete", {
|
|
88
|
+
access: "write",
|
|
89
|
+
description: "Delete an inbox. Destructive; confirm the inbox ID before calling. To stop mail without deleting, set status to paused with inbox.update.",
|
|
90
|
+
inputSchema: inbox,
|
|
91
|
+
execute: (input, ctx) => request(ctx, inboxPath(input.inboxId), {
|
|
92
|
+
method: "DELETE",
|
|
93
|
+
}),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as t from "typebox";
|
|
2
|
+
import { agentMailCredential } from "./credentials.js";
|
|
3
|
+
import { registerDraftActions } from "./drafts.js";
|
|
4
|
+
import { registerInboxActions } from "./inboxes.js";
|
|
5
|
+
import { registerMessageActions } from "./messages.js";
|
|
6
|
+
import { STRICT } from "./schemas.js";
|
|
7
|
+
import { request } from "./shared.js";
|
|
8
|
+
import { registerThreadActions } from "./threads.js";
|
|
9
|
+
export default function agentMail(rl) {
|
|
10
|
+
rl.setName("agentMail");
|
|
11
|
+
rl.setVersion("0.1.0");
|
|
12
|
+
rl.setCredential(agentMailCredential);
|
|
13
|
+
rl.setConnectionSchema(t.Object({
|
|
14
|
+
apiKey: t.String({
|
|
15
|
+
minLength: 1,
|
|
16
|
+
env: "AGENTMAIL_API_KEY",
|
|
17
|
+
description: "AgentMail API key with permissions for the requested inboxes and operations. https://console.agentmail.to",
|
|
18
|
+
}),
|
|
19
|
+
region: t.Optional(t.String({
|
|
20
|
+
env: "AGENTMAIL_REGION",
|
|
21
|
+
default: "us",
|
|
22
|
+
description: "us (api.agentmail.to, default) or eu (api.agentmail.eu). Any other value is refused rather than sent to the default host.",
|
|
23
|
+
})),
|
|
24
|
+
}));
|
|
25
|
+
rl.registerAction("whoami", {
|
|
26
|
+
access: "read",
|
|
27
|
+
description: "Read the authenticated AgentMail identity and API-key scope.",
|
|
28
|
+
inputSchema: t.Object({}, STRICT),
|
|
29
|
+
execute: (_input, ctx) => request(ctx, "auth/me"),
|
|
30
|
+
});
|
|
31
|
+
registerInboxActions(rl);
|
|
32
|
+
registerMessageActions(rl);
|
|
33
|
+
registerThreadActions(rl);
|
|
34
|
+
registerDraftActions(rl);
|
|
35
|
+
}
|