n8n-nodes-keephub 1.6.0 β 1.7.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/README.md +52 -2
- package/dist/nodes/Keephub/Keephub.node.d.ts.map +1 -1
- package/dist/nodes/Keephub/Keephub.node.js +7 -0
- package/dist/nodes/Keephub/Keephub.node.js.map +1 -1
- package/dist/nodes/Keephub/actions/storage/getSignedUrl.d.ts +9 -0
- package/dist/nodes/Keephub/actions/storage/getSignedUrl.d.ts.map +1 -0
- package/dist/nodes/Keephub/actions/storage/getSignedUrl.js +48 -0
- package/dist/nodes/Keephub/actions/storage/getSignedUrl.js.map +1 -0
- package/dist/nodes/Keephub/actions/storage/index.d.ts +2 -0
- package/dist/nodes/Keephub/actions/storage/index.d.ts.map +1 -0
- package/dist/nodes/Keephub/actions/storage/index.js +6 -0
- package/dist/nodes/Keephub/actions/storage/index.js.map +1 -0
- package/dist/nodes/Keephub/descriptions/StorageDescription.d.ts +3 -0
- package/dist/nodes/Keephub/descriptions/StorageDescription.d.ts.map +1 -0
- package/dist/nodes/Keephub/descriptions/StorageDescription.js +76 -0
- package/dist/nodes/Keephub/descriptions/StorageDescription.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -414,6 +414,47 @@ Output:
|
|
|
414
414
|
|
|
415
415
|
---
|
|
416
416
|
|
|
417
|
+
### ποΈ **Storage Operations**
|
|
418
|
+
|
|
419
|
+
| Operation | Description |
|
|
420
|
+
| ------------------- | --------------------------------------------------------- |
|
|
421
|
+
| π **Get Signed URL** | Generate a pre-signed URL for secure access to a stored file |
|
|
422
|
+
|
|
423
|
+
**Use case:** Retrieve a signed CloudFront URL for a file attached to a task, form answer, or content item, then pass it directly to an AI vision model for analysis.
|
|
424
|
+
|
|
425
|
+
**Required fields:**
|
|
426
|
+
|
|
427
|
+
| Field | Description |
|
|
428
|
+
| ----- | ----------- |
|
|
429
|
+
| **Origin** | The entity type that owns the file (e.g. `Task Form Answer`, `Content Attachment`) |
|
|
430
|
+
| **Origin ID** | The `_id` of the owning entity β use `{{ $json._id }}` from a preceding Keephub node |
|
|
431
|
+
| **Storage ID** | The S3 path of the file β use `{{ $json.answers[N].value.value }}` for upload form answers |
|
|
432
|
+
| **Force Download** | Optional. Sets `Content-Disposition: attachment` to force a file download instead of inline display |
|
|
433
|
+
|
|
434
|
+
**Example:**
|
|
435
|
+
|
|
436
|
+
```json
|
|
437
|
+
{
|
|
438
|
+
"resource": "storage",
|
|
439
|
+
"operation": "getSignedUrl",
|
|
440
|
+
"origin": "taskFormAnswer",
|
|
441
|
+
"originId": "699974e8f6c386b2e3e93cbc",
|
|
442
|
+
"storageId": "live/image/dev/contents/abc123/photo.jpg"
|
|
443
|
+
}
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
**Output:**
|
|
447
|
+
|
|
448
|
+
```json
|
|
449
|
+
{
|
|
450
|
+
"url": "https://d2qp115j4w1ptn.cloudfront.net/live/image/...?Expires=...&Signature=..."
|
|
451
|
+
}
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
> β οΈ The returned URL is time-limited and contains embedded credentials. Treat it as a secret and use it immediately in your workflow β do not log or store it.
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
417
458
|
## π Credentials Setup
|
|
418
459
|
|
|
419
460
|
Keephub uses **two separate credential types** β select the matching authentication method from the **Authentication** dropdown on the Keephub node.
|
|
@@ -578,13 +619,15 @@ n8n-nodes-keephub/
|
|
|
578
619
|
β β βββ ContentDescription.ts
|
|
579
620
|
β β βββ TaskDescription.ts
|
|
580
621
|
β β βββ FormSubmissionDescription.ts
|
|
581
|
-
β β
|
|
622
|
+
β β βββ OrgchartDescription.ts
|
|
623
|
+
β β βββ StorageDescription.ts
|
|
582
624
|
β βββ actions/ # Operation implementations
|
|
583
625
|
β β βββ user/
|
|
584
626
|
β β βββ content/
|
|
585
627
|
β β βββ task/
|
|
586
628
|
β β βββ formSubmission/
|
|
587
|
-
β β
|
|
629
|
+
β β βββ orgchart/
|
|
630
|
+
β β βββ storage/
|
|
588
631
|
β βββ utils/
|
|
589
632
|
β βββ helpers.ts
|
|
590
633
|
βββ credentials/
|
|
@@ -714,6 +757,13 @@ npm run lint
|
|
|
714
757
|
- β
Added **Approve Content** operation β approve content pending approval
|
|
715
758
|
- β Added **Reject Content** operation β reject content pending approval
|
|
716
759
|
|
|
760
|
+
### v1.7.0 (2026-02-22)
|
|
761
|
+
|
|
762
|
+
- ποΈ Added **Storage** resource with **Get Signed URL** operation
|
|
763
|
+
- Generates pre-signed CloudFront URLs for secure file access from tasks, form answers, and content
|
|
764
|
+
- Supports all 11 origin types with inline field hints for common expressions
|
|
765
|
+
- Optional Force Download flag to set `Content-Disposition: attachment`
|
|
766
|
+
|
|
717
767
|
---
|
|
718
768
|
|
|
719
769
|
## π€ Contributing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Keephub.node.d.ts","sourceRoot":"","sources":["../../../nodes/Keephub/Keephub.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAGpB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Keephub.node.d.ts","sourceRoot":"","sources":["../../../nodes/Keephub/Keephub.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAGpB,MAAM,cAAc,CAAC;AActB,qBAAa,OAAQ,YAAW,SAAS;IACxC,WAAW,EAAE,oBAAoB,CAyE/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAmFvE"}
|
|
@@ -40,11 +40,13 @@ const formSubmissionActions = __importStar(require("./actions/formSubmission/ind
|
|
|
40
40
|
const orgchartActions = __importStar(require("./actions/orgchart/index"));
|
|
41
41
|
const userActions = __importStar(require("./actions/user"));
|
|
42
42
|
const taskActions = __importStar(require("./actions/task"));
|
|
43
|
+
const storageActions = __importStar(require("./actions/storage"));
|
|
43
44
|
const ContentDescription_1 = require("./descriptions/ContentDescription");
|
|
44
45
|
const FormSubmissionDescription_1 = require("./descriptions/FormSubmissionDescription");
|
|
45
46
|
const OrgchartDescription_1 = require("./descriptions/OrgchartDescription");
|
|
46
47
|
const TaskDescription_1 = require("./descriptions/TaskDescription");
|
|
47
48
|
const UserDescription_1 = require("./descriptions/UserDescription");
|
|
49
|
+
const StorageDescription_1 = require("./descriptions/StorageDescription");
|
|
48
50
|
class Keephub {
|
|
49
51
|
constructor() {
|
|
50
52
|
this.description = {
|
|
@@ -106,6 +108,7 @@ class Keephub {
|
|
|
106
108
|
{ name: 'Content', value: 'content' },
|
|
107
109
|
{ name: 'Form Submission', value: 'formSubmission' },
|
|
108
110
|
{ name: 'Orgchart', value: 'orgchart' },
|
|
111
|
+
{ name: 'Storage', value: 'storage' },
|
|
109
112
|
{ name: 'Task', value: 'task' },
|
|
110
113
|
{ name: 'User', value: 'user' },
|
|
111
114
|
],
|
|
@@ -114,6 +117,7 @@ class Keephub {
|
|
|
114
117
|
...ContentDescription_1.contentFields,
|
|
115
118
|
...FormSubmissionDescription_1.formSubmissionFields,
|
|
116
119
|
...OrgchartDescription_1.orgchartFields,
|
|
120
|
+
...StorageDescription_1.storageFields,
|
|
117
121
|
...TaskDescription_1.taskFields,
|
|
118
122
|
...UserDescription_1.userFields,
|
|
119
123
|
],
|
|
@@ -160,6 +164,9 @@ class Keephub {
|
|
|
160
164
|
approveTask: taskActions.approveTaskExecute,
|
|
161
165
|
rejectTask: taskActions.rejectTaskExecute,
|
|
162
166
|
},
|
|
167
|
+
storage: {
|
|
168
|
+
getSignedUrl: storageActions.getSignedUrlExecute,
|
|
169
|
+
},
|
|
163
170
|
user: {
|
|
164
171
|
getById: userActions.getByIdExecute,
|
|
165
172
|
findByLoginName: userActions.findByLoginNameExecute,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Keephub.node.js","sourceRoot":"","sources":["../../../nodes/Keephub/Keephub.node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAOsB;AACtB,kEAAoD;AACpD,sFAAwE;AACxE,0EAA4D;AAC5D,4DAA8C;AAC9C,4DAA8C;AAC9C,0EAAkE;AAClE,wFAAgF;AAChF,4EAAoE;AACpE,oEAA4D;AAC5D,oEAA4D;
|
|
1
|
+
{"version":3,"file":"Keephub.node.js","sourceRoot":"","sources":["../../../nodes/Keephub/Keephub.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { INodeExecutionData, IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
+
export declare const description: {
|
|
3
|
+
displayName: string;
|
|
4
|
+
name: string;
|
|
5
|
+
action: string;
|
|
6
|
+
description: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function execute(this: IExecuteFunctions, item: INodeExecutionData, index: number): Promise<INodeExecutionData[]>;
|
|
9
|
+
//# sourceMappingURL=getSignedUrl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSignedUrl.d.ts","sourceRoot":"","sources":["../../../../../nodes/Keephub/actions/storage/getSignedUrl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAe,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAIvF,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC;AAEF,wBAAsB,OAAO,CAC5B,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAyC/B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.description = void 0;
|
|
4
|
+
exports.execute = execute;
|
|
5
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
6
|
+
const helpers_1 = require("../../utils/helpers");
|
|
7
|
+
exports.description = {
|
|
8
|
+
displayName: 'Get Signed URL',
|
|
9
|
+
name: 'getSignedUrl',
|
|
10
|
+
action: 'Get a signed URL for a stored file',
|
|
11
|
+
description: 'Generate a pre-signed URL for secure access to a file stored in Keephub',
|
|
12
|
+
};
|
|
13
|
+
async function execute(item, index) {
|
|
14
|
+
const origin = this.getNodeParameter('origin', index);
|
|
15
|
+
const originId = this.getNodeParameter('originId', index);
|
|
16
|
+
const storageId = this.getNodeParameter('storageId', index);
|
|
17
|
+
const attachment = this.getNodeParameter('attachment', index, false);
|
|
18
|
+
if (!origin || origin.trim().length === 0) {
|
|
19
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Origin cannot be empty', { itemIndex: index });
|
|
20
|
+
}
|
|
21
|
+
if (!originId || originId.trim().length === 0) {
|
|
22
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Origin ID cannot be empty', {
|
|
23
|
+
itemIndex: index,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (!storageId || storageId.trim().length === 0) {
|
|
27
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Storage ID cannot be empty', {
|
|
28
|
+
itemIndex: index,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
const body = {
|
|
32
|
+
signType: 'getObject',
|
|
33
|
+
origin,
|
|
34
|
+
originId,
|
|
35
|
+
storageId,
|
|
36
|
+
};
|
|
37
|
+
if (attachment) {
|
|
38
|
+
body.attachment = true;
|
|
39
|
+
}
|
|
40
|
+
const response = await helpers_1.apiRequest.call(this, 'POST', '/signurl', body);
|
|
41
|
+
return [
|
|
42
|
+
{
|
|
43
|
+
json: response,
|
|
44
|
+
pairedItem: { item: index },
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=getSignedUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSignedUrl.js","sourceRoot":"","sources":["../../../../../nodes/Keephub/actions/storage/getSignedUrl.ts"],"names":[],"mappings":";;;AAWA,0BA6CC;AAvDD,+CAAkD;AAClD,iDAAiD;AAEpC,QAAA,WAAW,GAAG;IAC1B,WAAW,EAAE,gBAAgB;IAC7B,IAAI,EAAE,cAAc;IACpB,MAAM,EAAE,oCAAoC;IAC5C,WAAW,EAAE,yEAAyE;CACtF,CAAC;AAEK,KAAK,UAAU,OAAO,CAE5B,IAAwB,EACxB,KAAa;IAEb,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAW,CAAC;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAW,CAAC;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAW,CAAC;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAY,CAAC;IAEhF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,wBAAwB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,2BAA2B,EAAE;YACzE,SAAS,EAAE,KAAK;SAChB,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,4BAA4B,EAAE;YAC1E,SAAS,EAAE,KAAK;SAChB,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAgB;QACzB,QAAQ,EAAE,WAAW;QACrB,MAAM;QACN,QAAQ;QACR,SAAS;KACT,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,oBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAEvE,OAAO;QACN;YACC,IAAI,EAAE,QAAuB;YAC7B,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SAC3B;KACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../nodes/Keephub/actions/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSignedUrlExecute = void 0;
|
|
4
|
+
var getSignedUrl_1 = require("./getSignedUrl");
|
|
5
|
+
Object.defineProperty(exports, "getSignedUrlExecute", { enumerable: true, get: function () { return getSignedUrl_1.execute; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/Keephub/actions/storage/index.ts"],"names":[],"mappings":";;;AAAA,+CAAgE;AAAvD,mHAAA,OAAO,OAAuB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageDescription.d.ts","sourceRoot":"","sources":["../../../../nodes/Keephub/descriptions/StorageDescription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,aAAa,EAAE,eAAe,EA8E1C,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.storageFields = void 0;
|
|
4
|
+
exports.storageFields = [
|
|
5
|
+
{
|
|
6
|
+
displayName: 'Operation',
|
|
7
|
+
name: 'operation',
|
|
8
|
+
type: 'options',
|
|
9
|
+
noDataExpression: true,
|
|
10
|
+
displayOptions: { show: { resource: ['storage'] } },
|
|
11
|
+
options: [
|
|
12
|
+
{
|
|
13
|
+
name: 'Get Signed URL',
|
|
14
|
+
value: 'getSignedUrl',
|
|
15
|
+
description: 'Generate a pre-signed URL for secure access to a stored file',
|
|
16
|
+
action: 'Get a signed URL for a stored file',
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
default: 'getSignedUrl',
|
|
20
|
+
},
|
|
21
|
+
// ββ Origin ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
22
|
+
{
|
|
23
|
+
displayName: 'Origin',
|
|
24
|
+
name: 'origin',
|
|
25
|
+
type: 'options',
|
|
26
|
+
required: true,
|
|
27
|
+
displayOptions: { show: { resource: ['storage'], operation: ['getSignedUrl'] } },
|
|
28
|
+
options: [
|
|
29
|
+
{ name: 'Content Attachment', value: 'contentAttachment' },
|
|
30
|
+
{ name: 'Content Template Attachment', value: 'contentTemplateAttachment' },
|
|
31
|
+
{ name: 'Content Video', value: 'contentVideo' },
|
|
32
|
+
{ name: 'External Attachment', value: 'externalAttachment' },
|
|
33
|
+
{ name: 'Form Values Attachment', value: 'formValuesAttachment' },
|
|
34
|
+
{ name: 'Form Values Video', value: 'formValuesVideo' },
|
|
35
|
+
{ name: 'Lesson Attachment', value: 'lessonAttachment' },
|
|
36
|
+
{ name: 'Task Attachment', value: 'taskAttachment' },
|
|
37
|
+
{ name: 'Task Form Answer', value: 'taskFormAnswer' },
|
|
38
|
+
{ name: 'Tasktemplate Attachment', value: 'tasktemplateAttachment' },
|
|
39
|
+
{ name: 'Tasktemplate Video', value: 'tasktemplateVideo' },
|
|
40
|
+
],
|
|
41
|
+
default: 'taskFormAnswer',
|
|
42
|
+
description: 'The origin type of the file. Determines which entity is used for access verification.',
|
|
43
|
+
},
|
|
44
|
+
// ββ Origin ID ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
45
|
+
{
|
|
46
|
+
displayName: 'Origin ID',
|
|
47
|
+
name: 'originId',
|
|
48
|
+
type: 'string',
|
|
49
|
+
required: true,
|
|
50
|
+
displayOptions: { show: { resource: ['storage'], operation: ['getSignedUrl'] } },
|
|
51
|
+
default: '',
|
|
52
|
+
description: 'ID of the entity that owns the file (task, content, form, etc.). Use the _id field from a preceding Keephub node output.',
|
|
53
|
+
placeholder: 'e.g. 699974e8f6c386b2e3e93cbc',
|
|
54
|
+
},
|
|
55
|
+
// ββ Storage ID βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
56
|
+
{
|
|
57
|
+
displayName: 'Storage ID',
|
|
58
|
+
name: 'storageId',
|
|
59
|
+
type: 'string',
|
|
60
|
+
required: true,
|
|
61
|
+
displayOptions: { show: { resource: ['storage'], operation: ['getSignedUrl'] } },
|
|
62
|
+
default: '',
|
|
63
|
+
description: 'S3 storage path of the file. For upload form answers, use the value.value field of the matching answer entry.',
|
|
64
|
+
placeholder: 'e.g. live/image/dev/contents/abc123/photo.jpg',
|
|
65
|
+
},
|
|
66
|
+
// ββ Force Download (optional) ββββββββββββββββββββββββββββββββββββββββββββ
|
|
67
|
+
{
|
|
68
|
+
displayName: 'Force Download',
|
|
69
|
+
name: 'attachment',
|
|
70
|
+
type: 'boolean',
|
|
71
|
+
displayOptions: { show: { resource: ['storage'], operation: ['getSignedUrl'] } },
|
|
72
|
+
default: false,
|
|
73
|
+
description: 'Whether to set Content-Disposition to attachment, forcing a file download instead of inline display in the browser',
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
//# sourceMappingURL=StorageDescription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageDescription.js","sourceRoot":"","sources":["../../../../nodes/Keephub/descriptions/StorageDescription.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAsB;IAC/C;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;QACnD,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,cAAc;gBACrB,WAAW,EAAE,8DAA8D;gBAC3E,MAAM,EAAE,oCAAoC;aAC5C;SACD;QACD,OAAO,EAAE,cAAc;KACvB;IAED,2EAA2E;IAC3E;QACC,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE;QAChF,OAAO,EAAE;YACR,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,mBAAmB,EAAE;YAC1D,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,2BAA2B,EAAE;YAC3E,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE;YAChD,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,oBAAoB,EAAE;YAC5D,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,sBAAsB,EAAE;YACjE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;YACvD,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,kBAAkB,EAAE;YACxD,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,gBAAgB,EAAE;YACpD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE;YACrD,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,wBAAwB,EAAE;YACpE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,mBAAmB,EAAE;SAC1D;QACD,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,uFAAuF;KACpG;IAED,4EAA4E;IAC5E;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE;QAChF,OAAO,EAAE,EAAE;QACX,WAAW,EACV,0HAA0H;QAC3H,WAAW,EAAE,+BAA+B;KAC5C;IAED,4EAA4E;IAC5E;QACC,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE;QAChF,OAAO,EAAE,EAAE;QACX,WAAW,EACV,+GAA+G;QAChH,WAAW,EAAE,+CAA+C;KAC5D;IAED,4EAA4E;IAC5E;QACC,WAAW,EAAE,gBAAgB;QAC7B,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,SAAS;QACf,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE;QAChF,OAAO,EAAE,KAAK;QACd,WAAW,EACV,oHAAoH;KACrH;CACD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-keephub",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Keephub integration node for n8n workflow automation",
|
|
5
5
|
"longDescription": "Keephub is your AI-powered frontline employee platform. Connect teams across communication, scheduling, HR admin, tasks, and auditsβall from one hub. With n8n, automate workflows that sync schedules, trigger HR actions, coordinate communications, and manage tasks across your entire tech stack.",
|
|
6
6
|
"license": "MIT",
|