@automate.ax/catalog 0.107.0 → 0.109.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/catalog.d.ts +28 -2
- package/dist/catalog.js +22 -3
- package/dist/triggers/airtable.d.ts +34 -45
- package/dist/triggers/airtable.js +57 -18
- package/dist/triggers/index.d.ts +66 -90
- package/package.json +1 -1
- package/src/catalog.ts +23 -3
- package/src/triggers/airtable.ts +71 -19
package/dist/catalog.d.ts
CHANGED
|
@@ -4,10 +4,23 @@ export declare const airtableService: {
|
|
|
4
4
|
readonly id: "oauth";
|
|
5
5
|
readonly name: "OAuth";
|
|
6
6
|
readonly type: "redirect";
|
|
7
|
+
}, {
|
|
8
|
+
readonly credentialUrl: "https://airtable.com/create/tokens";
|
|
9
|
+
readonly fields: readonly [{
|
|
10
|
+
readonly input: "password";
|
|
11
|
+
readonly label: "Personal access token";
|
|
12
|
+
readonly name: "apiKey";
|
|
13
|
+
readonly placeholder: "pat...";
|
|
14
|
+
readonly required: true;
|
|
15
|
+
}];
|
|
16
|
+
readonly id: "personal-access-token";
|
|
17
|
+
readonly name: "Personal access token";
|
|
18
|
+
readonly type: "form";
|
|
7
19
|
}];
|
|
8
|
-
readonly description: "Connect
|
|
20
|
+
readonly description: "Connect Airtable with OAuth or a personal access token.";
|
|
9
21
|
readonly id: "airtable";
|
|
10
22
|
readonly name: "Airtable";
|
|
23
|
+
readonly preferredConnectionMethodId: "oauth";
|
|
11
24
|
};
|
|
12
25
|
export declare const anthropicService: {
|
|
13
26
|
readonly id: "anthropic";
|
|
@@ -861,10 +874,23 @@ export declare const integrationCatalog: readonly [{
|
|
|
861
874
|
readonly id: "oauth";
|
|
862
875
|
readonly name: "OAuth";
|
|
863
876
|
readonly type: "redirect";
|
|
877
|
+
}, {
|
|
878
|
+
readonly credentialUrl: "https://airtable.com/create/tokens";
|
|
879
|
+
readonly fields: readonly [{
|
|
880
|
+
readonly input: "password";
|
|
881
|
+
readonly label: "Personal access token";
|
|
882
|
+
readonly name: "apiKey";
|
|
883
|
+
readonly placeholder: "pat...";
|
|
884
|
+
readonly required: true;
|
|
885
|
+
}];
|
|
886
|
+
readonly id: "personal-access-token";
|
|
887
|
+
readonly name: "Personal access token";
|
|
888
|
+
readonly type: "form";
|
|
864
889
|
}];
|
|
865
|
-
readonly description: "Connect
|
|
890
|
+
readonly description: "Connect Airtable with OAuth or a personal access token.";
|
|
866
891
|
readonly id: "airtable";
|
|
867
892
|
readonly name: "Airtable";
|
|
893
|
+
readonly preferredConnectionMethodId: "oauth";
|
|
868
894
|
}, {
|
|
869
895
|
readonly id: "anthropic";
|
|
870
896
|
readonly name: string;
|
package/dist/catalog.js
CHANGED
|
@@ -6,10 +6,28 @@ const API_KEY_FIELD = {
|
|
|
6
6
|
required: true,
|
|
7
7
|
};
|
|
8
8
|
export const airtableService = defineIntegrationService({
|
|
9
|
-
connectionMethods: [
|
|
10
|
-
|
|
9
|
+
connectionMethods: [
|
|
10
|
+
{ id: "oauth", name: "OAuth", type: "redirect" },
|
|
11
|
+
{
|
|
12
|
+
credentialUrl: "https://airtable.com/create/tokens",
|
|
13
|
+
fields: [
|
|
14
|
+
{
|
|
15
|
+
input: "password",
|
|
16
|
+
label: "Personal access token",
|
|
17
|
+
name: "apiKey",
|
|
18
|
+
placeholder: "pat...",
|
|
19
|
+
required: true,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
id: "personal-access-token",
|
|
23
|
+
name: "Personal access token",
|
|
24
|
+
type: "form",
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
description: "Connect Airtable with OAuth or a personal access token.",
|
|
11
28
|
id: "airtable",
|
|
12
29
|
name: "Airtable",
|
|
30
|
+
preferredConnectionMethodId: "oauth",
|
|
13
31
|
});
|
|
14
32
|
export const anthropicService = defineApiKeyService({
|
|
15
33
|
description: "Connect an Anthropic API key.",
|
|
@@ -61,7 +79,8 @@ export const automateService = defineIntegrationService({
|
|
|
61
79
|
name: "Automate.ax",
|
|
62
80
|
});
|
|
63
81
|
export const brevoService = defineApiKeyService({
|
|
64
|
-
|
|
82
|
+
credentialUrl: "https://app.brevo.com/settings/keys/api",
|
|
83
|
+
description: "Connect a Brevo API key for messaging, contacts, campaigns, and managed events.",
|
|
65
84
|
id: "brevo",
|
|
66
85
|
name: "Brevo",
|
|
67
86
|
placeholder: "xkeysib-...",
|
|
@@ -1,62 +1,51 @@
|
|
|
1
|
+
import type { IntegrationAccountRequirement } from "../types.js";
|
|
1
2
|
export declare const airtableTriggerDefinitions: {
|
|
3
|
+
readonly airtableBaseEvent: {
|
|
4
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
5
|
+
readonly type: "airtable.base.event";
|
|
6
|
+
};
|
|
7
|
+
readonly airtableFieldCreated: {
|
|
8
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
9
|
+
readonly type: "airtable.field.created";
|
|
10
|
+
};
|
|
11
|
+
readonly airtableFieldDeleted: {
|
|
12
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
13
|
+
readonly type: "airtable.field.deleted";
|
|
14
|
+
};
|
|
15
|
+
readonly airtableFieldUpdated: {
|
|
16
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
17
|
+
readonly type: "airtable.field.updated";
|
|
18
|
+
};
|
|
2
19
|
readonly airtableRecordCreated: {
|
|
3
|
-
readonly account:
|
|
4
|
-
readonly connectionOptions: readonly [{
|
|
5
|
-
readonly requiredScopes: readonly [{
|
|
6
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
7
|
-
readonly type: "and";
|
|
8
|
-
}];
|
|
9
|
-
}];
|
|
10
|
-
readonly serviceId: "airtable";
|
|
11
|
-
};
|
|
20
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
12
21
|
readonly type: "airtable.record.created";
|
|
13
22
|
};
|
|
14
23
|
readonly airtableRecordDeleted: {
|
|
15
|
-
readonly account:
|
|
16
|
-
readonly connectionOptions: readonly [{
|
|
17
|
-
readonly requiredScopes: readonly [{
|
|
18
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
19
|
-
readonly type: "and";
|
|
20
|
-
}];
|
|
21
|
-
}];
|
|
22
|
-
readonly serviceId: "airtable";
|
|
23
|
-
};
|
|
24
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
24
25
|
readonly type: "airtable.record.deleted";
|
|
25
26
|
};
|
|
26
27
|
readonly airtableRecordMovedIntoView: {
|
|
27
|
-
readonly account:
|
|
28
|
-
readonly connectionOptions: readonly [{
|
|
29
|
-
readonly requiredScopes: readonly [{
|
|
30
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
31
|
-
readonly type: "and";
|
|
32
|
-
}];
|
|
33
|
-
}];
|
|
34
|
-
readonly serviceId: "airtable";
|
|
35
|
-
};
|
|
28
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
36
29
|
readonly type: "airtable.record.movedIntoView";
|
|
37
30
|
};
|
|
38
31
|
readonly airtableRecordMovedOutOfView: {
|
|
39
|
-
readonly account:
|
|
40
|
-
readonly connectionOptions: readonly [{
|
|
41
|
-
readonly requiredScopes: readonly [{
|
|
42
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
43
|
-
readonly type: "and";
|
|
44
|
-
}];
|
|
45
|
-
}];
|
|
46
|
-
readonly serviceId: "airtable";
|
|
47
|
-
};
|
|
32
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
48
33
|
readonly type: "airtable.record.movedOutOfView";
|
|
49
34
|
};
|
|
50
35
|
readonly airtableRecordUpdated: {
|
|
51
|
-
readonly account:
|
|
52
|
-
readonly connectionOptions: readonly [{
|
|
53
|
-
readonly requiredScopes: readonly [{
|
|
54
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
55
|
-
readonly type: "and";
|
|
56
|
-
}];
|
|
57
|
-
}];
|
|
58
|
-
readonly serviceId: "airtable";
|
|
59
|
-
};
|
|
36
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
60
37
|
readonly type: "airtable.record.updated";
|
|
61
38
|
};
|
|
39
|
+
readonly airtableTableCreated: {
|
|
40
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
41
|
+
readonly type: "airtable.table.created";
|
|
42
|
+
};
|
|
43
|
+
readonly airtableTableDeleted: {
|
|
44
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
45
|
+
readonly type: "airtable.table.deleted";
|
|
46
|
+
};
|
|
47
|
+
readonly airtableTableUpdated: {
|
|
48
|
+
readonly account: IntegrationAccountRequirement<"airtable">;
|
|
49
|
+
readonly type: "airtable.table.updated";
|
|
50
|
+
};
|
|
62
51
|
};
|
|
@@ -1,35 +1,74 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
1
|
+
import { integrationScope as scope } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Builds equivalent OAuth and personal-access-token trigger requirements.
|
|
4
|
+
*
|
|
5
|
+
* @param requiredScope - Least-privilege provider scope expression.
|
|
6
|
+
*/
|
|
7
|
+
function airtableAccount(requiredScope) {
|
|
8
|
+
return {
|
|
9
|
+
connectionOptions: [
|
|
10
|
+
{
|
|
11
|
+
connectionMethodId: "oauth",
|
|
12
|
+
requiredScopes: [requiredScope],
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
connectionMethodId: "personal-access-token",
|
|
16
|
+
requiredScopes: [requiredScope],
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
serviceId: "airtable",
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const AIRTABLE_RECORD_ACCOUNT = airtableAccount(scope.and("data.records:read", "webhook:manage"));
|
|
23
|
+
const AIRTABLE_SCHEMA_ACCOUNT = airtableAccount(scope.and("schema.bases:read", "webhook:manage"));
|
|
24
|
+
const AIRTABLE_BASE_EVENT_ACCOUNT = airtableAccount(scope.and("data.records:read", "schema.bases:read", "webhook:manage"));
|
|
14
25
|
export const airtableTriggerDefinitions = {
|
|
26
|
+
airtableBaseEvent: {
|
|
27
|
+
account: AIRTABLE_BASE_EVENT_ACCOUNT,
|
|
28
|
+
type: "airtable.base.event",
|
|
29
|
+
},
|
|
30
|
+
airtableFieldCreated: {
|
|
31
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
32
|
+
type: "airtable.field.created",
|
|
33
|
+
},
|
|
34
|
+
airtableFieldDeleted: {
|
|
35
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
36
|
+
type: "airtable.field.deleted",
|
|
37
|
+
},
|
|
38
|
+
airtableFieldUpdated: {
|
|
39
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
40
|
+
type: "airtable.field.updated",
|
|
41
|
+
},
|
|
15
42
|
airtableRecordCreated: {
|
|
16
|
-
account:
|
|
43
|
+
account: AIRTABLE_RECORD_ACCOUNT,
|
|
17
44
|
type: "airtable.record.created",
|
|
18
45
|
},
|
|
19
46
|
airtableRecordDeleted: {
|
|
20
|
-
account:
|
|
47
|
+
account: AIRTABLE_RECORD_ACCOUNT,
|
|
21
48
|
type: "airtable.record.deleted",
|
|
22
49
|
},
|
|
23
50
|
airtableRecordMovedIntoView: {
|
|
24
|
-
account:
|
|
51
|
+
account: AIRTABLE_RECORD_ACCOUNT,
|
|
25
52
|
type: "airtable.record.movedIntoView",
|
|
26
53
|
},
|
|
27
54
|
airtableRecordMovedOutOfView: {
|
|
28
|
-
account:
|
|
55
|
+
account: AIRTABLE_RECORD_ACCOUNT,
|
|
29
56
|
type: "airtable.record.movedOutOfView",
|
|
30
57
|
},
|
|
31
58
|
airtableRecordUpdated: {
|
|
32
|
-
account:
|
|
59
|
+
account: AIRTABLE_RECORD_ACCOUNT,
|
|
33
60
|
type: "airtable.record.updated",
|
|
34
61
|
},
|
|
62
|
+
airtableTableCreated: {
|
|
63
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
64
|
+
type: "airtable.table.created",
|
|
65
|
+
},
|
|
66
|
+
airtableTableDeleted: {
|
|
67
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
68
|
+
type: "airtable.table.deleted",
|
|
69
|
+
},
|
|
70
|
+
airtableTableUpdated: {
|
|
71
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
72
|
+
type: "airtable.table.updated",
|
|
73
|
+
},
|
|
35
74
|
};
|
package/dist/triggers/index.d.ts
CHANGED
|
@@ -5178,128 +5178,104 @@ export declare const triggerDefinitions: {
|
|
|
5178
5178
|
}[];
|
|
5179
5179
|
readonly type: "automate.execution.settled";
|
|
5180
5180
|
};
|
|
5181
|
+
readonly airtableBaseEvent: {
|
|
5182
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5183
|
+
readonly type: "airtable.base.event";
|
|
5184
|
+
};
|
|
5185
|
+
readonly airtableFieldCreated: {
|
|
5186
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5187
|
+
readonly type: "airtable.field.created";
|
|
5188
|
+
};
|
|
5189
|
+
readonly airtableFieldDeleted: {
|
|
5190
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5191
|
+
readonly type: "airtable.field.deleted";
|
|
5192
|
+
};
|
|
5193
|
+
readonly airtableFieldUpdated: {
|
|
5194
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5195
|
+
readonly type: "airtable.field.updated";
|
|
5196
|
+
};
|
|
5181
5197
|
readonly airtableRecordCreated: {
|
|
5182
|
-
readonly account:
|
|
5183
|
-
readonly connectionOptions: readonly [{
|
|
5184
|
-
readonly requiredScopes: readonly [{
|
|
5185
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
5186
|
-
readonly type: "and";
|
|
5187
|
-
}];
|
|
5188
|
-
}];
|
|
5189
|
-
readonly serviceId: "airtable";
|
|
5190
|
-
};
|
|
5198
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5191
5199
|
readonly type: "airtable.record.created";
|
|
5192
5200
|
};
|
|
5193
5201
|
readonly airtableRecordDeleted: {
|
|
5194
|
-
readonly account:
|
|
5195
|
-
readonly connectionOptions: readonly [{
|
|
5196
|
-
readonly requiredScopes: readonly [{
|
|
5197
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
5198
|
-
readonly type: "and";
|
|
5199
|
-
}];
|
|
5200
|
-
}];
|
|
5201
|
-
readonly serviceId: "airtable";
|
|
5202
|
-
};
|
|
5202
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5203
5203
|
readonly type: "airtable.record.deleted";
|
|
5204
5204
|
};
|
|
5205
5205
|
readonly airtableRecordMovedIntoView: {
|
|
5206
|
-
readonly account:
|
|
5207
|
-
readonly connectionOptions: readonly [{
|
|
5208
|
-
readonly requiredScopes: readonly [{
|
|
5209
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
5210
|
-
readonly type: "and";
|
|
5211
|
-
}];
|
|
5212
|
-
}];
|
|
5213
|
-
readonly serviceId: "airtable";
|
|
5214
|
-
};
|
|
5206
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5215
5207
|
readonly type: "airtable.record.movedIntoView";
|
|
5216
5208
|
};
|
|
5217
5209
|
readonly airtableRecordMovedOutOfView: {
|
|
5218
|
-
readonly account:
|
|
5219
|
-
readonly connectionOptions: readonly [{
|
|
5220
|
-
readonly requiredScopes: readonly [{
|
|
5221
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
5222
|
-
readonly type: "and";
|
|
5223
|
-
}];
|
|
5224
|
-
}];
|
|
5225
|
-
readonly serviceId: "airtable";
|
|
5226
|
-
};
|
|
5210
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5227
5211
|
readonly type: "airtable.record.movedOutOfView";
|
|
5228
5212
|
};
|
|
5229
5213
|
readonly airtableRecordUpdated: {
|
|
5230
|
-
readonly account:
|
|
5231
|
-
readonly connectionOptions: readonly [{
|
|
5232
|
-
readonly requiredScopes: readonly [{
|
|
5233
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
5234
|
-
readonly type: "and";
|
|
5235
|
-
}];
|
|
5236
|
-
}];
|
|
5237
|
-
readonly serviceId: "airtable";
|
|
5238
|
-
};
|
|
5214
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5239
5215
|
readonly type: "airtable.record.updated";
|
|
5240
5216
|
};
|
|
5217
|
+
readonly airtableTableCreated: {
|
|
5218
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5219
|
+
readonly type: "airtable.table.created";
|
|
5220
|
+
};
|
|
5221
|
+
readonly airtableTableDeleted: {
|
|
5222
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5223
|
+
readonly type: "airtable.table.deleted";
|
|
5224
|
+
};
|
|
5225
|
+
readonly airtableTableUpdated: {
|
|
5226
|
+
readonly account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5227
|
+
readonly type: "airtable.table.updated";
|
|
5228
|
+
};
|
|
5241
5229
|
};
|
|
5242
5230
|
/** Trigger definitions with inferred display names materialized. */
|
|
5243
5231
|
export declare const triggerCatalog: ({
|
|
5244
5232
|
name: string;
|
|
5245
|
-
account:
|
|
5246
|
-
|
|
5247
|
-
|
|
5248
|
-
|
|
5249
|
-
|
|
5250
|
-
|
|
5251
|
-
|
|
5252
|
-
|
|
5253
|
-
|
|
5233
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5234
|
+
type: "airtable.base.event";
|
|
5235
|
+
} | {
|
|
5236
|
+
name: string;
|
|
5237
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5238
|
+
type: "airtable.field.created";
|
|
5239
|
+
} | {
|
|
5240
|
+
name: string;
|
|
5241
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5242
|
+
type: "airtable.field.deleted";
|
|
5243
|
+
} | {
|
|
5244
|
+
name: string;
|
|
5245
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5246
|
+
type: "airtable.field.updated";
|
|
5247
|
+
} | {
|
|
5248
|
+
name: string;
|
|
5249
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5254
5250
|
type: "airtable.record.created";
|
|
5255
5251
|
} | {
|
|
5256
5252
|
name: string;
|
|
5257
|
-
account:
|
|
5258
|
-
readonly connectionOptions: readonly [{
|
|
5259
|
-
readonly requiredScopes: readonly [{
|
|
5260
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
5261
|
-
readonly type: "and";
|
|
5262
|
-
}];
|
|
5263
|
-
}];
|
|
5264
|
-
readonly serviceId: "airtable";
|
|
5265
|
-
};
|
|
5253
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5266
5254
|
type: "airtable.record.deleted";
|
|
5267
5255
|
} | {
|
|
5268
5256
|
name: string;
|
|
5269
|
-
account:
|
|
5270
|
-
readonly connectionOptions: readonly [{
|
|
5271
|
-
readonly requiredScopes: readonly [{
|
|
5272
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
5273
|
-
readonly type: "and";
|
|
5274
|
-
}];
|
|
5275
|
-
}];
|
|
5276
|
-
readonly serviceId: "airtable";
|
|
5277
|
-
};
|
|
5257
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5278
5258
|
type: "airtable.record.movedIntoView";
|
|
5279
5259
|
} | {
|
|
5280
5260
|
name: string;
|
|
5281
|
-
account:
|
|
5282
|
-
readonly connectionOptions: readonly [{
|
|
5283
|
-
readonly requiredScopes: readonly [{
|
|
5284
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
5285
|
-
readonly type: "and";
|
|
5286
|
-
}];
|
|
5287
|
-
}];
|
|
5288
|
-
readonly serviceId: "airtable";
|
|
5289
|
-
};
|
|
5261
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5290
5262
|
type: "airtable.record.movedOutOfView";
|
|
5291
5263
|
} | {
|
|
5292
5264
|
name: string;
|
|
5293
|
-
account:
|
|
5294
|
-
readonly connectionOptions: readonly [{
|
|
5295
|
-
readonly requiredScopes: readonly [{
|
|
5296
|
-
readonly requirements: readonly ["data.records:read", "webhook:manage"];
|
|
5297
|
-
readonly type: "and";
|
|
5298
|
-
}];
|
|
5299
|
-
}];
|
|
5300
|
-
readonly serviceId: "airtable";
|
|
5301
|
-
};
|
|
5265
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5302
5266
|
type: "airtable.record.updated";
|
|
5267
|
+
} | {
|
|
5268
|
+
name: string;
|
|
5269
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5270
|
+
type: "airtable.table.created";
|
|
5271
|
+
} | {
|
|
5272
|
+
name: string;
|
|
5273
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5274
|
+
type: "airtable.table.deleted";
|
|
5275
|
+
} | {
|
|
5276
|
+
name: string;
|
|
5277
|
+
account: import("..").IntegrationAccountRequirement<"airtable">;
|
|
5278
|
+
type: "airtable.table.updated";
|
|
5303
5279
|
} | {
|
|
5304
5280
|
name: string;
|
|
5305
5281
|
account: {
|
package/package.json
CHANGED
package/src/catalog.ts
CHANGED
|
@@ -9,10 +9,28 @@ const API_KEY_FIELD = {
|
|
|
9
9
|
} as const
|
|
10
10
|
|
|
11
11
|
export const airtableService = defineIntegrationService({
|
|
12
|
-
connectionMethods: [
|
|
13
|
-
|
|
12
|
+
connectionMethods: [
|
|
13
|
+
{ id: "oauth", name: "OAuth", type: "redirect" },
|
|
14
|
+
{
|
|
15
|
+
credentialUrl: "https://airtable.com/create/tokens",
|
|
16
|
+
fields: [
|
|
17
|
+
{
|
|
18
|
+
input: "password",
|
|
19
|
+
label: "Personal access token",
|
|
20
|
+
name: "apiKey",
|
|
21
|
+
placeholder: "pat...",
|
|
22
|
+
required: true,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
id: "personal-access-token",
|
|
26
|
+
name: "Personal access token",
|
|
27
|
+
type: "form",
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
description: "Connect Airtable with OAuth or a personal access token.",
|
|
14
31
|
id: "airtable",
|
|
15
32
|
name: "Airtable",
|
|
33
|
+
preferredConnectionMethodId: "oauth",
|
|
16
34
|
})
|
|
17
35
|
|
|
18
36
|
export const anthropicService = defineApiKeyService({
|
|
@@ -71,7 +89,9 @@ export const automateService = defineIntegrationService({
|
|
|
71
89
|
})
|
|
72
90
|
|
|
73
91
|
export const brevoService = defineApiKeyService({
|
|
74
|
-
|
|
92
|
+
credentialUrl: "https://app.brevo.com/settings/keys/api",
|
|
93
|
+
description:
|
|
94
|
+
"Connect a Brevo API key for messaging, contacts, campaigns, and managed events.",
|
|
75
95
|
id: "brevo",
|
|
76
96
|
name: "Brevo",
|
|
77
97
|
placeholder: "xkeysib-...",
|
package/src/triggers/airtable.ts
CHANGED
|
@@ -1,38 +1,90 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { integrationScope as scope } from "../types"
|
|
2
|
+
import type {
|
|
3
|
+
IntegrationAccountRequirement,
|
|
4
|
+
IntegrationScopeRequirement,
|
|
5
|
+
TriggerDefinition,
|
|
6
|
+
} from "../types"
|
|
2
7
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Builds equivalent OAuth and personal-access-token trigger requirements.
|
|
10
|
+
*
|
|
11
|
+
* @param requiredScope - Least-privilege provider scope expression.
|
|
12
|
+
*/
|
|
13
|
+
function airtableAccount(
|
|
14
|
+
requiredScope: IntegrationScopeRequirement,
|
|
15
|
+
): IntegrationAccountRequirement<"airtable"> {
|
|
16
|
+
return {
|
|
17
|
+
connectionOptions: [
|
|
18
|
+
{
|
|
19
|
+
connectionMethodId: "oauth",
|
|
20
|
+
requiredScopes: [requiredScope],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
connectionMethodId: "personal-access-token",
|
|
24
|
+
requiredScopes: [requiredScope],
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
serviceId: "airtable",
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const AIRTABLE_RECORD_ACCOUNT = airtableAccount(
|
|
32
|
+
scope.and("data.records:read", "webhook:manage"),
|
|
33
|
+
)
|
|
34
|
+
const AIRTABLE_SCHEMA_ACCOUNT = airtableAccount(
|
|
35
|
+
scope.and("schema.bases:read", "webhook:manage"),
|
|
36
|
+
)
|
|
37
|
+
const AIRTABLE_BASE_EVENT_ACCOUNT = airtableAccount(
|
|
38
|
+
scope.and("data.records:read", "schema.bases:read", "webhook:manage"),
|
|
39
|
+
)
|
|
16
40
|
|
|
17
41
|
export const airtableTriggerDefinitions = {
|
|
42
|
+
airtableBaseEvent: {
|
|
43
|
+
account: AIRTABLE_BASE_EVENT_ACCOUNT,
|
|
44
|
+
type: "airtable.base.event",
|
|
45
|
+
},
|
|
46
|
+
airtableFieldCreated: {
|
|
47
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
48
|
+
type: "airtable.field.created",
|
|
49
|
+
},
|
|
50
|
+
airtableFieldDeleted: {
|
|
51
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
52
|
+
type: "airtable.field.deleted",
|
|
53
|
+
},
|
|
54
|
+
airtableFieldUpdated: {
|
|
55
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
56
|
+
type: "airtable.field.updated",
|
|
57
|
+
},
|
|
18
58
|
airtableRecordCreated: {
|
|
19
|
-
account:
|
|
59
|
+
account: AIRTABLE_RECORD_ACCOUNT,
|
|
20
60
|
type: "airtable.record.created",
|
|
21
61
|
},
|
|
22
62
|
airtableRecordDeleted: {
|
|
23
|
-
account:
|
|
63
|
+
account: AIRTABLE_RECORD_ACCOUNT,
|
|
24
64
|
type: "airtable.record.deleted",
|
|
25
65
|
},
|
|
26
66
|
airtableRecordMovedIntoView: {
|
|
27
|
-
account:
|
|
67
|
+
account: AIRTABLE_RECORD_ACCOUNT,
|
|
28
68
|
type: "airtable.record.movedIntoView",
|
|
29
69
|
},
|
|
30
70
|
airtableRecordMovedOutOfView: {
|
|
31
|
-
account:
|
|
71
|
+
account: AIRTABLE_RECORD_ACCOUNT,
|
|
32
72
|
type: "airtable.record.movedOutOfView",
|
|
33
73
|
},
|
|
34
74
|
airtableRecordUpdated: {
|
|
35
|
-
account:
|
|
75
|
+
account: AIRTABLE_RECORD_ACCOUNT,
|
|
36
76
|
type: "airtable.record.updated",
|
|
37
77
|
},
|
|
78
|
+
airtableTableCreated: {
|
|
79
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
80
|
+
type: "airtable.table.created",
|
|
81
|
+
},
|
|
82
|
+
airtableTableDeleted: {
|
|
83
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
84
|
+
type: "airtable.table.deleted",
|
|
85
|
+
},
|
|
86
|
+
airtableTableUpdated: {
|
|
87
|
+
account: AIRTABLE_SCHEMA_ACCOUNT,
|
|
88
|
+
type: "airtable.table.updated",
|
|
89
|
+
},
|
|
38
90
|
} as const satisfies Record<string, TriggerDefinition>
|