runline 0.33.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 +19 -55
- package/dist/plugins/_shared/shiftCredentials.js +83 -0
- 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/index.js +4 -2
- package/dist/plugins/shiftBwm/src/shared.js +41 -16
- package/dist/plugins/shiftCrm/src/access.js +2 -2
- package/dist/plugins/shiftCrm/src/accounts.js +3 -3
- package/dist/plugins/shiftCrm/src/activities.js +3 -3
- package/dist/plugins/shiftCrm/src/credentials.js +6 -0
- package/dist/plugins/shiftCrm/src/index.js +2 -0
- package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
- package/dist/plugins/shiftCrm/src/people.js +3 -3
- package/dist/plugins/shiftCrm/src/records.js +2 -2
- package/dist/plugins/shiftCrm/src/shared.js +2 -1
- package/dist/plugins/shiftCrm/src/tasks.js +3 -3
- package/dist/plugins/shiftObjects/src/credentials.js +2 -0
- package/dist/plugins/shiftObjects/src/index.js +2 -0
- package/dist/plugins/shiftObjects/src/objects.js +3 -2
- package/dist/plugins/shiftOcr/src/credentials.js +8 -0
- package/dist/plugins/shiftOcr/src/index.js +6 -5
- 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 +4 -4
- 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 +1 -1
- package/dist/plugins/_shared/authedFetch.js +0 -33
- package/dist/plugins/_shared/tokenRefresh.js +0 -41
|
@@ -1,45 +1,26 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { AuthError } from "runline";
|
|
3
|
+
import { credentialRequest, pathSegment } from "../../_shared/credentials.js";
|
|
4
|
+
import { arr, num, numOrNull, obj, pick } from "../../_shared/provider.js";
|
|
5
|
+
import { CONSUMER, clientHeaders, RESTAURANT, woltCredential, } from "./credentials.js";
|
|
6
|
+
import { answerOf, endpointOf } from "./public.js";
|
|
7
|
+
export { AUTH, CONSUMER, clientHeaders, RESTAURANT, } from "./credentials.js";
|
|
8
|
+
export { http, WoltError } from "./public.js";
|
|
5
9
|
export { arr, num, numOrNull, obj, pick };
|
|
6
10
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* the
|
|
11
|
-
* API only accepts the authed calls from a client that looks like the phone.
|
|
11
|
+
* The Wolt consumer surface. Catalogue reads are anonymous and go out as
|
|
12
|
+
* the web app (public.ts); everything authenticated goes out as the mobile
|
|
13
|
+
* app, signed through the declared credential, because the API only
|
|
14
|
+
* accepts the authed calls from a client that looks like the phone.
|
|
12
15
|
*/
|
|
13
|
-
export const RESTAURANT = "restaurant-api.wolt.com";
|
|
14
|
-
export const CONSUMER = "consumer-api.wolt.com";
|
|
15
|
-
export const AUTH = "authentication.wolt.com";
|
|
16
16
|
export const DEF_LAT = 32.0853;
|
|
17
17
|
export const DEF_LON = 34.7818; // TLV
|
|
18
18
|
export const AUDIENCE = "restaurant-api";
|
|
19
19
|
export const CAPABILITIES = "access_confirmation";
|
|
20
|
-
const MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
|
|
21
20
|
const DEFAULT_TOKEN_TTL_MS = 3_600_000;
|
|
22
|
-
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";
|
|
23
|
-
/** Mobile client headers; the authed endpoints reject anything that is not the app. */
|
|
24
|
-
const MOBILE = {
|
|
25
|
-
"app-language": "en",
|
|
26
|
-
"app-locale": "en-US",
|
|
27
|
-
"client-version": "26.30.4",
|
|
28
|
-
clientversionnumber: "142026304",
|
|
29
|
-
platform: "Android",
|
|
30
|
-
"user-agent": "Wolt/26.30.4; Build/142026304; Android/16; Google sdk_gphone",
|
|
31
|
-
};
|
|
32
|
-
const WEB = {
|
|
33
|
-
"user-agent": WEB_UA,
|
|
34
|
-
"accept-language": "en",
|
|
35
|
-
"app-language": "en",
|
|
36
|
-
platform: "Web",
|
|
37
|
-
"client-version": "1.16.125",
|
|
38
|
-
origin: "https://wolt.com",
|
|
39
|
-
referer: "https://wolt.com/",
|
|
40
|
-
};
|
|
41
21
|
export const cfgOf = (ctx) => (ctx.connection.config || {});
|
|
42
|
-
|
|
22
|
+
/** A configured or caller-supplied value as one path segment; surrounding whitespace is not part of it. */
|
|
23
|
+
export const seg = (value) => pathSegment(String(value ?? "").trim());
|
|
43
24
|
/**
|
|
44
25
|
* Normalize a phone to E.164 for Wolt, so a number given the local Israeli way
|
|
45
26
|
* still routes. Handles intl "+972…"/"00972…", national "0500000000", and bare
|
|
@@ -58,77 +39,6 @@ export function normPhone(input) {
|
|
|
58
39
|
export const formEncode = (body) => Object.entries(body)
|
|
59
40
|
.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v ?? ""))}`)
|
|
60
41
|
.join("&");
|
|
61
|
-
/**
|
|
62
|
-
* A failed request.
|
|
63
|
-
*
|
|
64
|
-
* The body stays private. Wolt puts meaningful data in its 4xx bodies — the
|
|
65
|
-
* login escalation token, `error_code` — so the login flow needs to read it,
|
|
66
|
-
* but those same bodies carry access and refresh tokens. `details()` is the
|
|
67
|
-
* only way in, and the message never contains any of it.
|
|
68
|
-
*/
|
|
69
|
-
export class WoltError extends Error {
|
|
70
|
-
status;
|
|
71
|
-
endpoint;
|
|
72
|
-
#body;
|
|
73
|
-
constructor(status, endpoint, body) {
|
|
74
|
-
const retired = status === 410 ? " (endpoint retired by Wolt)" : "";
|
|
75
|
-
super(`wolt: request failed (HTTP ${status})${retired} on ${endpoint}`);
|
|
76
|
-
this.name = "WoltError";
|
|
77
|
-
this.status = status;
|
|
78
|
-
this.endpoint = endpoint;
|
|
79
|
-
this.#body = body;
|
|
80
|
-
}
|
|
81
|
-
/** The parsed body, for the branches that must read it. Never logged. */
|
|
82
|
-
details() {
|
|
83
|
-
try {
|
|
84
|
-
return obj(JSON.parse(this.#body));
|
|
85
|
-
}
|
|
86
|
-
catch {
|
|
87
|
-
return {};
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function endpointOf(host, path) {
|
|
92
|
-
return `${host}${path.split("?")[0]}`;
|
|
93
|
-
}
|
|
94
|
-
export async function http(host, path, opts = {}) {
|
|
95
|
-
const endpoint = endpointOf(host, path);
|
|
96
|
-
const text = await httpText(host, path, opts);
|
|
97
|
-
// Wolt answers 200 with nothing at all on endpoints it has retired.
|
|
98
|
-
if (!text.trim())
|
|
99
|
-
throw new Error(`wolt: ${endpoint} returned an empty body (endpoint retired)`);
|
|
100
|
-
try {
|
|
101
|
-
return obj(JSON.parse(text));
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
throw new Error(`wolt: non-JSON response from ${endpoint}`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
async function httpText(host, path, opts = {}) {
|
|
108
|
-
const { method = "GET", body = null, headers = {}, web = true } = opts;
|
|
109
|
-
const payload = body == null
|
|
110
|
-
? null
|
|
111
|
-
: typeof body === "string"
|
|
112
|
-
? body
|
|
113
|
-
: JSON.stringify(body);
|
|
114
|
-
const merged = {
|
|
115
|
-
...(web ? WEB : {}),
|
|
116
|
-
accept: "application/json",
|
|
117
|
-
...headers,
|
|
118
|
-
};
|
|
119
|
-
if (payload && !merged["content-type"])
|
|
120
|
-
merged["content-type"] = "application/json";
|
|
121
|
-
const endpoint = endpointOf(host, path);
|
|
122
|
-
const res = await authedFetch(`https://${host}${path}`, {
|
|
123
|
-
method,
|
|
124
|
-
headers: merged,
|
|
125
|
-
body: payload,
|
|
126
|
-
});
|
|
127
|
-
const text = await readBounded(res, MAX_RESPONSE_BYTES, `wolt: response exceeded the size limit on ${endpoint}`);
|
|
128
|
-
if (res.status >= 400)
|
|
129
|
-
throw new WoltError(res.status, endpoint, text);
|
|
130
|
-
return text;
|
|
131
|
-
}
|
|
132
42
|
// ---------- identity ----------
|
|
133
43
|
const ravelinDeviceId = () => `rvnand-6-${(randomUUID() + randomUUID()).replace(/-/g, "").toUpperCase().slice(0, 64)}`;
|
|
134
44
|
const hex32 = () => (randomUUID() + randomUUID()).replace(/-/g, "").slice(0, 32);
|
|
@@ -151,68 +61,49 @@ export async function ensureIdentity(ctx) {
|
|
|
151
61
|
await ctx.updateConnection(patch);
|
|
152
62
|
return cfgOf(ctx);
|
|
153
63
|
}
|
|
154
|
-
/** Headers every authenticated or login call carries. */
|
|
155
|
-
export function clientHeaders(cfg) {
|
|
156
|
-
return {
|
|
157
|
-
...MOBILE,
|
|
158
|
-
"w-wolt-session-id": cfg.woltSessionId ?? randomUUID(),
|
|
159
|
-
"x-wolt-visitor-id": cfg.visitorId ?? randomUUID(),
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
64
|
// ---------- credentials ----------
|
|
163
65
|
export function expiresAt(expiresIn) {
|
|
164
66
|
const seconds = numOrNull(expiresIn);
|
|
165
67
|
return Date.now() + (seconds ? seconds * 1000 : DEFAULT_TOKEN_TTL_MS);
|
|
166
68
|
}
|
|
167
69
|
/**
|
|
168
|
-
*
|
|
169
|
-
*
|
|
70
|
+
* What a failed renewal means to the owner: no stored login, or a refresh
|
|
71
|
+
* token Wolt no longer honours — both mended by the owner login.
|
|
170
72
|
*/
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
...clientHeaders(cfg),
|
|
182
|
-
"content-type": "application/x-www-form-urlencoded",
|
|
183
|
-
},
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
export async function accessToken(ctx, force = false) {
|
|
187
|
-
const cfg = await ensureIdentity(ctx);
|
|
188
|
-
if (!cfg.refreshToken)
|
|
189
|
-
throw new Error("wolt: not connected — run the owner login (account.requestEmailCode / account.requestSmsCode / account.redeemLink)");
|
|
190
|
-
// Renewal runs under the store's update ownership, so parallel actions
|
|
191
|
-
// coalesce onto one grant. Wolt rotates the refresh token on every grant, so
|
|
192
|
-
// a race would persist one the provider has already replaced.
|
|
193
|
-
return coordinatedAccessToken(ctx, async (current) => {
|
|
194
|
-
const resp = await refreshGrant(current);
|
|
195
|
-
const issued = pick(resp.access_token);
|
|
196
|
-
if (!issued)
|
|
197
|
-
throw new Error("wolt: token refresh returned no access_token — the refresh token has expired, re-run the owner login");
|
|
198
|
-
const rotated = pick(resp.refresh_token);
|
|
199
|
-
return {
|
|
200
|
-
accessToken: issued,
|
|
201
|
-
accessTokenExpiresAt: expiresAt(resp.expires_in),
|
|
202
|
-
...(rotated ? { refreshToken: rotated } : {}),
|
|
203
|
-
};
|
|
204
|
-
}, force);
|
|
73
|
+
function sessionError(error) {
|
|
74
|
+
if (!(error instanceof AuthError))
|
|
75
|
+
return error;
|
|
76
|
+
if (error.code === "invalid_credentials")
|
|
77
|
+
return new Error("wolt: not connected — run the owner login (account.requestEmailCode / account.requestSmsCode / account.redeemLink)");
|
|
78
|
+
if (error.code === "reconnect_required" ||
|
|
79
|
+
(error.code === "provider_rejected" &&
|
|
80
|
+
(error.status === 400 || error.status === 401)))
|
|
81
|
+
return new Error("wolt: the refresh token has expired — re-run the owner login");
|
|
82
|
+
return error;
|
|
205
83
|
}
|
|
84
|
+
/** Wolt's signed APIs, by the target each is declared as. */
|
|
85
|
+
const TARGETS = {
|
|
86
|
+
[RESTAURANT]: "restaurant",
|
|
87
|
+
[CONSUMER]: "consumer",
|
|
88
|
+
};
|
|
89
|
+
/** A call as the mobile app, signed with the session's access token and renewed on demand. */
|
|
206
90
|
export async function authed(ctx, host, path, opts = {}) {
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
91
|
+
const target = Object.hasOwn(TARGETS, host) ? TARGETS[host] : undefined;
|
|
92
|
+
if (!target)
|
|
93
|
+
throw new AuthError("request_not_allowed");
|
|
94
|
+
const cfg = await ensureIdentity(ctx);
|
|
95
|
+
let res;
|
|
96
|
+
try {
|
|
97
|
+
res = await credentialRequest(ctx, woltCredential, {
|
|
98
|
+
target,
|
|
99
|
+
path: path.replace(/^\//, ""),
|
|
100
|
+
method: opts.method ?? "GET",
|
|
101
|
+
headers: clientHeaders(cfg),
|
|
102
|
+
...(opts.body == null ? {} : { json: opts.body }),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
throw sessionError(error);
|
|
107
|
+
}
|
|
108
|
+
return answerOf(res.status, endpointOf(host, path), await res.text());
|
|
218
109
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { httpsBase, staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
/**
|
|
3
|
+
* The store's consumer key and secret as a Basic pair, beneath the
|
|
4
|
+
* connection's own store URL. The store must be HTTPS.
|
|
5
|
+
*/
|
|
6
|
+
export const woocommerceCredential = staticCredential({
|
|
7
|
+
id: "woocommerce",
|
|
8
|
+
auth: { kind: "basic" },
|
|
9
|
+
local: { username: "consumerKey", password: "consumerSecret" },
|
|
10
|
+
targets: (config) => ({
|
|
11
|
+
api: {
|
|
12
|
+
baseUrl: httpsBase(config.url, "wp-json/wc/v3/"),
|
|
13
|
+
methods: ["GET", "POST", "PUT", "DELETE"],
|
|
14
|
+
},
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
@@ -1,40 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
async function apiRequest(conn, method, endpoint, body, qs) {
|
|
10
|
-
const url = new URL(`${conn.url}/wp-json/wc/v3${endpoint}`);
|
|
11
|
-
if (qs) {
|
|
12
|
-
for (const [k, v] of Object.entries(qs)) {
|
|
13
|
-
if (v !== undefined && v !== null)
|
|
14
|
-
url.searchParams.set(k, String(v));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
const init = {
|
|
1
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
2
|
+
import { woocommerceCredential } from "./credentials.js";
|
|
3
|
+
function apiRequest(ctx, method, path, body, qs) {
|
|
4
|
+
return credentialJson(ctx, woocommerceCredential, "woocommerce", {
|
|
5
|
+
target: "api",
|
|
6
|
+
path,
|
|
18
7
|
method,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
if (body && Object.keys(body).length > 0)
|
|
25
|
-
init.body = JSON.stringify(body);
|
|
26
|
-
const res = await fetch(url.toString(), init);
|
|
27
|
-
if (!res.ok)
|
|
28
|
-
throw new Error(`WooCommerce error ${res.status}: ${await res.text()}`);
|
|
29
|
-
return res.json();
|
|
8
|
+
query: qs,
|
|
9
|
+
...(body && Object.keys(body).length > 0 ? { json: body } : {}),
|
|
10
|
+
});
|
|
30
11
|
}
|
|
31
|
-
function registerCrud(rl, resource, plural,
|
|
12
|
+
function registerCrud(rl, resource, plural, createSchema) {
|
|
32
13
|
rl.registerAction(`${resource}.create`, {
|
|
33
14
|
access: "write",
|
|
34
15
|
description: `Create a ${resource}`,
|
|
35
16
|
inputSchema: createSchema,
|
|
36
17
|
async execute(input, ctx) {
|
|
37
|
-
return apiRequest(
|
|
18
|
+
return apiRequest(ctx, "POST", plural, input);
|
|
38
19
|
},
|
|
39
20
|
});
|
|
40
21
|
rl.registerAction(`${resource}.get`, {
|
|
@@ -42,7 +23,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
|
|
|
42
23
|
description: `Get a ${resource} by ID`,
|
|
43
24
|
inputSchema: { id: { type: "string", required: true } },
|
|
44
25
|
async execute(input, ctx) {
|
|
45
|
-
return apiRequest(
|
|
26
|
+
return apiRequest(ctx, "GET", `${plural}/${pathSegment(input.id)}`);
|
|
46
27
|
},
|
|
47
28
|
});
|
|
48
29
|
rl.registerAction(`${resource}.list`, {
|
|
@@ -62,7 +43,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
|
|
|
62
43
|
qs.search = p.search;
|
|
63
44
|
if (p.status)
|
|
64
45
|
qs.status = p.status;
|
|
65
|
-
return apiRequest(
|
|
46
|
+
return apiRequest(ctx, "GET", plural, undefined, qs);
|
|
66
47
|
},
|
|
67
48
|
});
|
|
68
49
|
rl.registerAction(`${resource}.update`, {
|
|
@@ -74,7 +55,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
|
|
|
74
55
|
},
|
|
75
56
|
async execute(input, ctx) {
|
|
76
57
|
const p = input;
|
|
77
|
-
return apiRequest(
|
|
58
|
+
return apiRequest(ctx, "PUT", `${plural}/${pathSegment(p.id)}`, p.data);
|
|
78
59
|
},
|
|
79
60
|
});
|
|
80
61
|
rl.registerAction(`${resource}.delete`, {
|
|
@@ -82,13 +63,14 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
|
|
|
82
63
|
description: `Delete a ${resource}`,
|
|
83
64
|
inputSchema: { id: { type: "string", required: true } },
|
|
84
65
|
async execute(input, ctx) {
|
|
85
|
-
return apiRequest(
|
|
66
|
+
return apiRequest(ctx, "DELETE", `${plural}/${pathSegment(input.id)}`, undefined, { force: "true" });
|
|
86
67
|
},
|
|
87
68
|
});
|
|
88
69
|
}
|
|
89
70
|
export default function woocommerce(rl) {
|
|
90
71
|
rl.setName("woocommerce");
|
|
91
72
|
rl.setVersion("0.1.0");
|
|
73
|
+
rl.setCredential(woocommerceCredential);
|
|
92
74
|
rl.setConnectionSchema({
|
|
93
75
|
url: {
|
|
94
76
|
type: "string",
|
|
@@ -109,7 +91,7 @@ export default function woocommerce(rl) {
|
|
|
109
91
|
env: "WOOCOMMERCE_CONSUMER_SECRET",
|
|
110
92
|
},
|
|
111
93
|
});
|
|
112
|
-
registerCrud(rl, "product", "products",
|
|
94
|
+
registerCrud(rl, "product", "products", {
|
|
113
95
|
name: { type: "string", required: true },
|
|
114
96
|
type: {
|
|
115
97
|
type: "string",
|
|
@@ -120,7 +102,7 @@ export default function woocommerce(rl) {
|
|
|
120
102
|
description: { type: "string", required: false },
|
|
121
103
|
sku: { type: "string", required: false },
|
|
122
104
|
});
|
|
123
|
-
registerCrud(rl, "order", "orders",
|
|
105
|
+
registerCrud(rl, "order", "orders", {
|
|
124
106
|
status: {
|
|
125
107
|
type: "string",
|
|
126
108
|
required: false,
|
|
@@ -134,7 +116,7 @@ export default function woocommerce(rl) {
|
|
|
134
116
|
},
|
|
135
117
|
payment_method: { type: "string", required: false },
|
|
136
118
|
});
|
|
137
|
-
registerCrud(rl, "customer", "customers",
|
|
119
|
+
registerCrud(rl, "customer", "customers", {
|
|
138
120
|
email: { type: "string", required: true },
|
|
139
121
|
first_name: { type: "string", required: false },
|
|
140
122
|
last_name: { type: "string", required: false },
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { httpsBase, staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
/**
|
|
3
|
+
* A user's application password as the Basic pair, on the connection's own
|
|
4
|
+
* site beneath /wp-json/wp/v2/.
|
|
5
|
+
*/
|
|
6
|
+
export const wordpressCredential = staticCredential({
|
|
7
|
+
id: "wordpress",
|
|
8
|
+
auth: { kind: "basic" },
|
|
9
|
+
local: { username: "username", password: "password" },
|
|
10
|
+
targets: (config) => ({
|
|
11
|
+
api: {
|
|
12
|
+
baseUrl: httpsBase(config.url, "wp-json/wp/v2/"),
|
|
13
|
+
methods: ["GET", "POST", "DELETE"],
|
|
14
|
+
},
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
@@ -1,35 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
async function apiRequest(conn, method, endpoint, body, qs) {
|
|
10
|
-
const url = new URL(`${conn.url}/wp-json/wp/v2${endpoint}`);
|
|
11
|
-
if (qs) {
|
|
12
|
-
for (const [k, v] of Object.entries(qs)) {
|
|
13
|
-
if (v !== undefined && v !== null)
|
|
14
|
-
url.searchParams.set(k, String(v));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
const init = {
|
|
1
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
2
|
+
import { wordpressCredential } from "./credentials.js";
|
|
3
|
+
async function apiRequest(ctx, method, path, body, qs) {
|
|
4
|
+
return credentialJson(ctx, wordpressCredential, "wordpress", {
|
|
5
|
+
target: "api",
|
|
6
|
+
path,
|
|
18
7
|
method,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Accept: "application/json",
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
if (body && Object.keys(body).length > 0)
|
|
26
|
-
init.body = JSON.stringify(body);
|
|
27
|
-
const res = await fetch(url.toString(), init);
|
|
28
|
-
if (!res.ok)
|
|
29
|
-
throw new Error(`WordPress error ${res.status}: ${await res.text()}`);
|
|
30
|
-
return res.json();
|
|
8
|
+
query: qs,
|
|
9
|
+
...(body && Object.keys(body).length > 0 ? { json: body } : {}),
|
|
10
|
+
});
|
|
31
11
|
}
|
|
32
|
-
function registerContentCrud(rl, resource, plural
|
|
12
|
+
function registerContentCrud(rl, resource, plural) {
|
|
33
13
|
rl.registerAction(`${resource}.create`, {
|
|
34
14
|
access: "write",
|
|
35
15
|
description: `Create a ${resource}`,
|
|
@@ -44,7 +24,7 @@ function registerContentCrud(rl, resource, plural, conn) {
|
|
|
44
24
|
slug: { type: "string", required: false },
|
|
45
25
|
},
|
|
46
26
|
async execute(input, ctx) {
|
|
47
|
-
return apiRequest(
|
|
27
|
+
return apiRequest(ctx, "POST", plural, input);
|
|
48
28
|
},
|
|
49
29
|
});
|
|
50
30
|
rl.registerAction(`${resource}.get`, {
|
|
@@ -52,7 +32,7 @@ function registerContentCrud(rl, resource, plural, conn) {
|
|
|
52
32
|
description: `Get a ${resource} by ID`,
|
|
53
33
|
inputSchema: { id: { type: "string", required: true } },
|
|
54
34
|
async execute(input, ctx) {
|
|
55
|
-
return apiRequest(
|
|
35
|
+
return apiRequest(ctx, "GET", `${plural}/${pathSegment(input.id)}`);
|
|
56
36
|
},
|
|
57
37
|
});
|
|
58
38
|
rl.registerAction(`${resource}.list`, {
|
|
@@ -75,7 +55,7 @@ function registerContentCrud(rl, resource, plural, conn) {
|
|
|
75
55
|
qs.status = p.status;
|
|
76
56
|
if (p.orderby)
|
|
77
57
|
qs.orderby = p.orderby;
|
|
78
|
-
return apiRequest(
|
|
58
|
+
return apiRequest(ctx, "GET", plural, undefined, qs);
|
|
79
59
|
},
|
|
80
60
|
});
|
|
81
61
|
rl.registerAction(`${resource}.update`, {
|
|
@@ -90,7 +70,7 @@ function registerContentCrud(rl, resource, plural, conn) {
|
|
|
90
70
|
},
|
|
91
71
|
async execute(input, ctx) {
|
|
92
72
|
const { id, ...fields } = input;
|
|
93
|
-
return apiRequest(
|
|
73
|
+
return apiRequest(ctx, "POST", `${plural}/${pathSegment(id)}`, fields);
|
|
94
74
|
},
|
|
95
75
|
});
|
|
96
76
|
rl.registerAction(`${resource}.delete`, {
|
|
@@ -105,13 +85,14 @@ function registerContentCrud(rl, resource, plural, conn) {
|
|
|
105
85
|
const qs = {};
|
|
106
86
|
if (p.force)
|
|
107
87
|
qs.force = "true";
|
|
108
|
-
return apiRequest(
|
|
88
|
+
return apiRequest(ctx, "DELETE", `${plural}/${pathSegment(p.id)}`, undefined, qs);
|
|
109
89
|
},
|
|
110
90
|
});
|
|
111
91
|
}
|
|
112
92
|
export default function wordpress(rl) {
|
|
113
93
|
rl.setName("wordpress");
|
|
114
94
|
rl.setVersion("0.1.0");
|
|
95
|
+
rl.setCredential(wordpressCredential);
|
|
115
96
|
rl.setConnectionSchema({
|
|
116
97
|
url: {
|
|
117
98
|
type: "string",
|
|
@@ -132,8 +113,8 @@ export default function wordpress(rl) {
|
|
|
132
113
|
env: "WORDPRESS_PASSWORD",
|
|
133
114
|
},
|
|
134
115
|
});
|
|
135
|
-
registerContentCrud(rl, "post", "posts"
|
|
136
|
-
registerContentCrud(rl, "page", "pages"
|
|
116
|
+
registerContentCrud(rl, "post", "posts");
|
|
117
|
+
registerContentCrud(rl, "page", "pages");
|
|
137
118
|
// ── User ────────────────────────────────────────────
|
|
138
119
|
rl.registerAction("user.create", {
|
|
139
120
|
access: "write",
|
|
@@ -145,7 +126,7 @@ export default function wordpress(rl) {
|
|
|
145
126
|
name: { type: "string", required: false },
|
|
146
127
|
},
|
|
147
128
|
async execute(input, ctx) {
|
|
148
|
-
return apiRequest(
|
|
129
|
+
return apiRequest(ctx, "POST", "users", input);
|
|
149
130
|
},
|
|
150
131
|
});
|
|
151
132
|
rl.registerAction("user.get", {
|
|
@@ -153,7 +134,7 @@ export default function wordpress(rl) {
|
|
|
153
134
|
description: "Get a user by ID",
|
|
154
135
|
inputSchema: { id: { type: "string", required: true } },
|
|
155
136
|
async execute(input, ctx) {
|
|
156
|
-
return apiRequest(
|
|
137
|
+
return apiRequest(ctx, "GET", `users/${pathSegment(input.id)}`);
|
|
157
138
|
},
|
|
158
139
|
});
|
|
159
140
|
rl.registerAction("user.list", {
|
|
@@ -170,7 +151,7 @@ export default function wordpress(rl) {
|
|
|
170
151
|
qs.per_page = p.limit;
|
|
171
152
|
if (p.search)
|
|
172
153
|
qs.search = p.search;
|
|
173
|
-
return apiRequest(
|
|
154
|
+
return apiRequest(ctx, "GET", "users", undefined, qs);
|
|
174
155
|
},
|
|
175
156
|
});
|
|
176
157
|
rl.registerAction("user.update", {
|
|
@@ -184,7 +165,7 @@ export default function wordpress(rl) {
|
|
|
184
165
|
},
|
|
185
166
|
async execute(input, ctx) {
|
|
186
167
|
const { id, ...fields } = input;
|
|
187
|
-
return apiRequest(
|
|
168
|
+
return apiRequest(ctx, "POST", `users/${pathSegment(id)}`, fields);
|
|
188
169
|
},
|
|
189
170
|
});
|
|
190
171
|
rl.registerAction("user.delete", {
|
|
@@ -198,7 +179,7 @@ export default function wordpress(rl) {
|
|
|
198
179
|
},
|
|
199
180
|
},
|
|
200
181
|
async execute(input, ctx) {
|
|
201
|
-
return apiRequest(
|
|
182
|
+
return apiRequest(ctx, "DELETE", "users/me", undefined, {
|
|
202
183
|
reassign: input.reassign,
|
|
203
184
|
force: "true",
|
|
204
185
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
/** An API key, sent as a bearer to xAI's one API origin. */
|
|
3
|
+
export const xaiCredential = staticCredential({
|
|
4
|
+
id: "xai",
|
|
5
|
+
auth: { kind: "bearer" },
|
|
6
|
+
local: { secret: "apiKey" },
|
|
7
|
+
targets: {
|
|
8
|
+
api: {
|
|
9
|
+
baseUrl: "https://api.x.ai/v1/",
|
|
10
|
+
methods: ["POST"],
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
});
|