mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
3c4d71aeca
Summary: See https://grist.quip.com/VKd3ASF99ezD/Outgoing-Webhooks - 2 new DocApi endpoints: _subscribe and _unsubscribe, not meant to be user friendly or publicly documented. _unsubscribe should be given the response from _subscribe in the body, e.g: ``` $ curl -X POST -H "Authorization: Bearer 8fd4dc59ecb05ab29ae5a183c03101319b8e6ca9" "http://localhost:8080/api/docs/6WYa23FqWxGNe3AR6DLjCJ/tables/Table2/_subscribe" -H "Content-type: application/json" -d '{"url": "https://webhook.site/a916b526-8afc-46e6-aa8f-a625d0d83ec3", "eventTypes": ["add"], "isReadyColumn": "C"}' {"unsubscribeKey":"3246f158-55b5-4fc7-baa5-093b75ffa86c","triggerId":2,"webhookId":"853b4bfa-9d39-4639-aa33-7d45354903c0"} $ curl -X POST -H "Authorization: Bearer 8fd4dc59ecb05ab29ae5a183c03101319b8e6ca9" "http://localhost:8080/api/docs/6WYa23FqWxGNe3AR6DLjCJ/tables/Table2/_unsubscribe" -H "Content-type: application/json" -d '{"unsubscribeKey":"3246f158-55b5-4fc7-baa5-093b75ffa86c","triggerId":2,"webhookId":"853b4bfa-9d39-4639-aa33-7d45354903c0"}' {"success":true} ``` - New DB entity Secret to hold the webhook URL and unsubscribe key - New document metatable _grist_Triggers subscribes to table changes and points to a secret to use for a webhook - New file Triggers.ts processes action summaries and uses the two new tables to send webhooks. - Also went on a bit of a diversion and made a typesafe subclass of TableData for metatables. I think this is essentially good enough for a first diff, to keep the diffs manageable and to talk about the overall structure. Future diffs can add tests and more robustness using redis etc. After this diff I can also start building the Zapier integration privately. Test Plan: Tested manually: see curl commands in summary for an example. Payloads can be seen in https://webhook.site/#!/a916b526-8afc-46e6-aa8f-a625d0d83ec3/0b9fe335-33f7-49fe-b90b-2db5ba53382d/1 . Great site for testing webhooks btw. Reviewers: dsagal, paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D3019 |
||
---|---|---|
.. | ||
ACLPermissions.ts | ||
ACLRuleCollection.ts | ||
ActionBundle.ts | ||
ActionDispatcher.ts | ||
ActionGroup.ts | ||
ActionRouter.ts | ||
ActionSummary.ts | ||
ActiveDocAPI.ts | ||
ApiError.ts | ||
arrayToString.ts | ||
AsyncCreate.ts | ||
AsyncFlow.ts | ||
BaseAPI.ts | ||
BasketClientAPI.ts | ||
BigInt.ts | ||
BillingAPI.ts | ||
BinaryIndexedTree.js | ||
BrowserSettings.ts | ||
ColumnFilterFunc.ts | ||
ColumnGetters.ts | ||
csvFormat.ts | ||
declarations.d.ts | ||
delay.ts | ||
DisposableWithEvents.ts | ||
DocActions.ts | ||
DocData.ts | ||
DocListAPI.ts | ||
DocSnapshot.ts | ||
DocumentSettings.ts | ||
emails.ts | ||
EncActionBundle.ts | ||
ErrorWithCode.ts | ||
Features.ts | ||
FilterState.ts | ||
Formula.ts | ||
GranularAccessClause.ts | ||
GristServerAPI.ts | ||
gristTypes.ts | ||
gristUrls.ts | ||
gutil.ts | ||
InactivityTimer.ts | ||
KeyedMutex.ts | ||
KeyedOps.ts | ||
Locales.ts | ||
LoginSessionAPI.ts | ||
LoginState.ts | ||
marshal.ts | ||
MemBuffer.js | ||
NumberFormat.ts | ||
orgNameUtils.ts | ||
parseDate.ts | ||
plugin.ts | ||
PluginInstance.ts | ||
Prefs.ts | ||
RefCountMap.ts | ||
resetOrg.ts | ||
roles.ts | ||
RowFilterFunc.ts | ||
schema.ts | ||
sharing.ts | ||
SortFunc.ts | ||
StringUnion.ts | ||
TableData.ts | ||
TabularDiff.ts | ||
tbind.ts | ||
TestState.ts | ||
timeFormat.ts | ||
tpromisified.ts | ||
tsconfig.json | ||
tsvFormat.ts | ||
uploads.ts | ||
urlUtils.ts | ||
UserAPI.ts | ||
UserConfig.ts | ||
ValueFormatter.ts |