runline 0.32.0 → 0.34.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 +9 -0
- 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 +179 -22
- package/dist/credentials/transport.d.ts +48 -2
- package/dist/credentials/transport.js +248 -70
- package/dist/credentials/types.d.ts +167 -10
- package/dist/index.d.ts +5 -5
- package/dist/index.js +2 -2
- package/dist/plugin/api.d.ts +7 -0
- package/dist/plugin/api.js +7 -0
- package/dist/plugin/types.d.ts +12 -0
- package/dist/plugins/_shared/credentialAdapter.js +79 -15
- package/dist/plugins/_shared/credentials.js +389 -0
- package/dist/plugins/_shared/googleAuth.js +9 -40
- package/dist/plugins/_shared/googleCredentials.js +28 -7
- package/dist/plugins/_shared/microsoftAuth.js +13 -44
- package/dist/plugins/_shared/microsoftCredentials.js +30 -8
- package/dist/plugins/_shared/provider.js +2 -14
- package/dist/plugins/_shared/shiftCloud.js +22 -34
- package/dist/plugins/_shared/shiftCredentials.js +83 -0
- package/dist/plugins/_shared/shiftUpload.js +1 -1
- 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/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 +74 -35
- 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 +4 -2
- 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 +26 -24
- 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 +108 -42
- package/dist/plugins/googleCalendar/src/index.js +15 -13
- package/dist/plugins/googleContacts/src/index.js +12 -9
- package/dist/plugins/googleDocs/src/index.js +2 -0
- package/dist/plugins/googleDocs/src/shared.js +2 -1
- package/dist/plugins/googleDrive/src/index.js +50 -53
- package/dist/plugins/googleImage/src/credentials.js +14 -0
- package/dist/plugins/googleImage/src/index.js +14 -25
- package/dist/plugins/googleSheets/src/index.js +26 -27
- package/dist/plugins/googleSlides/src/index.js +6 -4
- package/dist/plugins/googleTasks/src/index.js +13 -11
- 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 +34 -63
- 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 +48 -12
- package/dist/plugins/microsoftFiles/src/index.js +90 -25
- package/dist/plugins/microsoftMail/src/index.js +62 -15
- 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 +15 -23
- 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 +38 -27
- 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 +17 -27
- 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/collections.js +201 -0
- package/dist/plugins/shiftBwm/src/index.js +35 -0
- package/dist/plugins/shiftBwm/src/records.js +180 -0
- package/dist/plugins/shiftBwm/src/shared.js +168 -0
- package/dist/plugins/shiftBwm/src/vendor/client.js +227 -0
- package/dist/plugins/shiftBwm/src/vendor/contracts.js +59 -0
- package/dist/plugins/shiftBwm/src/vendor/models.js +525 -0
- 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 +3 -3
- package/dist/plugins/shiftOcr/src/credentials.js +8 -0
- package/dist/plugins/shiftOcr/src/index.js +5 -2
- 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 +3 -2
- 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 +30 -32
- 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 +31 -30
- 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 +3 -2
- package/dist/plugins/_shared/authedFetch.js +0 -33
- package/dist/plugins/_shared/tokenRefresh.js +0 -41
|
@@ -1,43 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
url.searchParams.set(k, String(v));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
const headers = { Authorization: `Bearer ${token}` };
|
|
18
|
-
const init = { method, headers };
|
|
19
|
-
if (body && Object.keys(body).length > 0) {
|
|
20
|
-
headers["Content-Type"] = "application/x-www-form-urlencoded";
|
|
21
|
-
const params = new URLSearchParams();
|
|
22
|
-
for (const [k, v] of Object.entries(body)) {
|
|
23
|
-
if (v === undefined || v === null)
|
|
24
|
-
continue;
|
|
25
|
-
if (Array.isArray(v)) {
|
|
26
|
-
for (const item of v)
|
|
27
|
-
params.append(k, String(item));
|
|
28
|
-
}
|
|
29
|
-
else
|
|
30
|
-
params.set(k, String(v));
|
|
31
|
-
}
|
|
32
|
-
init.body = params.toString();
|
|
33
|
-
}
|
|
34
|
-
const res = await fetch(url.toString(), init);
|
|
35
|
-
if (!res.ok)
|
|
36
|
-
throw new Error(`Splunk error ${res.status}: ${await res.text()}`);
|
|
37
|
-
const text = await res.text();
|
|
38
|
-
if (!text)
|
|
39
|
-
return { success: true };
|
|
40
|
-
const json = JSON.parse(text);
|
|
1
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
2
|
+
import { splunkCredential } from "./credentials.js";
|
|
3
|
+
// The Splunk REST API takes form-urlencoded POST bodies and answers JSON
|
|
4
|
+
// because every request carries output_mode=json.
|
|
5
|
+
async function api(ctx, method, path, body, qs) {
|
|
6
|
+
const json = (await credentialJson(ctx, splunkCredential, "splunk", {
|
|
7
|
+
target: "api",
|
|
8
|
+
path,
|
|
9
|
+
method,
|
|
10
|
+
// JSON output always; callers never set output_mode themselves.
|
|
11
|
+
query: { output_mode: "json", ...qs },
|
|
12
|
+
...(body && Object.keys(body).length > 0 ? { form: body } : {}),
|
|
13
|
+
}));
|
|
41
14
|
// Format entry array if present
|
|
42
15
|
if (json.entry && Array.isArray(json.entry)) {
|
|
43
16
|
return json.entry.map((e) => {
|
|
@@ -55,6 +28,7 @@ async function api(baseUrl, token, method, endpoint, body, qs) {
|
|
|
55
28
|
export default function splunk(rl) {
|
|
56
29
|
rl.setName("splunk");
|
|
57
30
|
rl.setVersion("0.1.0");
|
|
31
|
+
rl.setCredential(splunkCredential);
|
|
58
32
|
rl.setConnectionSchema({
|
|
59
33
|
baseUrl: {
|
|
60
34
|
type: "string",
|
|
@@ -86,7 +60,6 @@ export default function splunk(rl) {
|
|
|
86
60
|
namespace: { type: "string", required: false },
|
|
87
61
|
},
|
|
88
62
|
async execute(input, ctx) {
|
|
89
|
-
const { baseUrl, authToken } = getConn(ctx);
|
|
90
63
|
const p = input;
|
|
91
64
|
const body = { search: p.search };
|
|
92
65
|
if (p.execMode)
|
|
@@ -99,11 +72,11 @@ export default function splunk(rl) {
|
|
|
99
72
|
body.max_time = p.maxTime;
|
|
100
73
|
if (p.namespace)
|
|
101
74
|
body.namespace = p.namespace;
|
|
102
|
-
// Create
|
|
103
|
-
const createRes = (await api(
|
|
75
|
+
// Create answers { sid }; the follow-up read returns the full job.
|
|
76
|
+
const createRes = (await api(ctx, "POST", "search/jobs", body));
|
|
104
77
|
const sid = createRes.sid;
|
|
105
78
|
if (sid)
|
|
106
|
-
return api(
|
|
79
|
+
return api(ctx, "GET", `search/jobs/${pathSegment(sid)}`);
|
|
107
80
|
return createRes;
|
|
108
81
|
},
|
|
109
82
|
});
|
|
@@ -112,8 +85,7 @@ export default function splunk(rl) {
|
|
|
112
85
|
description: "Get a search job by ID",
|
|
113
86
|
inputSchema: { searchJobId: { type: "string", required: true } },
|
|
114
87
|
async execute(input, ctx) {
|
|
115
|
-
|
|
116
|
-
return api(baseUrl, authToken, "GET", `/services/search/jobs/${input.searchJobId}`);
|
|
88
|
+
return api(ctx, "GET", `search/jobs/${pathSegment(input.searchJobId)}`);
|
|
117
89
|
},
|
|
118
90
|
});
|
|
119
91
|
rl.registerAction("search.list", {
|
|
@@ -125,7 +97,6 @@ export default function splunk(rl) {
|
|
|
125
97
|
sortDir: { type: "string", required: false, description: "asc or desc" },
|
|
126
98
|
},
|
|
127
99
|
async execute(input, ctx) {
|
|
128
|
-
const { baseUrl, authToken } = getConn(ctx);
|
|
129
100
|
const p = (input ?? {});
|
|
130
101
|
const qs = {};
|
|
131
102
|
if (p.limit)
|
|
@@ -136,7 +107,7 @@ export default function splunk(rl) {
|
|
|
136
107
|
qs.sort_key = p.sortKey;
|
|
137
108
|
if (p.sortDir)
|
|
138
109
|
qs.sort_dir = p.sortDir;
|
|
139
|
-
return api(
|
|
110
|
+
return api(ctx, "GET", "search/jobs", undefined, qs);
|
|
140
111
|
},
|
|
141
112
|
});
|
|
142
113
|
rl.registerAction("search.delete", {
|
|
@@ -144,8 +115,7 @@ export default function splunk(rl) {
|
|
|
144
115
|
description: "Delete a search job",
|
|
145
116
|
inputSchema: { searchJobId: { type: "string", required: true } },
|
|
146
117
|
async execute(input, ctx) {
|
|
147
|
-
|
|
148
|
-
await api(baseUrl, authToken, "DELETE", `/services/search/jobs/${input.searchJobId}`);
|
|
118
|
+
await api(ctx, "DELETE", `search/jobs/${pathSegment(input.searchJobId)}`);
|
|
149
119
|
return { success: true };
|
|
150
120
|
},
|
|
151
121
|
});
|
|
@@ -167,7 +137,6 @@ export default function splunk(rl) {
|
|
|
167
137
|
},
|
|
168
138
|
},
|
|
169
139
|
async execute(input, ctx) {
|
|
170
|
-
const { baseUrl, authToken } = getConn(ctx);
|
|
171
140
|
const p = input;
|
|
172
141
|
const qs = {};
|
|
173
142
|
if (p.limit)
|
|
@@ -176,7 +145,7 @@ export default function splunk(rl) {
|
|
|
176
145
|
qs.count = 0;
|
|
177
146
|
if (p.filterKey && p.filterValue)
|
|
178
147
|
qs.search = `search ${p.filterKey}=${p.filterValue}`;
|
|
179
|
-
return api(
|
|
148
|
+
return api(ctx, "GET", `search/jobs/${pathSegment(p.searchJobId)}/results`, undefined, qs);
|
|
180
149
|
},
|
|
181
150
|
});
|
|
182
151
|
// ── Alerts ──────────────────────────────────────────
|
|
@@ -185,8 +154,7 @@ export default function splunk(rl) {
|
|
|
185
154
|
description: "Get metric alerts",
|
|
186
155
|
inputSchema: {},
|
|
187
156
|
async execute(_input, ctx) {
|
|
188
|
-
|
|
189
|
-
return api(baseUrl, authToken, "GET", "/services/alerts/metric_alerts");
|
|
157
|
+
return api(ctx, "GET", "alerts/metric_alerts");
|
|
190
158
|
},
|
|
191
159
|
});
|
|
192
160
|
rl.registerAction("alert.getFired", {
|
|
@@ -194,8 +162,7 @@ export default function splunk(rl) {
|
|
|
194
162
|
description: "Get fired alerts report",
|
|
195
163
|
inputSchema: {},
|
|
196
164
|
async execute(_input, ctx) {
|
|
197
|
-
|
|
198
|
-
return api(baseUrl, authToken, "GET", "/services/alerts/fired_alerts");
|
|
165
|
+
return api(ctx, "GET", "alerts/fired_alerts");
|
|
199
166
|
},
|
|
200
167
|
});
|
|
201
168
|
// ── Reports (Saved Searches) ────────────────────────
|
|
@@ -214,7 +181,6 @@ export default function splunk(rl) {
|
|
|
214
181
|
latestTime: { type: "string", required: false },
|
|
215
182
|
},
|
|
216
183
|
async execute(input, ctx) {
|
|
217
|
-
const { baseUrl, authToken } = getConn(ctx);
|
|
218
184
|
const p = input;
|
|
219
185
|
const body = {
|
|
220
186
|
name: p.name,
|
|
@@ -227,7 +193,7 @@ export default function splunk(rl) {
|
|
|
227
193
|
body["dispatch.earliest_time"] = p.earliestTime;
|
|
228
194
|
if (p.latestTime)
|
|
229
195
|
body["dispatch.latest_time"] = p.latestTime;
|
|
230
|
-
return api(
|
|
196
|
+
return api(ctx, "POST", "saved/searches", body);
|
|
231
197
|
},
|
|
232
198
|
});
|
|
233
199
|
rl.registerAction("report.get", {
|
|
@@ -235,8 +201,7 @@ export default function splunk(rl) {
|
|
|
235
201
|
description: "Get a saved search / report",
|
|
236
202
|
inputSchema: { reportId: { type: "string", required: true } },
|
|
237
203
|
async execute(input, ctx) {
|
|
238
|
-
|
|
239
|
-
return api(baseUrl, authToken, "GET", `/services/saved/searches/${input.reportId}`);
|
|
204
|
+
return api(ctx, "GET", `saved/searches/${pathSegment(input.reportId)}`);
|
|
240
205
|
},
|
|
241
206
|
});
|
|
242
207
|
rl.registerAction("report.list", {
|
|
@@ -244,14 +209,13 @@ export default function splunk(rl) {
|
|
|
244
209
|
description: "List saved searches / reports",
|
|
245
210
|
inputSchema: { limit: { type: "number", required: false } },
|
|
246
211
|
async execute(input, ctx) {
|
|
247
|
-
const { baseUrl, authToken } = getConn(ctx);
|
|
248
212
|
const p = (input ?? {});
|
|
249
213
|
const qs = {};
|
|
250
214
|
if (p.limit)
|
|
251
215
|
qs.count = p.limit;
|
|
252
216
|
else
|
|
253
217
|
qs.count = 0;
|
|
254
|
-
return api(
|
|
218
|
+
return api(ctx, "GET", "saved/searches", undefined, qs);
|
|
255
219
|
},
|
|
256
220
|
});
|
|
257
221
|
rl.registerAction("report.delete", {
|
|
@@ -259,8 +223,7 @@ export default function splunk(rl) {
|
|
|
259
223
|
description: "Delete a saved search / report",
|
|
260
224
|
inputSchema: { reportId: { type: "string", required: true } },
|
|
261
225
|
async execute(input, ctx) {
|
|
262
|
-
|
|
263
|
-
await api(baseUrl, authToken, "DELETE", `/services/saved/searches/${input.reportId}`);
|
|
226
|
+
await api(ctx, "DELETE", `saved/searches/${pathSegment(input.reportId)}`);
|
|
264
227
|
return { success: true };
|
|
265
228
|
},
|
|
266
229
|
});
|
|
@@ -280,7 +243,6 @@ export default function splunk(rl) {
|
|
|
280
243
|
realname: { type: "string", required: false, description: "Full name" },
|
|
281
244
|
},
|
|
282
245
|
async execute(input, ctx) {
|
|
283
|
-
const { baseUrl, authToken } = getConn(ctx);
|
|
284
246
|
const p = input;
|
|
285
247
|
const body = {
|
|
286
248
|
name: p.name,
|
|
@@ -291,7 +253,7 @@ export default function splunk(rl) {
|
|
|
291
253
|
body.email = p.email;
|
|
292
254
|
if (p.realname)
|
|
293
255
|
body.realname = p.realname;
|
|
294
|
-
return api(
|
|
256
|
+
return api(ctx, "POST", "authentication/users", body);
|
|
295
257
|
},
|
|
296
258
|
});
|
|
297
259
|
rl.registerAction("user.get", {
|
|
@@ -301,8 +263,7 @@ export default function splunk(rl) {
|
|
|
301
263
|
userId: { type: "string", required: true, description: "Username" },
|
|
302
264
|
},
|
|
303
265
|
async execute(input, ctx) {
|
|
304
|
-
|
|
305
|
-
return api(baseUrl, authToken, "GET", `/services/authentication/users/${input.userId}`);
|
|
266
|
+
return api(ctx, "GET", `authentication/users/${pathSegment(input.userId)}`);
|
|
306
267
|
},
|
|
307
268
|
});
|
|
308
269
|
rl.registerAction("user.list", {
|
|
@@ -310,14 +271,13 @@ export default function splunk(rl) {
|
|
|
310
271
|
description: "List users",
|
|
311
272
|
inputSchema: { limit: { type: "number", required: false } },
|
|
312
273
|
async execute(input, ctx) {
|
|
313
|
-
const { baseUrl, authToken } = getConn(ctx);
|
|
314
274
|
const p = (input ?? {});
|
|
315
275
|
const qs = {};
|
|
316
276
|
if (p.limit)
|
|
317
277
|
qs.count = p.limit;
|
|
318
278
|
else
|
|
319
279
|
qs.count = 0;
|
|
320
|
-
return api(
|
|
280
|
+
return api(ctx, "GET", "authentication/users", undefined, qs);
|
|
321
281
|
},
|
|
322
282
|
});
|
|
323
283
|
rl.registerAction("user.update", {
|
|
@@ -335,7 +295,6 @@ export default function splunk(rl) {
|
|
|
335
295
|
},
|
|
336
296
|
},
|
|
337
297
|
async execute(input, ctx) {
|
|
338
|
-
const { baseUrl, authToken } = getConn(ctx);
|
|
339
298
|
const { userId, ...fields } = input;
|
|
340
299
|
const body = {};
|
|
341
300
|
if (fields.email)
|
|
@@ -346,7 +305,7 @@ export default function splunk(rl) {
|
|
|
346
305
|
body.password = fields.password;
|
|
347
306
|
if (fields.roles)
|
|
348
307
|
body.roles = fields.roles;
|
|
349
|
-
return api(
|
|
308
|
+
return api(ctx, "POST", `authentication/users/${pathSegment(userId)}`, body);
|
|
350
309
|
},
|
|
351
310
|
});
|
|
352
311
|
rl.registerAction("user.delete", {
|
|
@@ -356,8 +315,7 @@ export default function splunk(rl) {
|
|
|
356
315
|
userId: { type: "string", required: true, description: "Username" },
|
|
357
316
|
},
|
|
358
317
|
async execute(input, ctx) {
|
|
359
|
-
|
|
360
|
-
await api(baseUrl, authToken, "DELETE", `/services/authentication/users/${input.userId}`);
|
|
318
|
+
await api(ctx, "DELETE", `authentication/users/${pathSegment(input.userId)}`);
|
|
361
319
|
return { success: true };
|
|
362
320
|
},
|
|
363
321
|
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
/** An OAuth2 user token, sent as a bearer to Spotify's one API origin. */
|
|
3
|
+
export const spotifyCredential = staticCredential({
|
|
4
|
+
id: "spotify",
|
|
5
|
+
auth: { kind: "bearer" },
|
|
6
|
+
local: { secret: "accessToken" },
|
|
7
|
+
targets: {
|
|
8
|
+
api: {
|
|
9
|
+
baseUrl: "https://api.spotify.com/v1/",
|
|
10
|
+
methods: ["GET", "POST", "PUT", "DELETE"],
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
probe: {
|
|
14
|
+
target: "api",
|
|
15
|
+
path: "me",
|
|
16
|
+
method: "GET",
|
|
17
|
+
acceptedStatuses: [200],
|
|
18
|
+
},
|
|
19
|
+
});
|
|
@@ -1,28 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
url.searchParams.set(k, String(v));
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
const init = {
|
|
1
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
2
|
+
import { spotifyCredential } from "./credentials.js";
|
|
3
|
+
function api(ctx, method, endpoint, body, qs) {
|
|
4
|
+
return credentialJson(ctx, spotifyCredential, "spotify", {
|
|
5
|
+
target: "api",
|
|
6
|
+
path: endpoint,
|
|
11
7
|
method,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
if (body && Object.keys(body).length > 0)
|
|
18
|
-
init.body = JSON.stringify(body);
|
|
19
|
-
const res = await fetch(url.toString(), init);
|
|
20
|
-
if (res.status === 204)
|
|
21
|
-
return { success: true };
|
|
22
|
-
if (!res.ok)
|
|
23
|
-
throw new Error(`Spotify error ${res.status}: ${await res.text()}`);
|
|
24
|
-
const text = await res.text();
|
|
25
|
-
return text ? JSON.parse(text) : { success: true };
|
|
8
|
+
query: qs,
|
|
9
|
+
...(body && Object.keys(body).length > 0 ? { json: body } : {}),
|
|
10
|
+
});
|
|
26
11
|
}
|
|
27
12
|
function stripUri(uri, prefix) {
|
|
28
13
|
return uri.replace(prefix, "");
|
|
@@ -30,6 +15,7 @@ function stripUri(uri, prefix) {
|
|
|
30
15
|
export default function spotify(rl) {
|
|
31
16
|
rl.setName("spotify");
|
|
32
17
|
rl.setVersion("0.1.0");
|
|
18
|
+
rl.setCredential(spotifyCredential);
|
|
33
19
|
rl.setConnectionSchema({
|
|
34
20
|
accessToken: {
|
|
35
21
|
type: "string",
|
|
@@ -38,14 +24,13 @@ export default function spotify(rl) {
|
|
|
38
24
|
env: "SPOTIFY_ACCESS_TOKEN",
|
|
39
25
|
},
|
|
40
26
|
});
|
|
41
|
-
const t = (ctx) => ctx.connection.config.accessToken;
|
|
42
27
|
// ── Player ──────────────────────────────────────────
|
|
43
28
|
rl.registerAction("player.pause", {
|
|
44
29
|
access: "write",
|
|
45
30
|
description: "Pause playback",
|
|
46
31
|
inputSchema: {},
|
|
47
32
|
async execute(_i, ctx) {
|
|
48
|
-
return api(
|
|
33
|
+
return api(ctx, "PUT", "me/player/pause");
|
|
49
34
|
},
|
|
50
35
|
});
|
|
51
36
|
rl.registerAction("player.resume", {
|
|
@@ -53,7 +38,7 @@ export default function spotify(rl) {
|
|
|
53
38
|
description: "Resume playback",
|
|
54
39
|
inputSchema: {},
|
|
55
40
|
async execute(_i, ctx) {
|
|
56
|
-
return api(
|
|
41
|
+
return api(ctx, "PUT", "me/player/play");
|
|
57
42
|
},
|
|
58
43
|
});
|
|
59
44
|
rl.registerAction("player.next", {
|
|
@@ -61,7 +46,7 @@ export default function spotify(rl) {
|
|
|
61
46
|
description: "Skip to next track",
|
|
62
47
|
inputSchema: {},
|
|
63
48
|
async execute(_i, ctx) {
|
|
64
|
-
return api(
|
|
49
|
+
return api(ctx, "POST", "me/player/next");
|
|
65
50
|
},
|
|
66
51
|
});
|
|
67
52
|
rl.registerAction("player.previous", {
|
|
@@ -69,7 +54,7 @@ export default function spotify(rl) {
|
|
|
69
54
|
description: "Skip to previous track",
|
|
70
55
|
inputSchema: {},
|
|
71
56
|
async execute(_i, ctx) {
|
|
72
|
-
return api(
|
|
57
|
+
return api(ctx, "POST", "me/player/previous");
|
|
73
58
|
},
|
|
74
59
|
});
|
|
75
60
|
rl.registerAction("player.currentlyPlaying", {
|
|
@@ -77,7 +62,7 @@ export default function spotify(rl) {
|
|
|
77
62
|
description: "Get currently playing track",
|
|
78
63
|
inputSchema: {},
|
|
79
64
|
async execute(_i, ctx) {
|
|
80
|
-
return api(
|
|
65
|
+
return api(ctx, "GET", "me/player/currently-playing");
|
|
81
66
|
},
|
|
82
67
|
});
|
|
83
68
|
rl.registerAction("player.recentlyPlayed", {
|
|
@@ -88,7 +73,7 @@ export default function spotify(rl) {
|
|
|
88
73
|
const qs = {};
|
|
89
74
|
if (input?.limit)
|
|
90
75
|
qs.limit = input.limit;
|
|
91
|
-
const data = (await api(
|
|
76
|
+
const data = (await api(ctx, "GET", "me/player/recently-played", undefined, qs));
|
|
92
77
|
return data.items;
|
|
93
78
|
},
|
|
94
79
|
});
|
|
@@ -99,7 +84,7 @@ export default function spotify(rl) {
|
|
|
99
84
|
uri: { type: "string", required: true, description: "Track URI or ID" },
|
|
100
85
|
},
|
|
101
86
|
async execute(input, ctx) {
|
|
102
|
-
return api(
|
|
87
|
+
return api(ctx, "POST", "me/player/queue", undefined, {
|
|
103
88
|
uri: input.uri,
|
|
104
89
|
});
|
|
105
90
|
},
|
|
@@ -111,7 +96,7 @@ export default function spotify(rl) {
|
|
|
111
96
|
volumePercent: { type: "number", required: true, description: "0-100" },
|
|
112
97
|
},
|
|
113
98
|
async execute(input, ctx) {
|
|
114
|
-
return api(
|
|
99
|
+
return api(ctx, "PUT", "me/player/volume", undefined, {
|
|
115
100
|
volume_percent: input.volumePercent,
|
|
116
101
|
});
|
|
117
102
|
},
|
|
@@ -127,7 +112,7 @@ export default function spotify(rl) {
|
|
|
127
112
|
},
|
|
128
113
|
},
|
|
129
114
|
async execute(input, ctx) {
|
|
130
|
-
return api(
|
|
115
|
+
return api(ctx, "PUT", "me/player/play", {
|
|
131
116
|
context_uri: input.contextUri,
|
|
132
117
|
});
|
|
133
118
|
},
|
|
@@ -138,7 +123,7 @@ export default function spotify(rl) {
|
|
|
138
123
|
description: "Get an album",
|
|
139
124
|
inputSchema: { id: { type: "string", required: true } },
|
|
140
125
|
async execute(input, ctx) {
|
|
141
|
-
return api(
|
|
126
|
+
return api(ctx, "GET", `albums/${pathSegment(stripUri(input.id, "spotify:album:"))}`);
|
|
142
127
|
},
|
|
143
128
|
});
|
|
144
129
|
rl.registerAction("album.getTracks", {
|
|
@@ -153,7 +138,7 @@ export default function spotify(rl) {
|
|
|
153
138
|
const qs = {};
|
|
154
139
|
if (p.limit)
|
|
155
140
|
qs.limit = p.limit;
|
|
156
|
-
const data = (await api(
|
|
141
|
+
const data = (await api(ctx, "GET", `albums/${pathSegment(stripUri(p.id, "spotify:album:"))}/tracks`, undefined, qs));
|
|
157
142
|
return data.items;
|
|
158
143
|
},
|
|
159
144
|
});
|
|
@@ -171,7 +156,7 @@ export default function spotify(rl) {
|
|
|
171
156
|
qs.limit = p.limit;
|
|
172
157
|
if (p.country)
|
|
173
158
|
qs.country = p.country;
|
|
174
|
-
const data = (await api(
|
|
159
|
+
const data = (await api(ctx, "GET", "browse/new-releases", undefined, qs));
|
|
175
160
|
return data.albums.items;
|
|
176
161
|
},
|
|
177
162
|
});
|
|
@@ -189,7 +174,7 @@ export default function spotify(rl) {
|
|
|
189
174
|
qs.limit = p.limit;
|
|
190
175
|
else
|
|
191
176
|
qs.limit = 50;
|
|
192
|
-
const data = (await api(
|
|
177
|
+
const data = (await api(ctx, "GET", "search", undefined, qs));
|
|
193
178
|
return data.albums.items;
|
|
194
179
|
},
|
|
195
180
|
});
|
|
@@ -199,7 +184,7 @@ export default function spotify(rl) {
|
|
|
199
184
|
description: "Get an artist",
|
|
200
185
|
inputSchema: { id: { type: "string", required: true } },
|
|
201
186
|
async execute(input, ctx) {
|
|
202
|
-
return api(
|
|
187
|
+
return api(ctx, "GET", `artists/${pathSegment(stripUri(input.id, "spotify:artist:"))}`);
|
|
203
188
|
},
|
|
204
189
|
});
|
|
205
190
|
rl.registerAction("artist.getAlbums", {
|
|
@@ -214,7 +199,7 @@ export default function spotify(rl) {
|
|
|
214
199
|
const qs = {};
|
|
215
200
|
if (p.limit)
|
|
216
201
|
qs.limit = p.limit;
|
|
217
|
-
const data = (await api(
|
|
202
|
+
const data = (await api(ctx, "GET", `artists/${pathSegment(stripUri(p.id, "spotify:artist:"))}/albums`, undefined, qs));
|
|
218
203
|
return data.items;
|
|
219
204
|
},
|
|
220
205
|
});
|
|
@@ -223,7 +208,7 @@ export default function spotify(rl) {
|
|
|
223
208
|
description: "Get related artists",
|
|
224
209
|
inputSchema: { id: { type: "string", required: true } },
|
|
225
210
|
async execute(input, ctx) {
|
|
226
|
-
const data = (await api(
|
|
211
|
+
const data = (await api(ctx, "GET", `artists/${pathSegment(stripUri(input.id, "spotify:artist:"))}/related-artists`));
|
|
227
212
|
return data.artists;
|
|
228
213
|
},
|
|
229
214
|
});
|
|
@@ -236,7 +221,7 @@ export default function spotify(rl) {
|
|
|
236
221
|
},
|
|
237
222
|
async execute(input, ctx) {
|
|
238
223
|
const p = input;
|
|
239
|
-
const data = (await api(
|
|
224
|
+
const data = (await api(ctx, "GET", `artists/${pathSegment(stripUri(p.id, "spotify:artist:"))}/top-tracks`, undefined, { country: p.country }));
|
|
240
225
|
return data.tracks;
|
|
241
226
|
},
|
|
242
227
|
});
|
|
@@ -254,7 +239,7 @@ export default function spotify(rl) {
|
|
|
254
239
|
type: "artist",
|
|
255
240
|
limit: p.limit ?? 50,
|
|
256
241
|
};
|
|
257
|
-
const data = (await api(
|
|
242
|
+
const data = (await api(ctx, "GET", "search", undefined, qs));
|
|
258
243
|
return data.artists.items;
|
|
259
244
|
},
|
|
260
245
|
});
|
|
@@ -264,7 +249,7 @@ export default function spotify(rl) {
|
|
|
264
249
|
description: "Get a playlist",
|
|
265
250
|
inputSchema: { id: { type: "string", required: true } },
|
|
266
251
|
async execute(input, ctx) {
|
|
267
|
-
return api(
|
|
252
|
+
return api(ctx, "GET", `playlists/${pathSegment(stripUri(input.id, "spotify:playlist:"))}`);
|
|
268
253
|
},
|
|
269
254
|
});
|
|
270
255
|
rl.registerAction("playlist.getTracks", {
|
|
@@ -279,7 +264,7 @@ export default function spotify(rl) {
|
|
|
279
264
|
const qs = {};
|
|
280
265
|
if (p.limit)
|
|
281
266
|
qs.limit = p.limit;
|
|
282
|
-
const data = (await api(
|
|
267
|
+
const data = (await api(ctx, "GET", `playlists/${pathSegment(stripUri(p.id, "spotify:playlist:"))}/tracks`, undefined, qs));
|
|
283
268
|
return data.items;
|
|
284
269
|
},
|
|
285
270
|
});
|
|
@@ -292,7 +277,7 @@ export default function spotify(rl) {
|
|
|
292
277
|
public: { type: "boolean", required: false },
|
|
293
278
|
},
|
|
294
279
|
async execute(input, ctx) {
|
|
295
|
-
return api(
|
|
280
|
+
return api(ctx, "POST", "me/playlists", input);
|
|
296
281
|
},
|
|
297
282
|
});
|
|
298
283
|
rl.registerAction("playlist.addTrack", {
|
|
@@ -308,7 +293,7 @@ export default function spotify(rl) {
|
|
|
308
293
|
const qs = { uris: p.trackUri };
|
|
309
294
|
if (p.position !== undefined)
|
|
310
295
|
qs.position = p.position;
|
|
311
|
-
return api(
|
|
296
|
+
return api(ctx, "POST", `playlists/${pathSegment(stripUri(p.id, "spotify:playlist:"))}/tracks`, {}, qs);
|
|
312
297
|
},
|
|
313
298
|
});
|
|
314
299
|
rl.registerAction("playlist.removeTrack", {
|
|
@@ -320,7 +305,7 @@ export default function spotify(rl) {
|
|
|
320
305
|
},
|
|
321
306
|
async execute(input, ctx) {
|
|
322
307
|
const p = input;
|
|
323
|
-
return api(
|
|
308
|
+
return api(ctx, "DELETE", `playlists/${pathSegment(stripUri(p.id, "spotify:playlist:"))}/tracks`, { tracks: [{ uri: p.trackUri }] });
|
|
324
309
|
},
|
|
325
310
|
});
|
|
326
311
|
rl.registerAction("playlist.listMine", {
|
|
@@ -331,7 +316,7 @@ export default function spotify(rl) {
|
|
|
331
316
|
const qs = {};
|
|
332
317
|
if (input?.limit)
|
|
333
318
|
qs.limit = input.limit;
|
|
334
|
-
const data = (await api(
|
|
319
|
+
const data = (await api(ctx, "GET", "me/playlists", undefined, qs));
|
|
335
320
|
return data.items;
|
|
336
321
|
},
|
|
337
322
|
});
|
|
@@ -349,7 +334,7 @@ export default function spotify(rl) {
|
|
|
349
334
|
type: "playlist",
|
|
350
335
|
limit: p.limit ?? 50,
|
|
351
336
|
};
|
|
352
|
-
const data = (await api(
|
|
337
|
+
const data = (await api(ctx, "GET", "search", undefined, qs));
|
|
353
338
|
return data.playlists.items;
|
|
354
339
|
},
|
|
355
340
|
});
|
|
@@ -359,7 +344,7 @@ export default function spotify(rl) {
|
|
|
359
344
|
description: "Get a track",
|
|
360
345
|
inputSchema: { id: { type: "string", required: true } },
|
|
361
346
|
async execute(input, ctx) {
|
|
362
|
-
return api(
|
|
347
|
+
return api(ctx, "GET", `tracks/${pathSegment(stripUri(input.id, "spotify:track:"))}`);
|
|
363
348
|
},
|
|
364
349
|
});
|
|
365
350
|
rl.registerAction("track.getAudioFeatures", {
|
|
@@ -367,7 +352,7 @@ export default function spotify(rl) {
|
|
|
367
352
|
description: "Get audio features for a track",
|
|
368
353
|
inputSchema: { id: { type: "string", required: true } },
|
|
369
354
|
async execute(input, ctx) {
|
|
370
|
-
return api(
|
|
355
|
+
return api(ctx, "GET", `audio-features/${pathSegment(stripUri(input.id, "spotify:track:"))}`);
|
|
371
356
|
},
|
|
372
357
|
});
|
|
373
358
|
rl.registerAction("track.search", {
|
|
@@ -384,7 +369,7 @@ export default function spotify(rl) {
|
|
|
384
369
|
type: "track",
|
|
385
370
|
limit: p.limit ?? 50,
|
|
386
371
|
};
|
|
387
|
-
const data = (await api(
|
|
372
|
+
const data = (await api(ctx, "GET", "search", undefined, qs));
|
|
388
373
|
return data.tracks.items;
|
|
389
374
|
},
|
|
390
375
|
});
|
|
@@ -397,7 +382,7 @@ export default function spotify(rl) {
|
|
|
397
382
|
const qs = {};
|
|
398
383
|
if (input?.limit)
|
|
399
384
|
qs.limit = input.limit;
|
|
400
|
-
const data = (await api(
|
|
385
|
+
const data = (await api(ctx, "GET", "me/tracks", undefined, qs));
|
|
401
386
|
return data.items;
|
|
402
387
|
},
|
|
403
388
|
});
|
|
@@ -410,7 +395,7 @@ export default function spotify(rl) {
|
|
|
410
395
|
const qs = { type: "artist" };
|
|
411
396
|
if (input?.limit)
|
|
412
397
|
qs.limit = input.limit;
|
|
413
|
-
const data = (await api(
|
|
398
|
+
const data = (await api(ctx, "GET", "me/following", undefined, qs));
|
|
414
399
|
return data.artists.items;
|
|
415
400
|
},
|
|
416
401
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
/** A personal API key in the api-key header, to Stackby's one API origin. */
|
|
3
|
+
export const stackbyCredential = staticCredential({
|
|
4
|
+
id: "stackby",
|
|
5
|
+
auth: { kind: "apiKey", header: "api-key" },
|
|
6
|
+
local: { secret: "apiKey" },
|
|
7
|
+
targets: {
|
|
8
|
+
api: {
|
|
9
|
+
baseUrl: "https://stackby.com/api/betav1/",
|
|
10
|
+
methods: ["GET", "POST", "DELETE"],
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
});
|