@atom8n/n8n 2.3.2 → 2.4.2

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.
@@ -28,8 +28,8 @@ declare const flagsSchema: z.ZodObject<{
28
28
  skipList?: string | undefined;
29
29
  shortOutput?: boolean | undefined;
30
30
  }, {
31
- output?: string | undefined;
32
31
  debug?: boolean | undefined;
32
+ output?: string | undefined;
33
33
  concurrency?: number | undefined;
34
34
  ids?: string | undefined;
35
35
  compare?: string | undefined;
@@ -10,16 +10,16 @@ declare const flagsSchema: z.ZodObject<{
10
10
  decrypted: z.ZodOptional<z.ZodBoolean>;
11
11
  }, "strip", z.ZodTypeAny, {
12
12
  output?: string | undefined;
13
- all?: boolean | undefined;
14
13
  id?: string | undefined;
14
+ all?: boolean | undefined;
15
15
  backup?: boolean | undefined;
16
16
  pretty?: boolean | undefined;
17
17
  separate?: boolean | undefined;
18
18
  decrypted?: boolean | undefined;
19
19
  }, {
20
20
  output?: string | undefined;
21
- all?: boolean | undefined;
22
21
  id?: string | undefined;
22
+ all?: boolean | undefined;
23
23
  backup?: boolean | undefined;
24
24
  pretty?: boolean | undefined;
25
25
  separate?: boolean | undefined;
@@ -9,15 +9,15 @@ declare const flagsSchema: z.ZodObject<{
9
9
  separate: z.ZodOptional<z.ZodBoolean>;
10
10
  }, "strip", z.ZodTypeAny, {
11
11
  output?: string | undefined;
12
- all?: boolean | undefined;
13
12
  id?: string | undefined;
13
+ all?: boolean | undefined;
14
14
  backup?: boolean | undefined;
15
15
  pretty?: boolean | undefined;
16
16
  separate?: boolean | undefined;
17
17
  }, {
18
18
  output?: string | undefined;
19
- all?: boolean | undefined;
20
19
  id?: string | undefined;
20
+ all?: boolean | undefined;
21
21
  backup?: boolean | undefined;
22
22
  pretty?: boolean | undefined;
23
23
  separate?: boolean | undefined;
@@ -6,12 +6,12 @@ declare const flagsSchema: z.ZodObject<{
6
6
  all: z.ZodOptional<z.ZodBoolean>;
7
7
  }, "strip", z.ZodTypeAny, {
8
8
  id: string;
9
- all?: boolean | undefined;
10
9
  versionId?: string | undefined;
10
+ all?: boolean | undefined;
11
11
  }, {
12
12
  id: string;
13
- all?: boolean | undefined;
14
13
  versionId?: string | undefined;
14
+ all?: boolean | undefined;
15
15
  }>;
16
16
  export declare class PublishWorkflowCommand extends BaseCommand<z.infer<typeof flagsSchema>> {
17
17
  run(): Promise<void>;
@@ -13,8 +13,8 @@ declare const flagsSchema: z.ZodObject<{
13
13
  input?: string | undefined;
14
14
  prompt?: string | undefined;
15
15
  }, {
16
- input?: string | undefined;
17
16
  output?: string | undefined;
17
+ input?: string | undefined;
18
18
  limit?: number | undefined;
19
19
  concurrency?: number | undefined;
20
20
  prompt?: string | undefined;
@@ -4,11 +4,11 @@ declare const flagsSchema: z.ZodObject<{
4
4
  all: z.ZodOptional<z.ZodBoolean>;
5
5
  id: z.ZodOptional<z.ZodString>;
6
6
  }, "strip", z.ZodTypeAny, {
7
- all?: boolean | undefined;
8
7
  id?: string | undefined;
9
- }, {
10
8
  all?: boolean | undefined;
9
+ }, {
11
10
  id?: string | undefined;
11
+ all?: boolean | undefined;
12
12
  }>;
13
13
  export declare class UnpublishWorkflowCommand extends BaseCommand<z.infer<typeof flagsSchema>> {
14
14
  run(): Promise<void>;
@@ -5,13 +5,13 @@ declare const flagsSchema: z.ZodObject<{
5
5
  all: z.ZodOptional<z.ZodBoolean>;
6
6
  id: z.ZodOptional<z.ZodString>;
7
7
  }, "strip", z.ZodTypeAny, {
8
- all?: boolean | undefined;
9
8
  id?: string | undefined;
10
9
  active?: string | undefined;
11
- }, {
12
10
  all?: boolean | undefined;
11
+ }, {
13
12
  id?: string | undefined;
14
13
  active?: string | undefined;
14
+ all?: boolean | undefined;
15
15
  }>;
16
16
  export declare class UpdateWorkflowCommand extends BaseCommand<z.infer<typeof flagsSchema>> {
17
17
  run(): Promise<void>;
@@ -4,8 +4,8 @@ export declare class AnnotationTagsController {
4
4
  private readonly annotationTagService;
5
5
  constructor(annotationTagService: AnnotationTagService);
6
6
  getAll(req: AnnotationTagsRequest.GetAll): Promise<{
7
- name: string;
8
7
  id: string;
8
+ name: string;
9
9
  createdAt: Date;
10
10
  updatedAt: Date;
11
11
  }[]>;
@@ -214,7 +214,6 @@ export declare class LoadNodesAndCredentials {
214
214
  private runDirectoryLoader;
215
215
  createAiTools(): void;
216
216
  postProcessLoaders(): Promise<void>;
217
- private getPackageNameAliases;
218
217
  recognizesNode(fullNodeType: string): boolean;
219
218
  getNode(fullNodeType: string): LoadedClass<INodeType | IVersionedNodeType>;
220
219
  getCredential(credentialType: string): LoadedClass<ICredentialType>;
@@ -325,23 +325,6 @@ let LoadNodesAndCredentials = class LoadNodesAndCredentials {
325
325
  }
326
326
  await loader.loadAll();
327
327
  this.loaders[loader.packageName] = loader;
328
- if (loader instanceof n8n_core_1.PackageDirectoryLoader) {
329
- const packageName = loader.packageName;
330
- const nodeTypePrefix = loader.nodeTypePrefix;
331
- if (packageName.startsWith('@') && packageName.includes('/')) {
332
- const parts = packageName.split('/');
333
- if (parts.length === 2) {
334
- const unscopedName = parts[1];
335
- if ((unscopedName.startsWith('n8n-') || unscopedName === 'n8n') &&
336
- !(unscopedName in this.loaders)) {
337
- this.loaders[unscopedName] = loader;
338
- }
339
- }
340
- }
341
- if (nodeTypePrefix !== packageName && !(nodeTypePrefix in this.loaders)) {
342
- this.loaders[nodeTypePrefix] = loader;
343
- }
344
- }
345
328
  return loader;
346
329
  }
347
330
  createAiTools() {
@@ -367,10 +350,10 @@ let LoadNodesAndCredentials = class LoadNodesAndCredentials {
367
350
  this.loaded = { nodes: {}, credentials: {} };
368
351
  this.types = { nodes: [], credentials: [] };
369
352
  for (const loader of Object.values(this.loaders)) {
370
- const { known, types, directory, nodeTypePrefix } = loader;
353
+ const { known, types, directory, packageName } = loader;
371
354
  this.types.nodes = this.types.nodes.concat(types.nodes.map(({ name, ...rest }) => ({
372
355
  ...rest,
373
- name: `${nodeTypePrefix}.${name}`,
356
+ name: `${packageName}.${name}`,
374
357
  })));
375
358
  const processedCredentials = types.credentials.map((credential) => {
376
359
  if (this.shouldAddDomainRestrictions(credential)) {
@@ -381,14 +364,14 @@ let LoadNodesAndCredentials = class LoadNodesAndCredentials {
381
364
  return {
382
365
  ...clonedCredential,
383
366
  supportedNodes: loader instanceof n8n_core_1.PackageDirectoryLoader
384
- ? credential.supportedNodes?.map((nodeName) => `${loader.nodeTypePrefix}.${nodeName}`)
367
+ ? credential.supportedNodes?.map((nodeName) => `${loader.packageName}.${nodeName}`)
385
368
  : undefined,
386
369
  };
387
370
  }
388
371
  return {
389
372
  ...credential,
390
373
  supportedNodes: loader instanceof n8n_core_1.PackageDirectoryLoader
391
- ? credential.supportedNodes?.map((nodeName) => `${loader.nodeTypePrefix}.${nodeName}`)
374
+ ? credential.supportedNodes?.map((nodeName) => `${loader.packageName}.${nodeName}`)
392
375
  : undefined,
393
376
  };
394
377
  });
@@ -403,7 +386,7 @@ let LoadNodesAndCredentials = class LoadNodesAndCredentials {
403
386
  }
404
387
  for (const type in known.nodes) {
405
388
  const { className, sourcePath } = known.nodes[type];
406
- this.known.nodes[`${nodeTypePrefix}.${type}`] = {
389
+ this.known.nodes[`${packageName}.${type}`] = {
407
390
  className,
408
391
  sourcePath: path_1.default.join(directory, sourcePath),
409
392
  };
@@ -414,7 +397,7 @@ let LoadNodesAndCredentials = class LoadNodesAndCredentials {
414
397
  className,
415
398
  sourcePath: path_1.default.join(directory, sourcePath),
416
399
  supportedNodes: loader instanceof n8n_core_1.PackageDirectoryLoader
417
- ? supportedNodes?.map((nodeName) => `${loader.nodeTypePrefix}.${nodeName}`)
400
+ ? supportedNodes?.map((nodeName) => `${loader.packageName}.${nodeName}`)
418
401
  : undefined,
419
402
  extends: extendsArr,
420
403
  };
@@ -427,62 +410,25 @@ let LoadNodesAndCredentials = class LoadNodesAndCredentials {
427
410
  await postProcessor();
428
411
  }
429
412
  }
430
- getPackageNameAliases(packageName) {
431
- const aliases = [packageName];
432
- if (packageName.startsWith('@') && packageName.includes('/')) {
433
- const parts = packageName.split('/');
434
- if (parts.length === 2) {
435
- const unscopedName = parts[1];
436
- if (unscopedName.startsWith('n8n-') || unscopedName === 'n8n') {
437
- aliases.push(unscopedName);
438
- }
439
- }
440
- }
441
- else if (packageName.startsWith('n8n-') || packageName === 'n8n') {
442
- for (const loadedPackageName of Object.keys(this.loaders)) {
443
- if (loadedPackageName.startsWith('@') && loadedPackageName.endsWith(`/${packageName}`)) {
444
- aliases.push(loadedPackageName);
445
- break;
446
- }
447
- }
448
- }
449
- for (const loader of Object.values(this.loaders)) {
450
- if (loader instanceof n8n_core_1.PackageDirectoryLoader &&
451
- loader.nodeTypePrefix === packageName &&
452
- !aliases.includes(loader.packageName)) {
453
- aliases.push(loader.packageName);
454
- }
455
- }
456
- return aliases;
457
- }
458
413
  recognizesNode(fullNodeType) {
459
414
  const [packageName, nodeType] = fullNodeType.split('.');
460
415
  const { loaders } = this;
461
- const aliases = this.getPackageNameAliases(packageName);
462
- for (const alias of aliases) {
463
- const loader = loaders[alias];
464
- if (loader && nodeType in loader.known.nodes) {
465
- return true;
466
- }
467
- }
468
- return false;
416
+ const loader = loaders[packageName];
417
+ return !!loader && nodeType in loader.known.nodes;
469
418
  }
470
419
  getNode(fullNodeType) {
471
420
  const [packageName, nodeType] = fullNodeType.split('.');
472
421
  const { loaders } = this;
473
- const aliases = this.getPackageNameAliases(packageName);
474
- for (const alias of aliases) {
475
- const loader = loaders[alias];
476
- if (loader) {
477
- const loadedNode = loader.getNode(nodeType);
478
- if (this.shouldInjectContextEstablishmentHooks() &&
479
- 'properties' in loadedNode.type.description) {
480
- this.augmentNodeTypeDescription(loadedNode.type.description);
481
- }
482
- return loadedNode;
483
- }
422
+ const loader = loaders[packageName];
423
+ if (!loader) {
424
+ throw new n8n_core_1.UnrecognizedNodeTypeError(packageName, nodeType);
425
+ }
426
+ const loadedNode = loader.getNode(nodeType);
427
+ if (this.shouldInjectContextEstablishmentHooks() &&
428
+ 'properties' in loadedNode.type.description) {
429
+ this.augmentNodeTypeDescription(loadedNode.type.description);
484
430
  }
485
- throw new n8n_core_1.UnrecognizedNodeTypeError(packageName, nodeType);
431
+ return loadedNode;
486
432
  }
487
433
  getCredential(credentialType) {
488
434
  const { loadedCredentials } = this;
@@ -35,30 +35,30 @@ declare const inputSchema: z.ZodObject<{
35
35
  headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
36
36
  }, "strip", z.ZodTypeAny, {
37
37
  method: "GET" | "DELETE" | "HEAD" | "OPTIONS" | "POST" | "PUT" | "PATCH";
38
- headers?: Record<string, string> | undefined;
39
38
  body?: Record<string, unknown> | undefined;
40
39
  query?: Record<string, string> | undefined;
41
- }, {
42
40
  headers?: Record<string, string> | undefined;
43
- method?: "GET" | "DELETE" | "HEAD" | "OPTIONS" | "POST" | "PUT" | "PATCH" | undefined;
41
+ }, {
44
42
  body?: Record<string, unknown> | undefined;
43
+ method?: "GET" | "DELETE" | "HEAD" | "OPTIONS" | "POST" | "PUT" | "PATCH" | undefined;
45
44
  query?: Record<string, string> | undefined;
45
+ headers?: Record<string, string> | undefined;
46
46
  }>;
47
47
  }, "strip", z.ZodTypeAny, {
48
48
  type: "webhook";
49
49
  webhookData: {
50
50
  method: "GET" | "DELETE" | "HEAD" | "OPTIONS" | "POST" | "PUT" | "PATCH";
51
- headers?: Record<string, string> | undefined;
52
51
  body?: Record<string, unknown> | undefined;
53
52
  query?: Record<string, string> | undefined;
53
+ headers?: Record<string, string> | undefined;
54
54
  };
55
55
  }, {
56
56
  type: "webhook";
57
57
  webhookData: {
58
- headers?: Record<string, string> | undefined;
59
- method?: "GET" | "DELETE" | "HEAD" | "OPTIONS" | "POST" | "PUT" | "PATCH" | undefined;
60
58
  body?: Record<string, unknown> | undefined;
59
+ method?: "GET" | "DELETE" | "HEAD" | "OPTIONS" | "POST" | "PUT" | "PATCH" | undefined;
61
60
  query?: Record<string, string> | undefined;
61
+ headers?: Record<string, string> | undefined;
62
62
  };
63
63
  }>]>>;
64
64
  }, "strip", z.ZodTypeAny, {
@@ -73,9 +73,9 @@ declare const inputSchema: z.ZodObject<{
73
73
  type: "webhook";
74
74
  webhookData: {
75
75
  method: "GET" | "DELETE" | "HEAD" | "OPTIONS" | "POST" | "PUT" | "PATCH";
76
- headers?: Record<string, string> | undefined;
77
76
  body?: Record<string, unknown> | undefined;
78
77
  query?: Record<string, string> | undefined;
78
+ headers?: Record<string, string> | undefined;
79
79
  };
80
80
  } | undefined;
81
81
  }, {
@@ -89,10 +89,10 @@ declare const inputSchema: z.ZodObject<{
89
89
  } | {
90
90
  type: "webhook";
91
91
  webhookData: {
92
- headers?: Record<string, string> | undefined;
93
- method?: "GET" | "DELETE" | "HEAD" | "OPTIONS" | "POST" | "PUT" | "PATCH" | undefined;
94
92
  body?: Record<string, unknown> | undefined;
93
+ method?: "GET" | "DELETE" | "HEAD" | "OPTIONS" | "POST" | "PUT" | "PATCH" | undefined;
95
94
  query?: Record<string, string> | undefined;
95
+ headers?: Record<string, string> | undefined;
96
96
  };
97
97
  } | undefined;
98
98
  }>;
@@ -43,7 +43,7 @@ export declare class WorkflowService {
43
43
  private readonly nodeTypes;
44
44
  constructor(logger: Logger, sharedWorkflowRepository: SharedWorkflowRepository, workflowRepository: WorkflowRepository, workflowTagMappingRepository: WorkflowTagMappingRepository, binaryDataService: BinaryDataService, ownershipService: OwnershipService, tagService: TagService, workflowHistoryService: WorkflowHistoryService, externalHooks: ExternalHooks, activeWorkflowManager: ActiveWorkflowManager, roleService: RoleService, workflowSharingService: WorkflowSharingService, projectService: ProjectService, executionRepository: ExecutionRepository, eventService: EventService, globalConfig: GlobalConfig, folderRepository: FolderRepository, workflowFinderService: WorkflowFinderService, workflowPublishHistoryRepository: WorkflowPublishHistoryRepository, workflowValidationService: WorkflowValidationService, nodeTypes: NodeTypes);
45
45
  getMany(user: User, options?: ListQuery.Options, includeScopes?: boolean, includeFolders?: boolean, onlySharedWithMe?: boolean, requiredScopes?: Scope[]): Promise<{
46
- workflows: ((Pick<WorkflowEntity, "id"> & Partial<Pick<WorkflowEntity, "name" | "description" | "tags" | "active" | "versionId" | "activeVersionId" | "createdAt" | "updatedAt">>) | (import("@n8n/db").Folder & {
46
+ workflows: ((Pick<WorkflowEntity, "id"> & Partial<Pick<WorkflowEntity, "description" | "tags" | "name" | "active" | "versionId" | "activeVersionId" | "createdAt" | "updatedAt">>) | (import("@n8n/db").Folder & {
47
47
  workflowCount?: boolean;
48
48
  subFolderCount?: number;
49
49
  } & {
@@ -82,9 +82,9 @@ export declare class WorkflowService {
82
82
  getWorkflowsWithNodesIncluded(user: User, nodeTypes: string[], includeNodes?: boolean): Promise<{
83
83
  nodes?: INode[] | undefined;
84
84
  id: string;
85
- name?: string | undefined;
86
85
  description?: string | null | undefined;
87
86
  tags?: import("@n8n/db").TagEntity[] | undefined;
87
+ name?: string | undefined;
88
88
  active?: boolean | undefined;
89
89
  versionId?: string | undefined;
90
90
  activeVersionId?: string | null | undefined;
@@ -50,10 +50,10 @@ export declare class WorkflowsController {
50
50
  homeProject?: import("@n8n/db").SlimProject | null;
51
51
  sharedWithProjects: import("@n8n/db").SlimProject[];
52
52
  usedCredentials?: import("@n8n/db").CredentialUsedByWorkflow[];
53
- name: string;
54
53
  description: string | null;
55
54
  tags?: import("@n8n/db").TagEntity[] | undefined;
56
55
  id: string;
56
+ name: string;
57
57
  active: boolean;
58
58
  versionId: string;
59
59
  activeVersionId: string | null;
@@ -87,10 +87,10 @@ export declare class WorkflowsController {
87
87
  homeProject?: import("@n8n/db").SlimProject | null;
88
88
  sharedWithProjects: import("@n8n/db").SlimProject[];
89
89
  usedCredentials?: import("@n8n/db").CredentialUsedByWorkflow[];
90
- name: string;
91
90
  description: string | null;
92
91
  tags?: import("@n8n/db").TagEntity[] | undefined;
93
92
  id: string;
93
+ name: string;
94
94
  active: boolean;
95
95
  versionId: string;
96
96
  activeVersionId: string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atom8n/n8n",
3
- "version": "2.3.2",
3
+ "version": "2.4.2",
4
4
  "description": "n8n Workflow Automation Tool",
5
5
  "main": "dist/index",
6
6
  "types": "dist/index.d.ts",
@@ -56,8 +56,8 @@
56
56
  "dist"
57
57
  ],
58
58
  "devDependencies": {
59
- "@n8n/typescript-config": "npm:@atom8n/typescript-config@1.4.0",
60
- "@n8n/backend-test-utils": "npm:@atom8n/backend-test-utils@1.3.0",
59
+ "@n8n/typescript-config": "npm:@atom8n/typescript-config@1.5.0",
60
+ "@n8n/backend-test-utils": "npm:@atom8n/backend-test-utils@1.4.0",
61
61
  "@redocly/cli": "^1.28.5",
62
62
  "@types/aws4": "^1.5.1",
63
63
  "@types/bcryptjs": "^2.4.2",
@@ -95,22 +95,22 @@
95
95
  "@azure/identity": "4.13.0",
96
96
  "@azure/keyvault-secrets": "4.8.0",
97
97
  "@google-cloud/secret-manager": "5.6.0",
98
- "@n8n/ai-workflow-builder": "npm:@atom8n/ai-workflow-builder@1.3.0",
99
- "@n8n/api-types": "npm:@atom8n/api-types@1.3.0",
100
- "@n8n/backend-common": "npm:@atom8n/backend-common@1.3.0",
101
- "@n8n/client-oauth2": "npm:@atom8n/client-oauth2@1.1.0",
102
- "@n8n/config": "npm:@atom8n/config@2.2.0",
103
- "@n8n/constants": "npm:@atom8n/constants@0.16.0",
104
- "@n8n/db": "npm:@atom8n/db@1.3.0",
105
- "@n8n/decorators": "npm:@atom8n/decorators@1.3.0",
106
- "@n8n/di": "npm:@atom8n/di@0.11.0",
107
- "@n8n/errors": "npm:@atom8n/errors@0.6.0",
98
+ "@n8n/ai-workflow-builder": "npm:@atom8n/ai-workflow-builder@1.4.0",
99
+ "@n8n/api-types": "npm:@atom8n/api-types@1.4.0",
100
+ "@n8n/backend-common": "npm:@atom8n/backend-common@1.4.0",
101
+ "@n8n/client-oauth2": "npm:@atom8n/client-oauth2@1.2.0",
102
+ "@n8n/config": "npm:@atom8n/config@2.3.0",
103
+ "@n8n/constants": "npm:@atom8n/constants@0.17.0",
104
+ "@n8n/db": "npm:@atom8n/db@1.4.0",
105
+ "@n8n/decorators": "npm:@atom8n/decorators@1.4.0",
106
+ "@n8n/di": "npm:@atom8n/di@0.12.0",
107
+ "@n8n/errors": "npm:@atom8n/errors@0.7.0",
108
108
  "@n8n/localtunnel": "3.0.0",
109
- "@n8n/n8n-nodes-langchain": "npm:@atom8n/n8n-nodes-langchain@2.3.0",
110
- "@n8n/permissions": "npm:@atom8n/permissions@0.46.0",
111
- "@n8n/task-runner": "npm:@atom8n/task-runner@2.3.0",
109
+ "@n8n/n8n-nodes-langchain": "npm:@atom8n/n8n-nodes-langchain@2.4.0",
110
+ "@n8n/permissions": "npm:@atom8n/permissions@0.47.0",
111
+ "@n8n/task-runner": "npm:@atom8n/task-runner@2.4.0",
112
112
  "@n8n/typeorm": "0.3.20-15",
113
- "@n8n/utils": "npm:@atom8n/utils@1.22.0",
113
+ "@n8n/utils": "npm:@atom8n/utils@1.23.0",
114
114
  "@n8n_io/ai-assistant-sdk": "1.19.1",
115
115
  "@n8n_io/license-sdk": "2.24.1",
116
116
  "@rudderstack/rudder-sdk-node": "2.1.4",
@@ -151,10 +151,10 @@
151
151
  "lodash": "4.17.21",
152
152
  "luxon": "3.4.4",
153
153
  "mysql2": "3.15.0",
154
- "n8n-core": "npm:@atom8n/n8n-core@2.3.1",
155
- "n8n-editor-ui": "npm:@atom8n/n8n-editor-ui@2.3.0",
156
- "n8n-nodes-base": "npm:@atom8n/n8n-nodes-base@2.3.0",
157
- "n8n-workflow": "npm:@atom8n/n8n-workflow@2.3.0",
154
+ "n8n-core": "npm:@atom8n/n8n-core@2.4.2",
155
+ "n8n-editor-ui": "npm:@atom8n/n8n-editor-ui@2.4.0",
156
+ "n8n-nodes-base": "npm:@atom8n/n8n-nodes-base@2.4.0",
157
+ "n8n-workflow": "npm:@atom8n/n8n-workflow@2.4.0",
158
158
  "nanoid": "3.3.8",
159
159
  "nodemailer": "7.0.11",
160
160
  "oauth-1.0a": "2.2.6",