@automate.ax/catalog 0.105.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 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 an Airtable account.";
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";
@@ -425,10 +438,23 @@ export declare const linearService: {
425
438
  readonly id: "oauth";
426
439
  readonly name: "OAuth";
427
440
  readonly type: "redirect";
441
+ }, {
442
+ readonly credentialUrl: "https://linear.app/settings/api";
443
+ readonly fields: readonly [{
444
+ readonly placeholder: "lin_api_...";
445
+ readonly input: "password";
446
+ readonly label: "API key";
447
+ readonly name: "apiKey";
448
+ readonly required: true;
449
+ }];
450
+ readonly id: "api-key";
451
+ readonly name: "Personal API key";
452
+ readonly type: "form";
428
453
  }];
429
- readonly description: "Connect a Linear workspace.";
454
+ readonly description: "Connect a Linear workspace with OAuth or a personal API key.";
430
455
  readonly id: "linear";
431
456
  readonly name: "Linear";
457
+ readonly preferredConnectionMethodId: "oauth";
432
458
  };
433
459
  export declare const jobNimbusService: {
434
460
  readonly id: "jobnimbus";
@@ -848,10 +874,23 @@ export declare const integrationCatalog: readonly [{
848
874
  readonly id: "oauth";
849
875
  readonly name: "OAuth";
850
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";
851
889
  }];
852
- readonly description: "Connect an Airtable account.";
890
+ readonly description: "Connect Airtable with OAuth or a personal access token.";
853
891
  readonly id: "airtable";
854
892
  readonly name: "Airtable";
893
+ readonly preferredConnectionMethodId: "oauth";
855
894
  }, {
856
895
  readonly id: "anthropic";
857
896
  readonly name: string;
@@ -1266,10 +1305,23 @@ export declare const integrationCatalog: readonly [{
1266
1305
  readonly id: "oauth";
1267
1306
  readonly name: "OAuth";
1268
1307
  readonly type: "redirect";
1308
+ }, {
1309
+ readonly credentialUrl: "https://linear.app/settings/api";
1310
+ readonly fields: readonly [{
1311
+ readonly placeholder: "lin_api_...";
1312
+ readonly input: "password";
1313
+ readonly label: "API key";
1314
+ readonly name: "apiKey";
1315
+ readonly required: true;
1316
+ }];
1317
+ readonly id: "api-key";
1318
+ readonly name: "Personal API key";
1319
+ readonly type: "form";
1269
1320
  }];
1270
- readonly description: "Connect a Linear workspace.";
1321
+ readonly description: "Connect a Linear workspace with OAuth or a personal API key.";
1271
1322
  readonly id: "linear";
1272
1323
  readonly name: "Linear";
1324
+ readonly preferredConnectionMethodId: "oauth";
1273
1325
  }, {
1274
1326
  readonly connectionMethods: readonly [{
1275
1327
  readonly id: "oauth";
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: [{ id: "oauth", name: "OAuth", type: "redirect" }],
10
- description: "Connect an Airtable account.",
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
- description: "Connect a Brevo API key.",
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-...",
@@ -271,10 +290,20 @@ export const huggingfaceService = defineIntegrationService({
271
290
  name: "Hugging Face",
272
291
  });
273
292
  export const linearService = defineIntegrationService({
274
- connectionMethods: [{ id: "oauth", name: "OAuth", type: "redirect" }],
275
- description: "Connect a Linear workspace.",
293
+ connectionMethods: [
294
+ { id: "oauth", name: "OAuth", type: "redirect" },
295
+ {
296
+ credentialUrl: "https://linear.app/settings/api",
297
+ fields: [{ ...API_KEY_FIELD, placeholder: "lin_api_..." }],
298
+ id: "api-key",
299
+ name: "Personal API key",
300
+ type: "form",
301
+ },
302
+ ],
303
+ description: "Connect a Linear workspace with OAuth or a personal API key.",
276
304
  id: "linear",
277
305
  name: "Linear",
306
+ preferredConnectionMethodId: "oauth",
278
307
  });
279
308
  export const jobNimbusService = defineApiKeyService({
280
309
  credentialUrl: "https://app.jobnimbus.com/account#api",
@@ -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
- const AIRTABLE_ACCOUNT = {
2
- connectionOptions: [
3
- {
4
- requiredScopes: [
5
- {
6
- requirements: ["data.records:read", "webhook:manage"],
7
- type: "and",
8
- },
9
- ],
10
- },
11
- ],
12
- serviceId: "airtable",
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: AIRTABLE_ACCOUNT,
43
+ account: AIRTABLE_RECORD_ACCOUNT,
17
44
  type: "airtable.record.created",
18
45
  },
19
46
  airtableRecordDeleted: {
20
- account: AIRTABLE_ACCOUNT,
47
+ account: AIRTABLE_RECORD_ACCOUNT,
21
48
  type: "airtable.record.deleted",
22
49
  },
23
50
  airtableRecordMovedIntoView: {
24
- account: AIRTABLE_ACCOUNT,
51
+ account: AIRTABLE_RECORD_ACCOUNT,
25
52
  type: "airtable.record.movedIntoView",
26
53
  },
27
54
  airtableRecordMovedOutOfView: {
28
- account: AIRTABLE_ACCOUNT,
55
+ account: AIRTABLE_RECORD_ACCOUNT,
29
56
  type: "airtable.record.movedOutOfView",
30
57
  },
31
58
  airtableRecordUpdated: {
32
- account: AIRTABLE_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
  };
@@ -0,0 +1,80 @@
1
+ export declare const cloudflareTriggerDefinitions: {
2
+ readonly cloudflareAccessCertificateExpiring: {
3
+ readonly account: {
4
+ readonly connectionOptions: readonly [{
5
+ readonly connectionMethodId: "oauth";
6
+ readonly requiredScopes: readonly ["account.write"];
7
+ }, {
8
+ readonly connectionMethodId: "api-token";
9
+ readonly requiredScopes: readonly [];
10
+ }];
11
+ readonly serviceId: "cloudflare";
12
+ };
13
+ readonly type: "cloudflare.accessCertificate.expiring";
14
+ };
15
+ readonly cloudflareLayer4DdosAttack: {
16
+ readonly account: {
17
+ readonly connectionOptions: readonly [{
18
+ readonly connectionMethodId: "oauth";
19
+ readonly requiredScopes: readonly ["account.write"];
20
+ }, {
21
+ readonly connectionMethodId: "api-token";
22
+ readonly requiredScopes: readonly [];
23
+ }];
24
+ readonly serviceId: "cloudflare";
25
+ };
26
+ readonly type: "cloudflare.layer4DdosAttack";
27
+ };
28
+ readonly cloudflareLayer7DdosAttack: {
29
+ readonly account: {
30
+ readonly connectionOptions: readonly [{
31
+ readonly connectionMethodId: "oauth";
32
+ readonly requiredScopes: readonly ["account.write"];
33
+ }, {
34
+ readonly connectionMethodId: "api-token";
35
+ readonly requiredScopes: readonly [];
36
+ }];
37
+ readonly serviceId: "cloudflare";
38
+ };
39
+ readonly type: "cloudflare.layer7DdosAttack";
40
+ };
41
+ readonly cloudflareNotification: {
42
+ readonly account: {
43
+ readonly connectionOptions: readonly [{
44
+ readonly connectionMethodId: "oauth";
45
+ readonly requiredScopes: readonly ["account.write"];
46
+ }, {
47
+ readonly connectionMethodId: "api-token";
48
+ readonly requiredScopes: readonly [];
49
+ }];
50
+ readonly serviceId: "cloudflare";
51
+ };
52
+ readonly type: "cloudflare.notification";
53
+ };
54
+ readonly cloudflareOriginHealthCheckStatusChanged: {
55
+ readonly account: {
56
+ readonly connectionOptions: readonly [{
57
+ readonly connectionMethodId: "oauth";
58
+ readonly requiredScopes: readonly ["account.write"];
59
+ }, {
60
+ readonly connectionMethodId: "api-token";
61
+ readonly requiredScopes: readonly [];
62
+ }];
63
+ readonly serviceId: "cloudflare";
64
+ };
65
+ readonly type: "cloudflare.originHealthCheckStatusChanged";
66
+ };
67
+ readonly cloudflareSslCertificateEvent: {
68
+ readonly account: {
69
+ readonly connectionOptions: readonly [{
70
+ readonly connectionMethodId: "oauth";
71
+ readonly requiredScopes: readonly ["account.write"];
72
+ }, {
73
+ readonly connectionMethodId: "api-token";
74
+ readonly requiredScopes: readonly [];
75
+ }];
76
+ readonly serviceId: "cloudflare";
77
+ };
78
+ readonly type: "cloudflare.sslCertificate.event";
79
+ };
80
+ };
@@ -0,0 +1,33 @@
1
+ const CLOUDFLARE_ACCOUNT = {
2
+ connectionOptions: [
3
+ { connectionMethodId: "oauth", requiredScopes: ["account.write"] },
4
+ { connectionMethodId: "api-token", requiredScopes: [] },
5
+ ],
6
+ serviceId: "cloudflare",
7
+ };
8
+ export const cloudflareTriggerDefinitions = {
9
+ cloudflareAccessCertificateExpiring: {
10
+ account: CLOUDFLARE_ACCOUNT,
11
+ type: "cloudflare.accessCertificate.expiring",
12
+ },
13
+ cloudflareLayer4DdosAttack: {
14
+ account: CLOUDFLARE_ACCOUNT,
15
+ type: "cloudflare.layer4DdosAttack",
16
+ },
17
+ cloudflareLayer7DdosAttack: {
18
+ account: CLOUDFLARE_ACCOUNT,
19
+ type: "cloudflare.layer7DdosAttack",
20
+ },
21
+ cloudflareNotification: {
22
+ account: CLOUDFLARE_ACCOUNT,
23
+ type: "cloudflare.notification",
24
+ },
25
+ cloudflareOriginHealthCheckStatusChanged: {
26
+ account: CLOUDFLARE_ACCOUNT,
27
+ type: "cloudflare.originHealthCheckStatusChanged",
28
+ },
29
+ cloudflareSslCertificateEvent: {
30
+ account: CLOUDFLARE_ACCOUNT,
31
+ type: "cloudflare.sslCertificate.event",
32
+ },
33
+ };