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,30 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
async function api(conn, method, endpoint, body) {
|
|
9
|
-
const init = {
|
|
1
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
2
|
+
import { wekanCredential } from "./credentials.js";
|
|
3
|
+
function api(ctx, method, endpoint, body) {
|
|
4
|
+
return credentialJson(ctx, wekanCredential, "wekan", {
|
|
5
|
+
target: "api",
|
|
6
|
+
path: endpoint,
|
|
10
7
|
method,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
"Content-Type": "application/json",
|
|
14
|
-
Accept: "application/json",
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
if (body && Object.keys(body).length > 0)
|
|
18
|
-
init.body = JSON.stringify(body);
|
|
19
|
-
const res = await fetch(`${conn.url}/api/${endpoint}`, init);
|
|
20
|
-
if (!res.ok)
|
|
21
|
-
throw new Error(`Wekan error ${res.status}: ${await res.text()}`);
|
|
22
|
-
const text = await res.text();
|
|
23
|
-
return text ? JSON.parse(text) : {};
|
|
8
|
+
...(body && Object.keys(body).length > 0 ? { json: body } : {}),
|
|
9
|
+
});
|
|
24
10
|
}
|
|
25
11
|
export default function wekan(rl) {
|
|
26
12
|
rl.setName("wekan");
|
|
27
13
|
rl.setVersion("0.1.0");
|
|
14
|
+
rl.setCredential(wekanCredential);
|
|
28
15
|
rl.setConnectionSchema({
|
|
29
16
|
url: {
|
|
30
17
|
type: "string",
|
|
@@ -48,7 +35,7 @@ export default function wekan(rl) {
|
|
|
48
35
|
owner: { type: "string", required: true },
|
|
49
36
|
},
|
|
50
37
|
async execute(input, ctx) {
|
|
51
|
-
return api(
|
|
38
|
+
return api(ctx, "POST", "boards", input);
|
|
52
39
|
},
|
|
53
40
|
});
|
|
54
41
|
rl.registerAction("board.get", {
|
|
@@ -56,7 +43,7 @@ export default function wekan(rl) {
|
|
|
56
43
|
description: "Get a board",
|
|
57
44
|
inputSchema: { boardId: { type: "string", required: true } },
|
|
58
45
|
async execute(input, ctx) {
|
|
59
|
-
return api(
|
|
46
|
+
return api(ctx, "GET", `boards/${pathSegment(input.boardId)}`);
|
|
60
47
|
},
|
|
61
48
|
});
|
|
62
49
|
rl.registerAction("board.list", {
|
|
@@ -68,7 +55,7 @@ export default function wekan(rl) {
|
|
|
68
55
|
},
|
|
69
56
|
async execute(input, ctx) {
|
|
70
57
|
const p = input;
|
|
71
|
-
const data = (await api(
|
|
58
|
+
const data = (await api(ctx, "GET", `users/${pathSegment(p.userId)}/boards`));
|
|
72
59
|
return p.limit ? data.slice(0, p.limit) : data;
|
|
73
60
|
},
|
|
74
61
|
});
|
|
@@ -77,7 +64,7 @@ export default function wekan(rl) {
|
|
|
77
64
|
description: "Delete a board",
|
|
78
65
|
inputSchema: { boardId: { type: "string", required: true } },
|
|
79
66
|
async execute(input, ctx) {
|
|
80
|
-
return api(
|
|
67
|
+
return api(ctx, "DELETE", `boards/${pathSegment(input.boardId)}`);
|
|
81
68
|
},
|
|
82
69
|
});
|
|
83
70
|
// ── List ────────────────────────────────────────────
|
|
@@ -90,7 +77,7 @@ export default function wekan(rl) {
|
|
|
90
77
|
},
|
|
91
78
|
async execute(input, ctx) {
|
|
92
79
|
const p = input;
|
|
93
|
-
return api(
|
|
80
|
+
return api(ctx, "POST", `boards/${pathSegment(p.boardId)}/lists`, {
|
|
94
81
|
title: p.title,
|
|
95
82
|
});
|
|
96
83
|
},
|
|
@@ -104,7 +91,7 @@ export default function wekan(rl) {
|
|
|
104
91
|
},
|
|
105
92
|
async execute(input, ctx) {
|
|
106
93
|
const p = input;
|
|
107
|
-
return api(
|
|
94
|
+
return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}`);
|
|
108
95
|
},
|
|
109
96
|
});
|
|
110
97
|
rl.registerAction("list.listAll", {
|
|
@@ -116,7 +103,7 @@ export default function wekan(rl) {
|
|
|
116
103
|
},
|
|
117
104
|
async execute(input, ctx) {
|
|
118
105
|
const p = input;
|
|
119
|
-
const data = (await api(
|
|
106
|
+
const data = (await api(ctx, "GET", `boards/${pathSegment(p.boardId)}/lists`));
|
|
120
107
|
return p.limit ? data.slice(0, p.limit) : data;
|
|
121
108
|
},
|
|
122
109
|
});
|
|
@@ -129,7 +116,7 @@ export default function wekan(rl) {
|
|
|
129
116
|
},
|
|
130
117
|
async execute(input, ctx) {
|
|
131
118
|
const p = input;
|
|
132
|
-
return api(
|
|
119
|
+
return api(ctx, "DELETE", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}`);
|
|
133
120
|
},
|
|
134
121
|
});
|
|
135
122
|
// ── Card ────────────────────────────────────────────
|
|
@@ -146,7 +133,7 @@ export default function wekan(rl) {
|
|
|
146
133
|
},
|
|
147
134
|
async execute(input, ctx) {
|
|
148
135
|
const { boardId, listId, ...body } = input;
|
|
149
|
-
return api(
|
|
136
|
+
return api(ctx, "POST", `boards/${pathSegment(boardId)}/lists/${pathSegment(listId)}/cards`, body);
|
|
150
137
|
},
|
|
151
138
|
});
|
|
152
139
|
rl.registerAction("card.get", {
|
|
@@ -159,7 +146,7 @@ export default function wekan(rl) {
|
|
|
159
146
|
},
|
|
160
147
|
async execute(input, ctx) {
|
|
161
148
|
const p = input;
|
|
162
|
-
return api(
|
|
149
|
+
return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}/cards/${pathSegment(p.cardId)}`);
|
|
163
150
|
},
|
|
164
151
|
});
|
|
165
152
|
rl.registerAction("card.list", {
|
|
@@ -172,7 +159,7 @@ export default function wekan(rl) {
|
|
|
172
159
|
},
|
|
173
160
|
async execute(input, ctx) {
|
|
174
161
|
const p = input;
|
|
175
|
-
const data = (await api(
|
|
162
|
+
const data = (await api(ctx, "GET", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}/cards`));
|
|
176
163
|
return p.limit ? data.slice(0, p.limit) : data;
|
|
177
164
|
},
|
|
178
165
|
});
|
|
@@ -187,7 +174,7 @@ export default function wekan(rl) {
|
|
|
187
174
|
},
|
|
188
175
|
async execute(input, ctx) {
|
|
189
176
|
const p = input;
|
|
190
|
-
return api(
|
|
177
|
+
return api(ctx, "PUT", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}/cards/${pathSegment(p.cardId)}`, p.data);
|
|
191
178
|
},
|
|
192
179
|
});
|
|
193
180
|
rl.registerAction("card.delete", {
|
|
@@ -200,7 +187,7 @@ export default function wekan(rl) {
|
|
|
200
187
|
},
|
|
201
188
|
async execute(input, ctx) {
|
|
202
189
|
const p = input;
|
|
203
|
-
return api(
|
|
190
|
+
return api(ctx, "DELETE", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}/cards/${pathSegment(p.cardId)}`);
|
|
204
191
|
},
|
|
205
192
|
});
|
|
206
193
|
// ── Card Comment ────────────────────────────────────
|
|
@@ -215,7 +202,7 @@ export default function wekan(rl) {
|
|
|
215
202
|
},
|
|
216
203
|
async execute(input, ctx) {
|
|
217
204
|
const p = input;
|
|
218
|
-
return api(
|
|
205
|
+
return api(ctx, "POST", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/comments`, { authorId: p.authorId, comment: p.comment });
|
|
219
206
|
},
|
|
220
207
|
});
|
|
221
208
|
rl.registerAction("cardComment.get", {
|
|
@@ -228,7 +215,7 @@ export default function wekan(rl) {
|
|
|
228
215
|
},
|
|
229
216
|
async execute(input, ctx) {
|
|
230
217
|
const p = input;
|
|
231
|
-
return api(
|
|
218
|
+
return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/comments/${pathSegment(p.commentId)}`);
|
|
232
219
|
},
|
|
233
220
|
});
|
|
234
221
|
rl.registerAction("cardComment.list", {
|
|
@@ -240,7 +227,7 @@ export default function wekan(rl) {
|
|
|
240
227
|
},
|
|
241
228
|
async execute(input, ctx) {
|
|
242
229
|
const p = input;
|
|
243
|
-
return api(
|
|
230
|
+
return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/comments`);
|
|
244
231
|
},
|
|
245
232
|
});
|
|
246
233
|
rl.registerAction("cardComment.delete", {
|
|
@@ -253,7 +240,7 @@ export default function wekan(rl) {
|
|
|
253
240
|
},
|
|
254
241
|
async execute(input, ctx) {
|
|
255
242
|
const p = input;
|
|
256
|
-
return api(
|
|
243
|
+
return api(ctx, "DELETE", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/comments/${pathSegment(p.commentId)}`);
|
|
257
244
|
},
|
|
258
245
|
});
|
|
259
246
|
// ── Checklist ───────────────────────────────────────
|
|
@@ -272,7 +259,7 @@ export default function wekan(rl) {
|
|
|
272
259
|
},
|
|
273
260
|
async execute(input, ctx) {
|
|
274
261
|
const p = input;
|
|
275
|
-
return api(
|
|
262
|
+
return api(ctx, "POST", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists`, { title: p.title, items: p.items });
|
|
276
263
|
},
|
|
277
264
|
});
|
|
278
265
|
rl.registerAction("checklist.get", {
|
|
@@ -285,7 +272,7 @@ export default function wekan(rl) {
|
|
|
285
272
|
},
|
|
286
273
|
async execute(input, ctx) {
|
|
287
274
|
const p = input;
|
|
288
|
-
return api(
|
|
275
|
+
return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists/${pathSegment(p.checklistId)}`);
|
|
289
276
|
},
|
|
290
277
|
});
|
|
291
278
|
rl.registerAction("checklist.list", {
|
|
@@ -297,7 +284,7 @@ export default function wekan(rl) {
|
|
|
297
284
|
},
|
|
298
285
|
async execute(input, ctx) {
|
|
299
286
|
const p = input;
|
|
300
|
-
return api(
|
|
287
|
+
return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists`);
|
|
301
288
|
},
|
|
302
289
|
});
|
|
303
290
|
rl.registerAction("checklist.delete", {
|
|
@@ -310,7 +297,7 @@ export default function wekan(rl) {
|
|
|
310
297
|
},
|
|
311
298
|
async execute(input, ctx) {
|
|
312
299
|
const p = input;
|
|
313
|
-
return api(
|
|
300
|
+
return api(ctx, "DELETE", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists/${pathSegment(p.checklistId)}`);
|
|
314
301
|
},
|
|
315
302
|
});
|
|
316
303
|
// ── Checklist Item ──────────────────────────────────
|
|
@@ -325,7 +312,7 @@ export default function wekan(rl) {
|
|
|
325
312
|
},
|
|
326
313
|
async execute(input, ctx) {
|
|
327
314
|
const p = input;
|
|
328
|
-
return api(
|
|
315
|
+
return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists/${pathSegment(p.checklistId)}/items/${pathSegment(p.itemId)}`);
|
|
329
316
|
},
|
|
330
317
|
});
|
|
331
318
|
rl.registerAction("checklistItem.update", {
|
|
@@ -340,7 +327,7 @@ export default function wekan(rl) {
|
|
|
340
327
|
},
|
|
341
328
|
async execute(input, ctx) {
|
|
342
329
|
const p = input;
|
|
343
|
-
return api(
|
|
330
|
+
return api(ctx, "PUT", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists/${pathSegment(p.checklistId)}/items/${pathSegment(p.itemId)}`, p.data);
|
|
344
331
|
},
|
|
345
332
|
});
|
|
346
333
|
rl.registerAction("checklistItem.delete", {
|
|
@@ -354,7 +341,7 @@ export default function wekan(rl) {
|
|
|
354
341
|
},
|
|
355
342
|
async execute(input, ctx) {
|
|
356
343
|
const p = input;
|
|
357
|
-
return api(
|
|
344
|
+
return api(ctx, "DELETE", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists/${pathSegment(p.checklistId)}/items/${pathSegment(p.itemId)}`);
|
|
358
345
|
},
|
|
359
346
|
});
|
|
360
347
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { refuseUnderHost } from "../../_shared/credentials.js";
|
|
1
2
|
import { AUDIENCE, AUTH, arr, authed, CAPABILITIES, CONSUMER, cfgOf, clientHeaders, ensureIdentity, expiresAt, formEncode, http, normPhone, obj, pick, RESTAURANT, WoltError, } from "./shared.js";
|
|
2
3
|
async function authJson(ctx, path, body, extra = {}) {
|
|
3
4
|
return http(AUTH, path, {
|
|
@@ -114,6 +115,7 @@ async function finish(ctx, grant) {
|
|
|
114
115
|
};
|
|
115
116
|
}
|
|
116
117
|
export async function redeemLink(ctx, link) {
|
|
118
|
+
refuseUnderHost(ctx);
|
|
117
119
|
await ensureIdentity(ctx);
|
|
118
120
|
const cfg = cfgOf(ctx);
|
|
119
121
|
const token = linkToken(link);
|
|
@@ -134,6 +136,7 @@ export async function redeemLink(ctx, link) {
|
|
|
134
136
|
}
|
|
135
137
|
}
|
|
136
138
|
export async function requestEmailCode(ctx, email, captcha) {
|
|
139
|
+
refuseUnderHost(ctx);
|
|
137
140
|
await ensureIdentity(ctx);
|
|
138
141
|
await ctx.updateConnection({ pendingEmail: email, pendingPhone: undefined });
|
|
139
142
|
const r = await authJson(ctx, "/v3/users/email_login", { email, audience: AUDIENCE, email_code_support: true }, captchaHeader(captcha));
|
|
@@ -171,6 +174,7 @@ export async function loginMethods(ctx, phone) {
|
|
|
171
174
|
return { phone: normalized, methods };
|
|
172
175
|
}
|
|
173
176
|
export async function requestSmsCode(ctx, input) {
|
|
177
|
+
refuseUnderHost(ctx);
|
|
174
178
|
await ensureIdentity(ctx);
|
|
175
179
|
const normalized = normPhone(input.phone);
|
|
176
180
|
await ctx.updateConnection({ pendingPhone: normalized });
|
|
@@ -224,6 +228,7 @@ export async function requestSmsCode(ctx, input) {
|
|
|
224
228
|
* error keeps its body privately.
|
|
225
229
|
*/
|
|
226
230
|
export async function submitCode(ctx, code) {
|
|
231
|
+
refuseUnderHost(ctx);
|
|
227
232
|
const cfg = cfgOf(ctx);
|
|
228
233
|
if (!cfg.pendingEmail && !cfg.pendingPhone)
|
|
229
234
|
throw new Error("wolt: no login in progress — run account.requestEmailCode or account.requestSmsCode first");
|
|
@@ -299,6 +304,7 @@ async function startEmailConfirmation(ctx, token, context) {
|
|
|
299
304
|
};
|
|
300
305
|
}
|
|
301
306
|
export async function submitConfirmation(ctx, code) {
|
|
307
|
+
refuseUnderHost(ctx);
|
|
302
308
|
const cfg = cfgOf(ctx);
|
|
303
309
|
if (!cfg.pendingConfirmationToken)
|
|
304
310
|
throw new Error("wolt: no confirmation in progress — account.submitCode reports when one is needed");
|
|
@@ -50,7 +50,7 @@ export async function nearby(lat, lon, limit, openOnly) {
|
|
|
50
50
|
/** A venue's static page plus its live status; the live half is best-effort. */
|
|
51
51
|
export async function venue(slug, lat, lon) {
|
|
52
52
|
const params = new URLSearchParams({ lat: String(lat), lon: String(lon) });
|
|
53
|
-
const name = seg(slug
|
|
53
|
+
const name = seg(slug);
|
|
54
54
|
const [staticPage, dynamic] = await Promise.all([
|
|
55
55
|
http(CONSUMER, `/order-xp/web/v1/pages/venue/slug/${name}/static?${params}`),
|
|
56
56
|
http(CONSUMER, `/order-xp/web/v1/venue/slug/${name}/dynamic/?selected_delivery_method=homedelivery`).catch(() => null),
|
|
@@ -77,7 +77,7 @@ export async function venue(slug, lat, lon) {
|
|
|
77
77
|
}
|
|
78
78
|
export async function assortment(slug, language = "en") {
|
|
79
79
|
const params = new URLSearchParams({ language });
|
|
80
|
-
return http(CONSUMER, `/consumer-api/consumer-assortment/v1/venues/slug/${seg(slug
|
|
80
|
+
return http(CONSUMER, `/consumer-api/consumer-assortment/v1/venues/slug/${seg(slug)}/assortment?${params}`);
|
|
81
81
|
}
|
|
82
82
|
function optionGroupOf(raw, definitions) {
|
|
83
83
|
const group = obj(raw);
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { grantSchema } from "../../_shared/credentials.js";
|
|
2
|
+
export const RESTAURANT = "restaurant-api.wolt.com";
|
|
3
|
+
export const CONSUMER = "consumer-api.wolt.com";
|
|
4
|
+
export const AUTH = "authentication.wolt.com";
|
|
5
|
+
/** Mobile client headers; the authed endpoints reject anything that is not the app. */
|
|
6
|
+
const MOBILE = {
|
|
7
|
+
"app-language": "en",
|
|
8
|
+
"app-locale": "en-US",
|
|
9
|
+
"client-version": "26.30.4",
|
|
10
|
+
clientversionnumber: "142026304",
|
|
11
|
+
platform: "Android",
|
|
12
|
+
"user-agent": "Wolt/26.30.4; Build/142026304; Android/16; Google sdk_gphone",
|
|
13
|
+
};
|
|
14
|
+
/** Headers every authenticated or login call carries: the app, and this device's session. */
|
|
15
|
+
export function clientHeaders(config) {
|
|
16
|
+
return {
|
|
17
|
+
...MOBILE,
|
|
18
|
+
"w-wolt-session-id": String(config.woltSessionId ?? ""),
|
|
19
|
+
"x-wolt-visitor-id": String(config.visitorId ?? ""),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The owner's Wolt session: a refresh token, renewed at Wolt's token
|
|
24
|
+
* endpoint as the mobile app does it — its headers, and the device token
|
|
25
|
+
* the session is bound to — into access tokens that sign the restaurant
|
|
26
|
+
* and consumer APIs. Wolt rotates the refresh token on every grant. The
|
|
27
|
+
* device identifiers are public config; the owner login seeds the grant.
|
|
28
|
+
*/
|
|
29
|
+
export const woltCredential = (config) => {
|
|
30
|
+
const headers = clientHeaders(config);
|
|
31
|
+
const api = (host) => ({
|
|
32
|
+
baseUrl: `https://${host}/`,
|
|
33
|
+
methods: ["GET", "POST", "PUT"],
|
|
34
|
+
allowedHeaders: Object.keys(headers),
|
|
35
|
+
maxResponseBytes: 8 * 1024 * 1024,
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
type: {
|
|
39
|
+
id: "wolt",
|
|
40
|
+
methods: {
|
|
41
|
+
oauth2: {
|
|
42
|
+
schema: grantSchema,
|
|
43
|
+
authentication: {
|
|
44
|
+
kind: "oauth2",
|
|
45
|
+
field: "grant",
|
|
46
|
+
renewal: "refresh",
|
|
47
|
+
definition: {
|
|
48
|
+
id: "wolt.oauth2",
|
|
49
|
+
provider: "wolt",
|
|
50
|
+
refresh: {
|
|
51
|
+
url: `https://${AUTH}/v1/wauth2/access_token`,
|
|
52
|
+
clientAuthentication: "none",
|
|
53
|
+
headers,
|
|
54
|
+
parameters: { device_token: String(config.deviceToken ?? "") },
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
targets: { restaurant: api(RESTAURANT), consumer: api(CONSUMER) },
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
method: "oauth2",
|
|
63
|
+
};
|
|
64
|
+
};
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as t from "typebox";
|
|
2
|
+
import { refuseUnderHost } from "../../_shared/credentials.js";
|
|
2
3
|
import { discoverPaymentMethod, listAddresses, loginMethods, redeemLink, requestEmailCode, requestSmsCode, status, submitCode, submitConfirmation, whoami, } from "./account.js";
|
|
3
4
|
import { item, menu, nearby, search, venue } from "./catalog.js";
|
|
5
|
+
import { woltCredential } from "./credentials.js";
|
|
4
6
|
import { cancelOrder, estimate, orderStatus, planOrder, previewOf, purchase, quoteFor, } from "./orders.js";
|
|
5
|
-
import {
|
|
7
|
+
import { authed, cfgOf, DEF_LAT, DEF_LON, num, RESTAURANT, } from "./shared.js";
|
|
6
8
|
/**
|
|
7
9
|
* wolt — Wolt (food and grocery delivery, Israel and global) consumer connector.
|
|
8
10
|
*
|
|
@@ -101,6 +103,7 @@ function coords(input, ctx) {
|
|
|
101
103
|
export default function wolt(rl) {
|
|
102
104
|
rl.setName("wolt");
|
|
103
105
|
rl.setVersion("0.1.0");
|
|
106
|
+
rl.setCredential(woltCredential);
|
|
104
107
|
rl.setConnectionSchema(t.Object({
|
|
105
108
|
refreshToken: t.Optional(t.String({
|
|
106
109
|
env: "WOLT_REFRESH_TOKEN",
|
|
@@ -354,10 +357,12 @@ export default function wolt(rl) {
|
|
|
354
357
|
});
|
|
355
358
|
rl.registerAction("account.refresh", {
|
|
356
359
|
access: "write",
|
|
357
|
-
description: "Force a token refresh. Wolt rotates its refresh token on every grant, so an untouched session eventually lapses; a recurring 'call wolt.account.refresh()' every ~12h keeps it alive.
|
|
360
|
+
description: "Force a token refresh and prove it on a live call. Wolt rotates its refresh token on every grant, so an untouched session eventually lapses; a recurring 'call wolt.account.refresh()' every ~12h keeps it alive. Runs where the grant lives: locally, not under a host that keeps it.",
|
|
358
361
|
inputSchema: t.Object({}, STRICT),
|
|
359
362
|
async execute(_input, ctx) {
|
|
360
|
-
|
|
363
|
+
refuseUnderHost(ctx);
|
|
364
|
+
await ctx.updateConnection({ accessTokenExpiresAt: 1 });
|
|
365
|
+
await authed(ctx, RESTAURANT, "/v1/user/me");
|
|
361
366
|
const cfg = cfgOf(ctx);
|
|
362
367
|
return {
|
|
363
368
|
refreshed: true,
|
|
@@ -299,7 +299,7 @@ export async function purchase(ctx, plan) {
|
|
|
299
299
|
return { order_id: orderId };
|
|
300
300
|
}
|
|
301
301
|
export async function orderStatus(ctx, orderId) {
|
|
302
|
-
const id = seg(orderId
|
|
302
|
+
const id = seg(orderId);
|
|
303
303
|
const [tracking, page] = await Promise.all([
|
|
304
304
|
authed(ctx, RESTAURANT, `/v2/order_details/purchase_tracking/${id}`),
|
|
305
305
|
authed(ctx, CONSUMER, `/order-xp/v1/pages/order-tracking/${id}`).catch(() => null),
|
|
@@ -323,7 +323,7 @@ export async function orderStatus(ctx, orderId) {
|
|
|
323
323
|
};
|
|
324
324
|
}
|
|
325
325
|
export async function cancelOrder(ctx, orderId, reason) {
|
|
326
|
-
const id = seg(orderId
|
|
326
|
+
const id = seg(orderId);
|
|
327
327
|
try {
|
|
328
328
|
await authed(ctx, RESTAURANT, `/v2/purchases/${id}/cancel`, {
|
|
329
329
|
method: "PUT",
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { obj, readBounded } from "../../_shared/provider.js";
|
|
2
|
+
/**
|
|
3
|
+
* The requests that carry no stored credential: anonymous catalogue reads,
|
|
4
|
+
* sent as the web app, and the owner login's steps, whose inputs come from
|
|
5
|
+
* the person logging in. Everything signed goes through `authed` instead.
|
|
6
|
+
*/
|
|
7
|
+
const MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
|
|
8
|
+
const WEB_UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36";
|
|
9
|
+
const WEB = {
|
|
10
|
+
"user-agent": WEB_UA,
|
|
11
|
+
"accept-language": "en",
|
|
12
|
+
"app-language": "en",
|
|
13
|
+
platform: "Web",
|
|
14
|
+
"client-version": "1.16.125",
|
|
15
|
+
origin: "https://wolt.com",
|
|
16
|
+
referer: "https://wolt.com/",
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* A failed request.
|
|
20
|
+
*
|
|
21
|
+
* The body stays private. Wolt puts meaningful data in its 4xx bodies — the
|
|
22
|
+
* login escalation token, `error_code` — so the login flow needs to read it,
|
|
23
|
+
* but those same bodies carry access and refresh tokens. `details()` is the
|
|
24
|
+
* only way in, and the message never contains any of it.
|
|
25
|
+
*/
|
|
26
|
+
export class WoltError extends Error {
|
|
27
|
+
status;
|
|
28
|
+
endpoint;
|
|
29
|
+
#body;
|
|
30
|
+
constructor(status, endpoint, body) {
|
|
31
|
+
const retired = status === 410 ? " (endpoint retired by Wolt)" : "";
|
|
32
|
+
super(`wolt: request failed (HTTP ${status})${retired} on ${endpoint}`);
|
|
33
|
+
this.name = "WoltError";
|
|
34
|
+
this.status = status;
|
|
35
|
+
this.endpoint = endpoint;
|
|
36
|
+
this.#body = body;
|
|
37
|
+
}
|
|
38
|
+
/** The parsed body, for the branches that must read it. Never logged. */
|
|
39
|
+
details() {
|
|
40
|
+
try {
|
|
41
|
+
return obj(JSON.parse(this.#body));
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function endpointOf(host, path) {
|
|
49
|
+
return `${host}${path.split("?")[0]}`;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* An answer's body as an object. A failure keeps its body privately; Wolt
|
|
53
|
+
* answers 200 with nothing at all on endpoints it has retired.
|
|
54
|
+
*/
|
|
55
|
+
export function answerOf(status, endpoint, text) {
|
|
56
|
+
if (status >= 400)
|
|
57
|
+
throw new WoltError(status, endpoint, text);
|
|
58
|
+
if (!text.trim())
|
|
59
|
+
throw new Error(`wolt: ${endpoint} returned an empty body (endpoint retired)`);
|
|
60
|
+
try {
|
|
61
|
+
return obj(JSON.parse(text));
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
throw new Error(`wolt: non-JSON response from ${endpoint}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** One unsigned request; redirects are refused, as for every other call. */
|
|
68
|
+
export async function http(host, path, opts = {}) {
|
|
69
|
+
const { method = "GET", body = null, headers = {}, web = true } = opts;
|
|
70
|
+
const payload = body == null
|
|
71
|
+
? null
|
|
72
|
+
: typeof body === "string"
|
|
73
|
+
? body
|
|
74
|
+
: JSON.stringify(body);
|
|
75
|
+
const merged = {
|
|
76
|
+
...(web ? WEB : {}),
|
|
77
|
+
accept: "application/json",
|
|
78
|
+
...headers,
|
|
79
|
+
};
|
|
80
|
+
if (payload && !merged["content-type"])
|
|
81
|
+
merged["content-type"] = "application/json";
|
|
82
|
+
const endpoint = endpointOf(host, path);
|
|
83
|
+
const res = await fetch(`https://${host}${path}`, {
|
|
84
|
+
method,
|
|
85
|
+
headers: merged,
|
|
86
|
+
body: payload,
|
|
87
|
+
redirect: "error",
|
|
88
|
+
});
|
|
89
|
+
const text = await readBounded(res, MAX_RESPONSE_BYTES, `wolt: response exceeded the size limit on ${endpoint}`);
|
|
90
|
+
return answerOf(res.status, endpoint, text);
|
|
91
|
+
}
|