patchwork-os 0.2.0-beta.9.canary.90 → 0.2.0-beta.9.canary.92
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/connectors/airtable.d.ts +130 -8
- package/dist/connectors/airtable.js +322 -18
- package/dist/connectors/airtable.js.map +1 -1
- package/dist/connectors/caldiy.d.ts +137 -0
- package/dist/connectors/caldiy.js +424 -0
- package/dist/connectors/caldiy.js.map +1 -0
- package/dist/connectors/circleci.d.ts +162 -0
- package/dist/connectors/circleci.js +576 -0
- package/dist/connectors/circleci.js.map +1 -0
- package/dist/connectors/cloudflare.d.ts +132 -0
- package/dist/connectors/cloudflare.js +622 -0
- package/dist/connectors/cloudflare.js.map +1 -0
- package/dist/connectors/connectorRegistry.js +79 -0
- package/dist/connectors/connectorRegistry.js.map +1 -1
- package/dist/connectors/gmail.js +14 -0
- package/dist/connectors/gmail.js.map +1 -1
- package/dist/connectors/grafana.d.ts +133 -0
- package/dist/connectors/grafana.js +478 -0
- package/dist/connectors/grafana.js.map +1 -0
- package/dist/connectors/monday.d.ts +62 -1
- package/dist/connectors/monday.js +131 -1
- package/dist/connectors/monday.js.map +1 -1
- package/dist/connectors/obsidian.d.ts +83 -0
- package/dist/connectors/obsidian.js +441 -0
- package/dist/connectors/obsidian.js.map +1 -0
- package/dist/connectors/paystack.d.ts +159 -0
- package/dist/connectors/paystack.js +607 -0
- package/dist/connectors/paystack.js.map +1 -0
- package/dist/connectors/pipedrive.d.ts +189 -0
- package/dist/connectors/pipedrive.js +559 -0
- package/dist/connectors/pipedrive.js.map +1 -0
- package/dist/connectors/posthog.d.ts +119 -0
- package/dist/connectors/posthog.js +479 -0
- package/dist/connectors/posthog.js.map +1 -0
- package/dist/connectors/resend.d.ts +131 -0
- package/dist/connectors/resend.js +529 -0
- package/dist/connectors/resend.js.map +1 -0
- package/dist/connectors/supabase.d.ts +92 -0
- package/dist/connectors/supabase.js +630 -0
- package/dist/connectors/supabase.js.map +1 -0
- package/dist/connectors/todoist.d.ts +117 -0
- package/dist/connectors/todoist.js +485 -0
- package/dist/connectors/todoist.js.map +1 -0
- package/dist/connectors/vercel.d.ts +110 -0
- package/dist/connectors/vercel.js +479 -0
- package/dist/connectors/vercel.js.map +1 -0
- package/dist/connectors/woocommerce.d.ts +220 -0
- package/dist/connectors/woocommerce.js +464 -0
- package/dist/connectors/woocommerce.js.map +1 -0
- package/dist/recipeRoutes.js +8 -2
- package/dist/recipeRoutes.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,24 +1,77 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Airtable connector — record access via the Airtable REST API v0.
|
|
3
3
|
*
|
|
4
|
-
* Auth: Personal Access Token (PAT)
|
|
5
|
-
* start with `pat...`.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Auth: Personal Access Token (PAT) or OAuth 2.0.
|
|
5
|
+
* PAT: `Authorization: Bearer <pat>`. PATs start with `pat...`.
|
|
6
|
+
* - Env var: AIRTABLE_ACCESS_TOKEN
|
|
7
|
+
* - Stored: getSecretJsonSync("airtable") → AirtableTokens
|
|
8
|
+
* OAuth 2.0:
|
|
9
|
+
* - Env vars: AIRTABLE_CLIENT_ID, AIRTABLE_CLIENT_SECRET
|
|
10
|
+
* - Token endpoint: https://airtable.com/oauth2/v1/token (HTTP Basic auth)
|
|
11
|
+
* - Stored: getSecretJsonSync("airtable") → AirtableOAuthTokens
|
|
8
12
|
*
|
|
9
13
|
* Tools: listBases, getBaseSchema, listRecords, getRecord, createRecord,
|
|
10
|
-
* updateRecord
|
|
11
|
-
*
|
|
14
|
+
* updateRecord, listWebhooks, createWebhook, deleteWebhook,
|
|
15
|
+
* getWebhookPayloads, refreshWebhook.
|
|
12
16
|
*
|
|
13
17
|
* Extends BaseConnector for unified auth, retry, rate-limit, error handling.
|
|
14
18
|
*/
|
|
15
|
-
import { type AuthContext, BaseConnector, type ConnectorError, type ConnectorStatus } from "./baseConnector.js";
|
|
19
|
+
import { type AuthContext, BaseConnector, type ConnectorError, type ConnectorStatus, type OAuthConfig } from "./baseConnector.js";
|
|
16
20
|
export interface AirtableTokens {
|
|
17
21
|
accessToken: string;
|
|
18
22
|
userId?: string;
|
|
19
23
|
email?: string;
|
|
20
24
|
connected_at: string;
|
|
21
25
|
}
|
|
26
|
+
/** OAuth 2.0 token set — stored when connector is authorized via OAuth flow. */
|
|
27
|
+
export interface AirtableOAuthTokens {
|
|
28
|
+
accessToken: string;
|
|
29
|
+
refreshToken: string;
|
|
30
|
+
expiresAt: string;
|
|
31
|
+
scopes: string[];
|
|
32
|
+
connected_at: string;
|
|
33
|
+
/** OAuth tokens are identified by this flag vs PAT tokens */
|
|
34
|
+
_oauth: true;
|
|
35
|
+
}
|
|
36
|
+
export interface AirtableWebhook {
|
|
37
|
+
id: string;
|
|
38
|
+
type?: string;
|
|
39
|
+
isHookEnabled: boolean;
|
|
40
|
+
notificationUrl?: string | null;
|
|
41
|
+
cursorForNextPayload?: number;
|
|
42
|
+
areNotificationsEnabled?: boolean;
|
|
43
|
+
expirationTime?: string | null;
|
|
44
|
+
specification?: {
|
|
45
|
+
options?: {
|
|
46
|
+
filters?: {
|
|
47
|
+
fromSources?: string[];
|
|
48
|
+
dataTypes?: string[];
|
|
49
|
+
changeTypes?: string[];
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export interface AirtableWebhookCreateResult {
|
|
55
|
+
id: string;
|
|
56
|
+
macSecretBase64: string;
|
|
57
|
+
expirationTime?: string | null;
|
|
58
|
+
}
|
|
59
|
+
export interface AirtableWebhookPayload {
|
|
60
|
+
timestamp: string;
|
|
61
|
+
baseTransactionNumber: number;
|
|
62
|
+
actionMetadata?: {
|
|
63
|
+
source: string;
|
|
64
|
+
sourceMetadata?: Record<string, unknown>;
|
|
65
|
+
};
|
|
66
|
+
createdTablesById?: Record<string, unknown>;
|
|
67
|
+
destroyedTableIds?: string[];
|
|
68
|
+
changedTablesById?: Record<string, unknown>;
|
|
69
|
+
}
|
|
70
|
+
export interface AirtableWebhookPayloadsResult {
|
|
71
|
+
payloads: AirtableWebhookPayload[];
|
|
72
|
+
cursor: number;
|
|
73
|
+
mightHaveMore: boolean;
|
|
74
|
+
}
|
|
22
75
|
export interface AirtableBase {
|
|
23
76
|
id: string;
|
|
24
77
|
name: string;
|
|
@@ -68,8 +121,18 @@ export interface AirtableListRecordsParams {
|
|
|
68
121
|
export declare class AirtableConnector extends BaseConnector {
|
|
69
122
|
readonly providerName = "airtable";
|
|
70
123
|
private tokens;
|
|
71
|
-
protected getOAuthConfig(): null;
|
|
124
|
+
protected getOAuthConfig(): OAuthConfig | null;
|
|
72
125
|
authenticate(): Promise<AuthContext>;
|
|
126
|
+
/**
|
|
127
|
+
* Override base refreshToken() to use HTTP Basic auth for Airtable's token
|
|
128
|
+
* endpoint (clientId:clientSecret as Basic auth instead of body params).
|
|
129
|
+
*/
|
|
130
|
+
protected refreshToken(): Promise<AuthContext | null>;
|
|
131
|
+
/**
|
|
132
|
+
* Perform the actual Airtable OAuth token refresh using HTTP Basic auth.
|
|
133
|
+
* Airtable requires clientId:clientSecret as Basic auth on the token endpoint.
|
|
134
|
+
*/
|
|
135
|
+
private _oauthRefresh;
|
|
73
136
|
healthCheck(): Promise<{
|
|
74
137
|
ok: boolean;
|
|
75
138
|
error?: ConnectorError;
|
|
@@ -82,11 +145,70 @@ export declare class AirtableConnector extends BaseConnector {
|
|
|
82
145
|
getRecord(baseId: string, tableIdOrName: string, recordId: string): Promise<AirtableRecord>;
|
|
83
146
|
createRecord(baseId: string, tableIdOrName: string, fields: Record<string, unknown>): Promise<AirtableRecord>;
|
|
84
147
|
updateRecord(baseId: string, tableIdOrName: string, recordId: string, fields: Record<string, unknown>): Promise<AirtableRecord>;
|
|
148
|
+
/** GET /v0/bases/{baseId}/webhooks */
|
|
149
|
+
listWebhooks(baseId: string): Promise<AirtableWebhook[]>;
|
|
150
|
+
/**
|
|
151
|
+
* POST /v0/bases/{baseId}/webhooks
|
|
152
|
+
* Creates a webhook. Returns the webhook id, HMAC secret (base64), and
|
|
153
|
+
* expiration time. Store macSecretBase64 securely — it is only returned once.
|
|
154
|
+
*/
|
|
155
|
+
createWebhook(baseId: string, notificationUrl: string, specification?: {
|
|
156
|
+
filters?: {
|
|
157
|
+
fromSources?: string[];
|
|
158
|
+
dataTypes?: string[];
|
|
159
|
+
changeTypes?: string[];
|
|
160
|
+
};
|
|
161
|
+
}): Promise<AirtableWebhookCreateResult>;
|
|
162
|
+
/** DELETE /v0/bases/{baseId}/webhooks/{webhookId} */
|
|
163
|
+
deleteWebhook(baseId: string, webhookId: string): Promise<void>;
|
|
164
|
+
/**
|
|
165
|
+
* GET /v0/bases/{baseId}/webhooks/{webhookId}/payloads
|
|
166
|
+
* Retrieves queued payloads for a webhook. Pass cursor from previous call
|
|
167
|
+
* to page through results.
|
|
168
|
+
*/
|
|
169
|
+
getWebhookPayloads(baseId: string, webhookId: string, cursor?: number): Promise<AirtableWebhookPayloadsResult>;
|
|
170
|
+
/**
|
|
171
|
+
* POST /v0/bases/{baseId}/webhooks/{webhookId}/refresh
|
|
172
|
+
* Extends the webhook expiry by 7 days from now.
|
|
173
|
+
*/
|
|
174
|
+
refreshWebhook(baseId: string, webhookId: string): Promise<void>;
|
|
85
175
|
private buildHeaders;
|
|
86
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Load raw token blob from env / storage. Returns either AirtableTokens (PAT)
|
|
179
|
+
* or AirtableOAuthTokens (OAuth), or null when not connected.
|
|
180
|
+
*
|
|
181
|
+
* Priority:
|
|
182
|
+
* 1. AIRTABLE_ACCESS_TOKEN env var → synthetic PAT tokens
|
|
183
|
+
* 2. Stored token blob (may be PAT or OAuth)
|
|
184
|
+
*/
|
|
185
|
+
export declare function loadRawTokens(): AirtableTokens | AirtableOAuthTokens | null;
|
|
186
|
+
/**
|
|
187
|
+
* loadTokens returns PAT tokens for backward compatibility with existing code
|
|
188
|
+
* that expects AirtableTokens. Returns null for OAuth-only connections.
|
|
189
|
+
*/
|
|
87
190
|
export declare function loadTokens(): AirtableTokens | null;
|
|
88
191
|
export declare function saveTokens(tokens: AirtableTokens): void;
|
|
192
|
+
export declare function saveOAuthTokens(tokens: AirtableOAuthTokens): void;
|
|
89
193
|
export declare function clearTokens(): void;
|
|
194
|
+
/**
|
|
195
|
+
* Verify an incoming Airtable webhook request.
|
|
196
|
+
*
|
|
197
|
+
* Airtable signs webhook payloads with HMAC-SHA256 using the macSecretBase64
|
|
198
|
+
* returned at webhook creation time. The signature is hex-encoded and sent in
|
|
199
|
+
* the `X-Airtable-Content-MAC` header. The raw body (before JSON parsing) is
|
|
200
|
+
* used as the message.
|
|
201
|
+
*
|
|
202
|
+
* Additionally, `X-Airtable-Client-Secret` should equal the base64-decoded
|
|
203
|
+
* mac secret (raw bytes as a Latin-1/binary string) — but in practice most
|
|
204
|
+
* integrations only check the HMAC signature. This helper validates both.
|
|
205
|
+
*
|
|
206
|
+
* @param rawBody - Raw request body as a Buffer or string
|
|
207
|
+
* @param hmacHeader - Value of the `X-Airtable-Content-MAC` header (hex)
|
|
208
|
+
* @param macSecretBase64 - The macSecretBase64 returned by createWebhook()
|
|
209
|
+
* @returns true if the signature is valid
|
|
210
|
+
*/
|
|
211
|
+
export declare function verifyAirtableWebhook(rawBody: Buffer | string, hmacHeader: string, macSecretBase64: string): boolean;
|
|
90
212
|
export declare function getAirtableConnector(): AirtableConnector;
|
|
91
213
|
export { getAirtableConnector as airtable };
|
|
92
214
|
export interface ConnectorHandlerResult {
|
|
@@ -1,38 +1,157 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Airtable connector — record access via the Airtable REST API v0.
|
|
3
3
|
*
|
|
4
|
-
* Auth: Personal Access Token (PAT)
|
|
5
|
-
* start with `pat...`.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Auth: Personal Access Token (PAT) or OAuth 2.0.
|
|
5
|
+
* PAT: `Authorization: Bearer <pat>`. PATs start with `pat...`.
|
|
6
|
+
* - Env var: AIRTABLE_ACCESS_TOKEN
|
|
7
|
+
* - Stored: getSecretJsonSync("airtable") → AirtableTokens
|
|
8
|
+
* OAuth 2.0:
|
|
9
|
+
* - Env vars: AIRTABLE_CLIENT_ID, AIRTABLE_CLIENT_SECRET
|
|
10
|
+
* - Token endpoint: https://airtable.com/oauth2/v1/token (HTTP Basic auth)
|
|
11
|
+
* - Stored: getSecretJsonSync("airtable") → AirtableOAuthTokens
|
|
8
12
|
*
|
|
9
13
|
* Tools: listBases, getBaseSchema, listRecords, getRecord, createRecord,
|
|
10
|
-
* updateRecord
|
|
11
|
-
*
|
|
14
|
+
* updateRecord, listWebhooks, createWebhook, deleteWebhook,
|
|
15
|
+
* getWebhookPayloads, refreshWebhook.
|
|
12
16
|
*
|
|
13
17
|
* Extends BaseConnector for unified auth, retry, rate-limit, error handling.
|
|
14
18
|
*/
|
|
19
|
+
import crypto from "node:crypto";
|
|
15
20
|
import { BaseConnector, } from "./baseConnector.js";
|
|
16
21
|
import { deleteSecretJsonSync, getSecretJsonSync, storeSecretJsonSync, } from "./tokenStorage.js";
|
|
17
22
|
const BASE_URL = "https://api.airtable.com";
|
|
23
|
+
const OAUTH_TOKEN_ENDPOINT = "https://airtable.com/oauth2/v1/token";
|
|
24
|
+
const OAUTH_SCOPES = [
|
|
25
|
+
"data.records:read",
|
|
26
|
+
"data.records:write",
|
|
27
|
+
"schema.bases:read",
|
|
28
|
+
"webhook:manage",
|
|
29
|
+
];
|
|
18
30
|
const MAX_RECORDS_HARD_CAP = 1000;
|
|
19
31
|
export class AirtableConnector extends BaseConnector {
|
|
20
32
|
providerName = "airtable";
|
|
21
33
|
tokens = null;
|
|
22
34
|
getOAuthConfig() {
|
|
23
|
-
|
|
35
|
+
const clientId = process.env.AIRTABLE_CLIENT_ID;
|
|
36
|
+
if (!clientId)
|
|
37
|
+
return null;
|
|
38
|
+
return {
|
|
39
|
+
clientId,
|
|
40
|
+
clientSecret: process.env.AIRTABLE_CLIENT_SECRET,
|
|
41
|
+
tokenEndpoint: OAUTH_TOKEN_ENDPOINT,
|
|
42
|
+
scopes: OAUTH_SCOPES,
|
|
43
|
+
};
|
|
24
44
|
}
|
|
25
45
|
async authenticate() {
|
|
26
|
-
const
|
|
27
|
-
if (!
|
|
46
|
+
const raw = loadRawTokens();
|
|
47
|
+
if (!raw) {
|
|
28
48
|
throw new Error("Airtable not connected. Run: patchwork-os connect airtable or set AIRTABLE_ACCESS_TOKEN");
|
|
29
49
|
}
|
|
30
|
-
|
|
50
|
+
if (isOAuthTokens(raw)) {
|
|
51
|
+
// OAuth path — may auto-refresh if expired
|
|
52
|
+
const expiresAt = new Date(raw.expiresAt);
|
|
53
|
+
const bufferMs = 5 * 60 * 1000;
|
|
54
|
+
if (Date.now() > expiresAt.getTime() - bufferMs && raw.refreshToken) {
|
|
55
|
+
const refreshed = await this._oauthRefresh(raw);
|
|
56
|
+
if (refreshed) {
|
|
57
|
+
return {
|
|
58
|
+
token: refreshed.accessToken,
|
|
59
|
+
refreshToken: refreshed.refreshToken,
|
|
60
|
+
expiresAt: new Date(refreshed.expiresAt),
|
|
61
|
+
scopes: refreshed.scopes,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
token: raw.accessToken,
|
|
67
|
+
refreshToken: raw.refreshToken,
|
|
68
|
+
expiresAt: new Date(raw.expiresAt),
|
|
69
|
+
scopes: raw.scopes,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
// PAT path
|
|
73
|
+
this.tokens = raw;
|
|
31
74
|
return {
|
|
32
|
-
token:
|
|
75
|
+
token: raw.accessToken,
|
|
33
76
|
scopes: ["read", "write"],
|
|
34
77
|
};
|
|
35
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Override base refreshToken() to use HTTP Basic auth for Airtable's token
|
|
81
|
+
* endpoint (clientId:clientSecret as Basic auth instead of body params).
|
|
82
|
+
*/
|
|
83
|
+
async refreshToken() {
|
|
84
|
+
const raw = loadRawTokens();
|
|
85
|
+
if (!raw || !isOAuthTokens(raw) || !raw.refreshToken)
|
|
86
|
+
return null;
|
|
87
|
+
const config = this.getOAuthConfig();
|
|
88
|
+
if (!config?.clientSecret)
|
|
89
|
+
return null;
|
|
90
|
+
const refreshed = await this._oauthRefresh(raw);
|
|
91
|
+
if (!refreshed)
|
|
92
|
+
return null;
|
|
93
|
+
return {
|
|
94
|
+
token: refreshed.accessToken,
|
|
95
|
+
refreshToken: refreshed.refreshToken,
|
|
96
|
+
expiresAt: new Date(refreshed.expiresAt),
|
|
97
|
+
scopes: refreshed.scopes,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Perform the actual Airtable OAuth token refresh using HTTP Basic auth.
|
|
102
|
+
* Airtable requires clientId:clientSecret as Basic auth on the token endpoint.
|
|
103
|
+
*/
|
|
104
|
+
async _oauthRefresh(tokens) {
|
|
105
|
+
const clientId = process.env.AIRTABLE_CLIENT_ID ?? "";
|
|
106
|
+
const clientSecret = process.env.AIRTABLE_CLIENT_SECRET;
|
|
107
|
+
if (!clientId || !clientSecret)
|
|
108
|
+
return null;
|
|
109
|
+
const basicCreds = Buffer.from(`${clientId}:${clientSecret}`).toString("base64");
|
|
110
|
+
let response;
|
|
111
|
+
try {
|
|
112
|
+
response = await fetch(OAUTH_TOKEN_ENDPOINT, {
|
|
113
|
+
method: "POST",
|
|
114
|
+
headers: {
|
|
115
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
116
|
+
Authorization: `Basic ${basicCreds}`,
|
|
117
|
+
},
|
|
118
|
+
body: new URLSearchParams({
|
|
119
|
+
grant_type: "refresh_token",
|
|
120
|
+
refresh_token: tokens.refreshToken,
|
|
121
|
+
}).toString(),
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
if (!response.ok) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
let data;
|
|
131
|
+
try {
|
|
132
|
+
data = (await response.json());
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
if (typeof data.access_token !== "string" || !data.access_token) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
const expiresIn = typeof data.expires_in === "number" && data.expires_in > 0
|
|
141
|
+
? data.expires_in
|
|
142
|
+
: 3600;
|
|
143
|
+
const updated = {
|
|
144
|
+
...tokens,
|
|
145
|
+
accessToken: data.access_token,
|
|
146
|
+
refreshToken: typeof data.refresh_token === "string" && data.refresh_token
|
|
147
|
+
? data.refresh_token
|
|
148
|
+
: tokens.refreshToken,
|
|
149
|
+
expiresAt: new Date(Date.now() + expiresIn * 1000).toISOString(),
|
|
150
|
+
scopes: typeof data.scope === "string" ? data.scope.split(" ") : tokens.scopes,
|
|
151
|
+
};
|
|
152
|
+
saveOAuthTokens(updated);
|
|
153
|
+
return updated;
|
|
154
|
+
}
|
|
36
155
|
async healthCheck() {
|
|
37
156
|
try {
|
|
38
157
|
const result = await this.apiCall(async () => {
|
|
@@ -109,14 +228,25 @@ export class AirtableConnector extends BaseConnector {
|
|
|
109
228
|
};
|
|
110
229
|
}
|
|
111
230
|
getStatus() {
|
|
112
|
-
const
|
|
231
|
+
const raw = loadRawTokens();
|
|
232
|
+
if (!raw) {
|
|
233
|
+
return { id: "airtable", status: "disconnected" };
|
|
234
|
+
}
|
|
235
|
+
if (isOAuthTokens(raw)) {
|
|
236
|
+
return {
|
|
237
|
+
id: "airtable",
|
|
238
|
+
status: "connected",
|
|
239
|
+
lastSync: raw.connected_at,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
const tokens = raw;
|
|
113
243
|
return {
|
|
114
244
|
id: "airtable",
|
|
115
|
-
status:
|
|
116
|
-
lastSync: tokens
|
|
117
|
-
workspace: tokens
|
|
245
|
+
status: "connected",
|
|
246
|
+
lastSync: tokens.connected_at,
|
|
247
|
+
workspace: tokens.email
|
|
118
248
|
? `Airtable (${tokens.email})`
|
|
119
|
-
: tokens
|
|
249
|
+
: tokens.userId
|
|
120
250
|
? `Airtable user ${tokens.userId}`
|
|
121
251
|
: undefined,
|
|
122
252
|
};
|
|
@@ -233,9 +363,113 @@ export class AirtableConnector extends BaseConnector {
|
|
|
233
363
|
throw new Error(result.error.message);
|
|
234
364
|
return result.data;
|
|
235
365
|
}
|
|
366
|
+
// ── Webhook Methods ────────────────────────────────────────────────────────
|
|
367
|
+
/** GET /v0/bases/{baseId}/webhooks */
|
|
368
|
+
async listWebhooks(baseId) {
|
|
369
|
+
const result = await this.apiCall(async () => {
|
|
370
|
+
const url = `${BASE_URL}/v0/bases/${encodeURIComponent(baseId)}/webhooks`;
|
|
371
|
+
const res = await fetch(url, { headers: this.buildHeaders() });
|
|
372
|
+
if (!res.ok)
|
|
373
|
+
throw res;
|
|
374
|
+
const json = (await res.json());
|
|
375
|
+
return json.webhooks ?? [];
|
|
376
|
+
});
|
|
377
|
+
if ("error" in result)
|
|
378
|
+
throw new Error(result.error.message);
|
|
379
|
+
return result.data;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* POST /v0/bases/{baseId}/webhooks
|
|
383
|
+
* Creates a webhook. Returns the webhook id, HMAC secret (base64), and
|
|
384
|
+
* expiration time. Store macSecretBase64 securely — it is only returned once.
|
|
385
|
+
*/
|
|
386
|
+
async createWebhook(baseId, notificationUrl, specification) {
|
|
387
|
+
const result = await this.apiCall(async () => {
|
|
388
|
+
const url = `${BASE_URL}/v0/bases/${encodeURIComponent(baseId)}/webhooks`;
|
|
389
|
+
const body = {
|
|
390
|
+
notificationUrl,
|
|
391
|
+
specification: {
|
|
392
|
+
filters: specification?.filters ?? {
|
|
393
|
+
fromSources: ["client"],
|
|
394
|
+
dataTypes: ["tableData", "tableFields", "tableMetadata"],
|
|
395
|
+
changeTypes: ["add", "update", "remove"],
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
};
|
|
399
|
+
const res = await fetch(url, {
|
|
400
|
+
method: "POST",
|
|
401
|
+
headers: { ...this.buildHeaders(), "Content-Type": "application/json" },
|
|
402
|
+
body: JSON.stringify(body),
|
|
403
|
+
});
|
|
404
|
+
if (!res.ok)
|
|
405
|
+
throw res;
|
|
406
|
+
return res.json();
|
|
407
|
+
});
|
|
408
|
+
if ("error" in result)
|
|
409
|
+
throw new Error(result.error.message);
|
|
410
|
+
return result.data;
|
|
411
|
+
}
|
|
412
|
+
/** DELETE /v0/bases/{baseId}/webhooks/{webhookId} */
|
|
413
|
+
async deleteWebhook(baseId, webhookId) {
|
|
414
|
+
const result = await this.apiCall(async () => {
|
|
415
|
+
const url = `${BASE_URL}/v0/bases/${encodeURIComponent(baseId)}/webhooks/${encodeURIComponent(webhookId)}`;
|
|
416
|
+
const res = await fetch(url, {
|
|
417
|
+
method: "DELETE",
|
|
418
|
+
headers: this.buildHeaders(),
|
|
419
|
+
});
|
|
420
|
+
if (!res.ok)
|
|
421
|
+
throw res;
|
|
422
|
+
return undefined;
|
|
423
|
+
});
|
|
424
|
+
if ("error" in result)
|
|
425
|
+
throw new Error(result.error.message);
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* GET /v0/bases/{baseId}/webhooks/{webhookId}/payloads
|
|
429
|
+
* Retrieves queued payloads for a webhook. Pass cursor from previous call
|
|
430
|
+
* to page through results.
|
|
431
|
+
*/
|
|
432
|
+
async getWebhookPayloads(baseId, webhookId, cursor) {
|
|
433
|
+
const result = await this.apiCall(async () => {
|
|
434
|
+
const qs = cursor != null ? `?cursor=${cursor}` : "";
|
|
435
|
+
const url = `${BASE_URL}/v0/bases/${encodeURIComponent(baseId)}/webhooks/${encodeURIComponent(webhookId)}/payloads${qs}`;
|
|
436
|
+
const res = await fetch(url, { headers: this.buildHeaders() });
|
|
437
|
+
if (!res.ok)
|
|
438
|
+
throw res;
|
|
439
|
+
return res.json();
|
|
440
|
+
});
|
|
441
|
+
if ("error" in result)
|
|
442
|
+
throw new Error(result.error.message);
|
|
443
|
+
return result.data;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* POST /v0/bases/{baseId}/webhooks/{webhookId}/refresh
|
|
447
|
+
* Extends the webhook expiry by 7 days from now.
|
|
448
|
+
*/
|
|
449
|
+
async refreshWebhook(baseId, webhookId) {
|
|
450
|
+
const result = await this.apiCall(async () => {
|
|
451
|
+
const url = `${BASE_URL}/v0/bases/${encodeURIComponent(baseId)}/webhooks/${encodeURIComponent(webhookId)}/refresh`;
|
|
452
|
+
const res = await fetch(url, {
|
|
453
|
+
method: "POST",
|
|
454
|
+
headers: { ...this.buildHeaders(), "Content-Type": "application/json" },
|
|
455
|
+
body: "{}",
|
|
456
|
+
});
|
|
457
|
+
if (!res.ok)
|
|
458
|
+
throw res;
|
|
459
|
+
return undefined;
|
|
460
|
+
});
|
|
461
|
+
if ("error" in result)
|
|
462
|
+
throw new Error(result.error.message);
|
|
463
|
+
}
|
|
236
464
|
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
237
465
|
buildHeaders() {
|
|
238
|
-
|
|
466
|
+
// Prefer the in-memory auth token (set after authenticate()), then fall
|
|
467
|
+
// back to reading directly from storage for callers that haven't gone
|
|
468
|
+
// through the full authenticate() flow (e.g. healthCheck).
|
|
469
|
+
const token = this.auth?.token ??
|
|
470
|
+
this.tokens?.accessToken ??
|
|
471
|
+
loadRawTokens()?.accessToken ??
|
|
472
|
+
"";
|
|
239
473
|
return {
|
|
240
474
|
Authorization: `Bearer ${token}`,
|
|
241
475
|
Accept: "application/json",
|
|
@@ -243,7 +477,19 @@ export class AirtableConnector extends BaseConnector {
|
|
|
243
477
|
}
|
|
244
478
|
}
|
|
245
479
|
// ── Token persistence ────────────────────────────────────────────────────────
|
|
246
|
-
|
|
480
|
+
/** Discriminator for OAuth vs PAT token blobs. */
|
|
481
|
+
function isOAuthTokens(raw) {
|
|
482
|
+
return raw._oauth === true;
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Load raw token blob from env / storage. Returns either AirtableTokens (PAT)
|
|
486
|
+
* or AirtableOAuthTokens (OAuth), or null when not connected.
|
|
487
|
+
*
|
|
488
|
+
* Priority:
|
|
489
|
+
* 1. AIRTABLE_ACCESS_TOKEN env var → synthetic PAT tokens
|
|
490
|
+
* 2. Stored token blob (may be PAT or OAuth)
|
|
491
|
+
*/
|
|
492
|
+
export function loadRawTokens() {
|
|
247
493
|
const envKey = process.env.AIRTABLE_ACCESS_TOKEN;
|
|
248
494
|
if (envKey) {
|
|
249
495
|
return {
|
|
@@ -253,9 +499,30 @@ export function loadTokens() {
|
|
|
253
499
|
}
|
|
254
500
|
return getSecretJsonSync("airtable");
|
|
255
501
|
}
|
|
502
|
+
/**
|
|
503
|
+
* loadTokens returns PAT tokens for backward compatibility with existing code
|
|
504
|
+
* that expects AirtableTokens. Returns null for OAuth-only connections.
|
|
505
|
+
*/
|
|
506
|
+
export function loadTokens() {
|
|
507
|
+
const raw = loadRawTokens();
|
|
508
|
+
if (!raw)
|
|
509
|
+
return null;
|
|
510
|
+
if (isOAuthTokens(raw)) {
|
|
511
|
+
// Return a minimal AirtableTokens shape for backward-compat callers that
|
|
512
|
+
// only need the accessToken (e.g. getStatus, healthCheck).
|
|
513
|
+
return {
|
|
514
|
+
accessToken: raw.accessToken,
|
|
515
|
+
connected_at: raw.connected_at,
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
return raw;
|
|
519
|
+
}
|
|
256
520
|
export function saveTokens(tokens) {
|
|
257
521
|
storeSecretJsonSync("airtable", tokens);
|
|
258
522
|
}
|
|
523
|
+
export function saveOAuthTokens(tokens) {
|
|
524
|
+
storeSecretJsonSync("airtable", tokens);
|
|
525
|
+
}
|
|
259
526
|
export function clearTokens() {
|
|
260
527
|
try {
|
|
261
528
|
deleteSecretJsonSync("airtable");
|
|
@@ -264,6 +531,43 @@ export function clearTokens() {
|
|
|
264
531
|
// ignore
|
|
265
532
|
}
|
|
266
533
|
}
|
|
534
|
+
// ── Webhook verification ─────────────────────────────────────────────────────
|
|
535
|
+
/**
|
|
536
|
+
* Verify an incoming Airtable webhook request.
|
|
537
|
+
*
|
|
538
|
+
* Airtable signs webhook payloads with HMAC-SHA256 using the macSecretBase64
|
|
539
|
+
* returned at webhook creation time. The signature is hex-encoded and sent in
|
|
540
|
+
* the `X-Airtable-Content-MAC` header. The raw body (before JSON parsing) is
|
|
541
|
+
* used as the message.
|
|
542
|
+
*
|
|
543
|
+
* Additionally, `X-Airtable-Client-Secret` should equal the base64-decoded
|
|
544
|
+
* mac secret (raw bytes as a Latin-1/binary string) — but in practice most
|
|
545
|
+
* integrations only check the HMAC signature. This helper validates both.
|
|
546
|
+
*
|
|
547
|
+
* @param rawBody - Raw request body as a Buffer or string
|
|
548
|
+
* @param hmacHeader - Value of the `X-Airtable-Content-MAC` header (hex)
|
|
549
|
+
* @param macSecretBase64 - The macSecretBase64 returned by createWebhook()
|
|
550
|
+
* @returns true if the signature is valid
|
|
551
|
+
*/
|
|
552
|
+
export function verifyAirtableWebhook(rawBody, hmacHeader, macSecretBase64) {
|
|
553
|
+
const secret = Buffer.from(macSecretBase64, "base64");
|
|
554
|
+
const body = typeof rawBody === "string" ? Buffer.from(rawBody, "utf-8") : rawBody;
|
|
555
|
+
const expected = crypto
|
|
556
|
+
.createHmac("sha256", secret)
|
|
557
|
+
.update(body)
|
|
558
|
+
.digest("hex");
|
|
559
|
+
// Constant-time compare to prevent timing attacks
|
|
560
|
+
try {
|
|
561
|
+
const expectedBuf = Buffer.from(expected, "utf-8");
|
|
562
|
+
const actualBuf = Buffer.from(hmacHeader, "utf-8");
|
|
563
|
+
if (expectedBuf.length !== actualBuf.length)
|
|
564
|
+
return false;
|
|
565
|
+
return crypto.timingSafeEqual(expectedBuf, actualBuf);
|
|
566
|
+
}
|
|
567
|
+
catch {
|
|
568
|
+
return false;
|
|
569
|
+
}
|
|
570
|
+
}
|
|
267
571
|
// ── Singleton instance ───────────────────────────────────────────────────────
|
|
268
572
|
let _instance = null;
|
|
269
573
|
function resetAirtableConnector() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"airtable.js","sourceRoot":"","sources":["../../src/connectors/airtable.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"airtable.js","sourceRoot":"","sources":["../../src/connectors/airtable.ts"],"names":[],"mappings":"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"}
|